Physics2D.OverlapBox всегда возвращает true - PullRequest
0 голосов
/ 13 марта 2019

Я кодирую систему, чтобы проверить, находится ли игрок в определенной области рядом с врагом.Я решил использовать 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 Ответ

1 голос
/ 14 марта 2019

Как сказал Стив в комментарии, вы используете переменную 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 также обнаружит столкновение с ним.

...