我正在对系统进行编码,以检查玩家是否在敌人旁边的某个区域中。我决定使用Physics2D.OverlapBox
,但是当我对其进行测试时,无论如何,它总是返回true。
代码如下:
public bool isNear = false;
private Vector2 nearRadius;
public float nearRadiusLength;
public LayerMask playerLayer;
void FixedUpdate()
{
isNear = Physics2D.OverlapBox(transform.position, nearRadius,playerLayer);
}
答案 0 :(得分:1)
正如史蒂夫(Steve)在评论中所述,您正在函数中使用变量nearRadius,但这是一个私有变量,并且未设置其值。尝试使其public
并在检查器中设置其值。
还请看一下Physics2D.OverlapBox文档,参数 angle 似乎不是可选的。
例如,您可以在方法调用中将角度设置为0:
public bool isNear = false;
public Vector2 nearRadius;
public LayerMask playerLayer;
void FixedUpdate()
{
isNear = Physics2D.OverlapBox(transform.position, nearRadius, 0f, playerLayer);
}
最后但并非最不重要的一点是,确保在定义的图层蒙版playerLayer
中没有未标记包含脚本的游戏对象的图层,否则请Physics2D.OverlapBox
也会检测到它的碰撞。