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