ИГРОК = Мальчик-ниндзя ВРАГ = Девушка-ниндзя
У меня есть два игровых объекта, один - враг, а другой - игрок, имеющий коллайдеры2D и Hardbody2D. Я сделал сценарий для вражеской погони, когда я его вижу (я сделал для этого boxcollider2d) и когда он достаточно близко, он начинает атаку. Чтобы обнаружить столкновение между его мечом и мной, я сделал краевой коллайдер, который он включает, когда начинает атаковать, и отключает, когда анимация атаки завершена
![here is the enemy with the sword collider](https://i.stack.imgur.com/bsdqy.png)
Проблема в том, что когда я не двигаюсь, функция игрока OnEnterTrigger2D не обнаруживает столкновение, если я нахожусь в этой позиции (игрок явно находится внутри коллайдера) ![enter image description here](https://i.stack.imgur.com/GBnPI.png)
Это класс игрока
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());
}
}
, и я заметил, что если вручную активировать триггер врага во время игры, игрок получит урон, даже если он не перемещение