Unity3D 之 坦克大戰 一

2021-09-09 08:34:55 字數 2099 閱讀 4983

坦克大戰學習筆記

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,過程就不說了,言歸正傳,開始我們的學習吧 我們想要完成球體自由落體後撞擊倒桌面 如圖 一般我們給球體乙個剛體屬性,球體自由下落 但我們會發...