Physics2D Raycast2D

你可以使用光線投射來檢查 ai 是否可以在不脫離關卡邊緣的情況下行走。

using UnityEngine;
    
public class Physics2dRaycast: MonoBehaviour 
    {
        public LayerMask LineOfSightMask;
        void FixedUpdate() 
        {
            RaycastHit2D hit = Physics2D.Raycast(raycastRightPart, Vector2.down, 0.6f * heightCharacter, LineOfSightMask);
            if(hit.collider != null)
            {
                //code when the ai can walk
            }
            else
            {
                //code when the ai cannot walk
            }
    }
}

在這個例子中,方向是正確的。變數 raycastRightPart 是角色的右側部分,因此光線投射將發生在角色的右側部分。該距離是角色高度的 0.6f 倍,因此當他擊中的地面低於他現在站立的地面時,光線投射不會受到打擊。確保 Layermask 僅設定為 ground,否則它也會檢測其他型別的物件。

RaycastHit2D 本身是一個結構,而不是一個類,所以命中不能為 null; 這意味著你必須檢查 RaycastHit2D 變數的對撞機。