跟諸子學游戲 Unity3d小技巧(雜項)

1:C#? https://www.nuget.org/ 第三方庫 上面查找常用的類庫,如json解析庫litjson /Newtonsoft.Json? ?單元測試框架NUint? ?對象關系映射器Entity Framework(數據庫方面相關)??Log4net日志信息相關.

2:unity3d編輯器:所有的圖像在wireframe情況下,都是三角形展示,正方體8個頂點12個三角形,圓形有很多個三角形組成,游戲里面看到的都是由點和三角形組成.前面是自建3D物體使用到的原理,例子:使用meshfilter繪制自身的網格獲取meshfilter網格屬性mesh,組織多面體頂點,將mesh的vertices頂點屬性賦值,然后將這些值,按照三角形triangles的規(guī)則進行繪制.

3:有限狀態(tài)機??http://www.reibang.com/p/8ff1da8f741c

4:解惑:1:如何讓一個button的方法在unity編輯器里面動態(tài)顯示綁定到上一個場景的物體腳本上面的方法,答案是無解,必須要使用腳本動態(tài)綁定.2:unity從分線程調用到主線程使用loom(百度搜下,別人已經封裝好)腳本,unity沒有多線程概念,C#有這個概念,unity使用的C#的多線程概念,可以在游戲里面使用多線程.3:場景一旦轉換過后,上一個場景就會被銷毀,連帶腳本,腳本上面的引用,都會有GC垃圾回收器管理.

5:unity3d中Layer用32位表示0000 0000 0000 0000 0000 0000 0000 0000?

第九層就表示成

0000 0000 0000 0000 0000 0010 0000 0000

1<<9 表示向左移動9位

6:在一個字段上面寫特性[Range(0,6)] 則會出現如下

效果

7:讓一物體跟隨鼠標的箭頭移動而轉向,例如:主角的朝向,坦克的炮管朝向等,然后只需要讓角色超前(transform.forward)走即可

第一種方法:

????????在update方法中

????????Plane playerPlane = new Plane(Vector3.up, transform.position);

? ? ? ? Ray RayCast = Camera.main.ScreenPointToRay(Input.mousePosition);

? ? ? ? float HitDist = 0;

? ? ? ? if (playerPlane.Raycast(RayCast, out HitDist))

? ? ? ? {

? ? ? ? ? ? Vector3 RayHitPoint = RayCast.GetPoint(HitDist);

? ? ? ? ? ? Quaternion targetRotation = Quaternion.LookRotation(RayHitPoint - transform.position);

? ? ? ? ? ? Turret.transform.rotation = Quaternion.Slerp(Turret.transform.rotation, targetRotation, Time.deltaTime * turretRotSpeed);

? ? ? ? }

第二種方法:

????????????Ray ray =Camera.main.ScreenPointToRay(Input.mousePosition);

? ? ? ? ? ? RaycastHit hitInfo;

? ? ? ? ? ? bool isCollider = Physics.Raycast(ray, out hitInfo);

????????????if (isCollider && hitInfo.collider.tag == Tags.ground) {

????????????????????targetPosition = new Vector3(hitInfo.point.x, transform.position.y, hitInfo.point.z);

? ? ? ????????????? this.transform.LookAt(targetPosition);

? ? ? ? ? ? ? }

第一種方法比第二種要好.

8:讓攝像機跟隨主角移動:創(chuàng)建一個腳本,掛載到攝像機上面.


照抄即可

/// /// 主角對象

? ? /// public Transform cubeT;? ? ///? ? /// 攝像機相對于主角的位置,唯一,獲取一次即可

? ? /// private Vector3 relativePos;? ? void Start()? ? {? ? ? ? relativePos = this.transform.position;? ? }? ? void Update()? ? {? ? ? ? ///主角的移動后的位置,加上相對位置,表示攝像機最終需要到達的位置? ? ? ? Vector3 newV3 = cubeT.transform.position + relativePos;? ? ? ? transform.position = Vector3.Lerp(transform.position, newV3, 2.0f * Time.deltaTime);? ? ? ? ///相對平穩(wěn)滑動到照射主角的角度.? ? ? ? Quaternion cubeQ = Quaternion.LookRotation(cubeT.transform.position - transform.position);? ? ? ? transform.rotation = Quaternion.Slerp(transform.rotation, cubeQ, 2.0f * Time.deltaTime);? ? }

