這些程式可以應付一些事件
像是你想要讓你的角色只能在地面上跳躍
前置動作:
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; }
}
}