切換
舊版
前往
大廳
主題

Unity 程式功能(1) - 接地判斷

三角形 | 2020-04-16 13:18:42 | 巴幣 2 | 人氣 381

這些程式可以應付一些事件
像是你想要讓你的角色只能在地面上跳躍

前置動作:
1. 建立 bottom 的遊戲物件,表示玩家底部的位置
2. 新增用來表示地面的 layer,讓程式判斷什麼是地面物件
3. 將"地面"的遊戲物件增加碰撞箱,讓程式能夠以碰撞判斷是否接觸地面

程式碼:
private bool isGrounded; // 判斷是否接觸地面
public Transform bottom; // 表示玩家底部位置
private float checkRadius = .02f; // 偵測地面範圍
public LayerMask groundLayer; // 表示地面標籤

// 檢查是否有接觸地面的過程,並且更新在 isGrounded 參數中
// 需要放在 Update 裡面隨時更新,或是
void GroundCheck(){
  isGrounded = false; // 初始化 isGrounded 參數
  Collider2D[] colliders = // 取得在底部偵測到範圍內的所有表示 "地面" 遊戲物件
    Physics2D.OverlapCircleAll(bottom.position, checkRadius, groundLayer);
  for (int i = 0; i < colliders.Length; i++) {
  // 取得所有偵測到的遊戲物件
  // 如果偵測到的物件並非自己本身,則表示接觸地面
  // 如果沒有,則表示沒有接觸到地面
  if (colliders[i].gameObject != gameObject) { isGrounded = true; }
}
}

創作回應

更多創作