9:C#中使用protobuf進行數據傳輸 https://github.com/mgravell/protobuf-net? 從上面下載項目然后進行學習,在項目里面加入protobuf是通過VS NuGet包管理器加入,https://www.nuget.org/packages/protobuf-net NuGet包地址下載完畢之后會有protobuf-net.dll 這個文件,將其放入unity3d中,既可以使用.

10:當你設置gamemanager為DontDestroyOnLoad時,從當前場景進入下一個場景,再返回回來會產生2次加載,解決方法是游戲開始時加載一個整個游戲期間只加載一次的場景,永遠不退回次場景.

gamemanager被多次加載

11:當在lambda表達式中使用任何局部變量時仍秤,C#會生成一個類谤职,并將該變量作為該類的一個屬性携御,但是我們無須定義該類请祖,C#編譯器會自動幫我們實現;

12:使用剛體組件時需要注意:1.parenting:父子級:當一個游戲對象受物理系統(tǒng)控制時 ,它會以半獨立的方式隨著父對象的位移而移動 ,如果任何父對象有所運動的話 ,這些父對象會推著子對象的剛體跟隨它們一起運動例嘱。不過這些剛體由于受重力影晌的原因還是會下落而且對于碰撞事件也是會有所晌應的蒋得。2. scripting:? 腳本:可通過在游戲對象的剛體上添加AddForce()和AddToque()函 數 ,達到通過腳本來添加作用力或扭矩力 ,來對剛體進行控制 。要注意的是 ,在使用物理系統(tǒng)時,不直接改變對象的Transform組件的屬性 ;3.Animation:動 畫:有些情況下 ,如需要創(chuàng)建布娃娃效果的時候 ,需要在動畫和物理系統(tǒng)間切換對象的控制權 颠锉。因此當剛體被標記為動力學模式時 ,就不會受到如碰撞法牲、作用力或其他物理效果的影晌 ,這就意昧著需要直接操作該對象的Transform組件屬性來控制該對象了。動力學剛體會影晌其他的對象 ,但其自身并不受到物理系統(tǒng)的影響琼掠。例如 ,那些綁定到動力學對象上的關節(jié)會約束其他綁定到該對象上的剛體 ,動力學剛體在碰撞時會影晌其他的剛體 拒垃。

13:當一個物體是否在另一個物體的視野范圍內,也就是人眼向前看一個扇形,需要判斷角度和距離,角度是 扇形角度/2 ,當其他物體與當前物體的夾角大于這個結果,則不再視野范圍內,如果小于這個結果,則在這個視野范圍內,

if( Vector3.Distance(playerTransform.position,transform.position)<=viewDistance)//距離

{ Vector3 playerDir = playerTransform.position - transform.position;

? ? ? float angle = Vector3.Angle(playerDir, transform.forward);

? ?if (angle <= viewAngle / 2)//夾角是否小于 視野范圍扇形角度的一半

{Debug.Log("InSight"); } }

14:




(ps:待后續(xù))

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瓷蛙,隨后出現的幾起案子悼瓮,更是在濱河造成了極大的恐慌,老刑警劉巖艰猬,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件横堡,死亡現場離奇詭異,居然都是意外死亡姥宝,警方通過查閱死者的電腦和手機翅萤,發(fā)現死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人套么,你說我怎么就攤上這事培己。” “怎么了胚泌?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵省咨,是天一觀的道長。 經常有香客問我玷室,道長零蓉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任穷缤,我火速辦了婚禮敌蜂,結果婚禮上,老公的妹妹穿的比我還像新娘津肛。我一直安慰自己章喉,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布身坐。 她就那樣靜靜地躺著秸脱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪部蛇。 梳的紋絲不亂的頭發(fā)上摊唇,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音涯鲁,去河邊找鬼巷查。 笑死,一個胖子當著我的面吹牛抹腿,可吹牛的內容都是我干的吮便。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼幢踏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了许师?” 一聲冷哼從身側響起房蝉,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎微渠,沒想到半個月后搭幻,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡逞盆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年檀蹋,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片云芦。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡俯逾,死狀恐怖贸桶,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情桌肴,我是刑警寧澤皇筛,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站坠七,受9級特大地震影響水醋,放射性物質發(fā)生泄漏。R本人自食惡果不足惜彪置,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一拄踪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拳魁,春花似錦惶桐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卦尊,卻和暖如春叛拷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岂却。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工忿薇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躏哩。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓署浩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扫尺。 傳聞我的和親對象是個殘疾皇子筋栋,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容