坦克大戰學習筆記
1. 工程建立、素材匯入;
2. 遊戲中預製體的製作(環境預製體和動畫預製體)
<1> 環境預製體制作:
遊戲物體player;
牆體wall;
障礙物obstacle;
水流river;
小草gress;
老窩family;
<2> 動畫預製體:
坦克本身自帶出場效果shild;
坦克發射子彈效果born;
坦克**效果explosion;
3. 控制遊戲中player的移動
<1> 獲取水平和垂直方向上的變化;
float h = input.getaxis("horizontal"); // 水平方向 返回值為1或-1
float v = input.getaxis(""vertical); // 垂直方向
<2> 給遊戲物體新增水平和垂直方向上的速度;
public float speed = 10.0f;
tansform.translate(vector3.right * h * speed * time.deltatime);// 水平
tansform.translate(vector3.up * v * speed *time.deltatime);// 垂直
4. 控制遊戲在左右移動過程中,坦克(方向)切換
<1> 通過控制切換來控制坦克的方向移動;
a. 首先建立spriterenderer的物件sr;
private spriterenderer sr;
b. 然後通過sr來獲取spriterenderer的引用;
sr = getcomponent();
c. 其次定義坦克需要切換的陣列;
public sprite tanksprite;
d. 將所需要的拖入tank sprite中;
e. 通過判斷h/v的是否大於0來判斷選用那張。
if(h > 0)
else if(h < 0)
<2> 通過控制z軸的方向來控制坦克的方位旋轉。
5. 碰撞器的新增
發生碰撞的條件:
發生碰撞的兩個物體,身上必須有碰撞器,其中一方身上必須要有剛體,並且要是能運動的。
碰撞器分類:2d碰撞器和3d碰撞器
<1> 給player和環境預製體(除gress外)新增box collider 2d碰撞器;
<2> 給player新增剛體rigidbody 2d;
<3> 設定player遊戲物件身上的constraints的z軸的旋轉,防止發生旋轉。
解決抖動問題:
c產生都抖動的問題
player本身新增了剛體,發生碰撞後,物體之間會產生作用力,放在在update下的話每幀的作用力是不同的,所以需要將update的處理放置在fixedupdate()函式中處理。
private void fixedupdate()
else if(h < 0)
float v = input.getaxisraw("vertical");
transform.translate(vector3.up * v * movespeed * time.fixeddeltatime, space.world);
if (v > 0)
else if (v < 0)
}
6. 移動優先順序的新增,2d渲染層級問題
<1> 問題:玩家同時按住兩個鍵的時候,player會斜著走,如何處理該問題?
if(v!=0) return;
<2> 2d渲染層級問題
player層級設定:
sorting layer 新增層級(大層級)
order in layer (小層級) 值越大越後渲染
Unity 3D 坦克大戰遊戲收穫
功能很多的指令碼 通常情況下不能適應特殊情況 最好是乙個指令碼只做一件事情 這樣復用率會很高 乙個指令碼寫完以後很多地方都可以用 比如說 移動的指令碼 movement.cs 只處理監聽鍵盤按鍵 和 對應的移動處理 攻擊指令碼 attack 只處理攻擊 遊戲中 坦克的血量顯示就是用的ugui中的 s...
Unity3D開發(九) Unity3d流光效果
遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...
Unity3D學習之剛體
前言 以前從未接觸過unity,今天接觸了unity,對自己的一些疑點做了一下總結,之所以接觸unity,是因為在畢業快實習的時候通過朋友介紹,認識了unity,過程就不說了,言歸正傳,開始我們的學習吧 我們想要完成球體自由落體後撞擊倒桌面 如圖 一般我們給球體乙個剛體屬性,球體自由下落 但我們會發...