天天看點

Unity 從零開始做遊戲1. 場景搭建之瓦片地圖2. Layer 圖層關系3. 讓人物動起來4. 給人物添加動畫5. 跑動時bug 解決6.人物跟随相機7.物品收集8. bug 解決9. UI 顯示 收集資料10. 遊戲敵人的添加,添加敵人AI

1. 場景搭建之瓦片地圖

  1. create -> 2D object -> TileMap
  2. 這時場景視圖中會出現一個Grid/TileMap GameObject 點選TileMap 看到一堆網格,這就是我們需要作畫的位置了
  3. Window ->2D -> Tile palette 調出Tile palette 面闆,create new palette 然後将美工給的圖拖入到這個面闆中,就是我們刷場景用的素材了,将其中素材選中,用刷子在場景中刷出你喜歡的場景吧

2. Layer 圖層關系

  • 當你将background這個GameObject打開的時候,會發現background 出現在剛才制作的場景前面。這個時候就需要調整sorting layer 的層級關系。越是下面的層顯示在場景中就越靠前。
  • add layer 增加 background 和 frontground 兩個層級

3. 讓人物動起來

  • Project Settings -> input -> 檢視左右,或者上下移動的代号分别是什麼
Input.GetAxis("horizontal") 傳回值 -1~0~1 之間的數 
rb.velocity = new Vector2(horizontalFloat * speed * Time.deltaTime, rb.velocity.y); 剛體的移動
           
  • Update() 和 FixedUpdate() 差別

    Update() :按照幀率進行重新整理 比如fps=60 說明1秒鐘重新整理了60次

    FixedUpdate: 按照固定時間去重新整理這個函數 預設FixedTime = 0.02s

4. 給人物添加動畫

  1. 給人物 add 元件 Animator
  2. 建立人物的動畫檔案夾 Animation ,在檔案夾中添加Animator 拖拽指派給第一步中添加的元件Animator
  3. Window -> Animation 調出Animation 視窗 ,最重要一點,需要把滑鼠點選你的player GameObject建立新的Animator,如果單純的在檔案夾中create Animation 是添加不了任何圖檔的. 最後将美工給的幀圖檔拖拽到Animation 視窗 調整動畫速度.
  4. Window -> Animation 調出Animator 視窗
    Unity 從零開始做遊戲1. 場景搭建之瓦片地圖2. Layer 圖層關系3. 讓人物動起來4. 給人物添加動畫5. 跑動時bug 解決6.人物跟随相機7.物品收集8. bug 解決9. UI 顯示 收集資料10. 遊戲敵人的添加,添加敵人AI
  5. 各種狀态的切換是根據Parameters 的值來的。設定Parameters 的值是float 當 running 的速度大于0.1時,切換到跑步的狀态
  6. 狀态的切換
animator.SetBool("***",defeault value);
           
  1. 碰撞檢測+layerMask 人物的碰撞檢測 将地面的Layer 設定為ground 然後利用coll.isTouchingLayers(Layer) 判斷是否與地面碰撞

5. 跑動時bug 解決

原因是因為加的碰撞器是矩形邊框的collider ,然後地面也是矩形邊框的collider.是以模拟現實中的地面和人類行走關系,會有時候小石頭或者什麼阻礙物擋住真人。又因為Freeze Z軸被勾選,是以就會造成跑不動的假象。解決方法是将人物上半身用box collider 下半身就有一個circle Collider 。

6.人物跟随相機

  1. 使用插件cineMachine,packageManager 中搜尋cinemachine 并導入
  2. 設定Follow 為player
  3. 為cinemachine相機添加擴充 collider 為了不讓人物跳躍時超出一定的範圍

7.物品收集

  1. 添加櫻桃動畫(和第4步一樣,添加動畫)
  2. 設定物品的tag 為 Collection 根據碰撞體的Collider.tag 來判斷是否碰撞到了要被收集的物體上,如果碰撞到了就Destory掉這個GameObject

8. bug 解決

  1. 人物跳躍撞牆後不會掉落問題
  • 問題産生原因: 人物跳躍時候collider向右會有一個加速度,然後會産生摩擦力。
  • 問題解決方法:為人物建立一個材質,将材質的摩擦力設定為0
  1. 人物多段跳躍的問題
  • 解決方案1:人物隻要在空中,y軸方向就有一個速度,是以當y軸速度為0 的時候 才能跳躍
  • 解決方案2:跟之前變化下落狀态一樣,當人物接觸到地面的時候,變化為靜止狀态,這裡也可以用這個條件

9. UI 顯示 收集資料

使用UGUI 建立Text 數字在左上角,編寫腳本改變數字的數值

這部分沒什麼好記錄的,比較簡單

10. 遊戲敵人的添加,添加敵人AI

添加青蛙敵人AI,在青蛙左右兩邊分别加上一個gameobject 作為左右邊界點。讓青蛙隻能在這兩個object 中間來回移動。