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 变量的对撞机。