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 變數的對撞機。