Collider2D.OnTriggerEnter2D не стреляет - PullRequest
2 голосов
/ 16 мая 2019

Я назначил своему врагу снаряд, который стреляет в игрока, и у этого снаряда есть collider2d, который я пометил как триггер. И это, кажется, не распознает мой игрок коллайдер. Снаряд только проходит через моего игрока.

void OnTriggerEnter2d (Collider2D other)
{
    Player _player = other.GetComponent<Player>();

    if (_player != null)
        _player.ChangeHealth(1);

    Destroy(gameObject);
}

Компоненты моего игрока:

enter image description here

Ответы [ 3 ]

1 голос
/ 16 мая 2019

В названии вашего метода есть небольшая опечатка. Буква «d» в «2d» должна быть написана заглавными буквами.

onTriggerEnter2d ---> onTriggerEnter2D

void OnTriggerEnter2D (Collider2D other)
{
    Player _player = other.GetComponent<Player>();

    if (_player != null)
        _player.ChangeHealth(1);

    Destroy(gameObject);
}
0 голосов
/ 16 мая 2019

Я бы изменил ваш код в OnTriggerEnter2D на это:

void OnTriggerEnter2D (Collider2D other)
{
    // In your scene you have just two objects, so not really required now
    // may be interesting for you when you have more objects there
    if(other.gameObject.CompareTag("Player"))
    {
        //Here add .gameObject to refer the GameObject which contains the collider2D
        Player _player = other.gameObject.GetComponent<Player>();

        if (_player != null)
            _player.ChangeHealth(1);

        Destroy(gameObject);
    }
}

Кроме того.Вы добавили изображение компонентов в GameObject Player.Добавьте то же самое для Пули или, по крайней мере, проверьте следующие две вещи:

  • Пуля также находится в положении Z = 0
  • Пуля имеет коллайдер2D с isTrigger особенность как true (проверено), для обнаружения игрока.
0 голосов
/ 16 мая 2019

Не видя ваш код, я сделаю предположение, что к вашему объекту 'player' не прикреплено Rigidbody2D.

Я настоятельно рекомендую вам прочитать документы о коллайдерах и о том, как они взаимодействуют друг с другом, но в качестве очень краткого резюме; Для того чтобы между двумя объектами происходили столкновения, по крайней мере, один из них должен иметь прикрепленные к ним Rigidbody или Rigidbody2D.

Прикрепите компонент Rigidbody2D к своему плееру (вы можете пометить его как кинематический, чтобы столкновения не влияли на его положение / вращение и т. Д.), И тогда он должен работать так, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...