Коллайдер не сработает, если мой игрок не движется в 2D - PullRequest
2 голосов
/ 31 марта 2020

ИГРОК = Мальчик-ниндзя ВРАГ = Девушка-ниндзя

У меня есть два игровых объекта, один - враг, а другой - игрок, имеющий коллайдеры2D и Hardbody2D. Я сделал сценарий для вражеской погони, когда я его вижу (я сделал для этого boxcollider2d) и когда он достаточно близко, он начинает атаку. Чтобы обнаружить столкновение между его мечом и мной, я сделал краевой коллайдер, который он включает, когда начинает атаковать, и отключает, когда анимация атаки завершена
here is the enemy with the sword collider

Проблема в том, что когда я не двигаюсь, функция игрока OnEnterTrigger2D не обнаруживает столкновение, если я нахожусь в этой позиции (игрок явно находится внутри коллайдера) enter image description here

Это класс игрока

    public override IEnumerator TakeDamage()
    {
        if (!immortal && !IsDead) 
        {
            health -= 10;
            Animator.SetLayerWeight(1, 0);

            if (!IsDead)
            {
                Animator.SetTrigger("damage");
                Rigidbody.velocity = Vector2.zero;
                immortal = true;
                yield return new WaitForSeconds(immortalTimer);
                immortal = false;
            }
        }

        if(IsDead)
        {
            Animator.SetTrigger("dead");
        }
    }

    protected override void OnTriggerEnter2D(Collider2D collider)
    {
        Debug.Log(collider.name);
        base.OnTriggerEnter2D(collider);
    }

и игрок наследует от персонажа

public abstract IEnumerator TakeDamage();

  protected virtual void OnTriggerEnter2D(Collider2D collider)
    {
        if (damagingObjects.Contains(collider.tag))
        {
            StartCoroutine(TakeDamage());
        }
    }

, и я заметил, что если вручную активировать триггер врага во время игры, игрок получит урон, даже если он не перемещение

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