Physics2D.OverlapBox始终返回true

时间:2019-03-13 20:15:26

标签: c# unity3d game-physics

我正在对系统进行编码,以检查玩家是否在敌人旁边的某个区域中。我决定使用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);
}

1 个答案:

答案 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也会检测到它的碰撞。