Проблема с обработкой направления метода .AddForce()
Я пытаюсь сделать отталкивание противников при ударе. У меня есть метод OnAttack()
, который является радиусом атаки, в нем я проверяю все коллайдеры на столкновение и наношу урон задетым противникам из собранного массива коллайдеров.
Но столкнулся с проблемой: у меня есть функция с .AddForce()
(последняя) и она срабатывала корректно, но только в одну сторону (из-за -transform). Тогда я сделал if конструкцию, которая считывает куда повернут противник (Slime.sprite.flipX
), чтобы в одном случае оставить функцию как есть, а в другом - изменить направление. Но это не работает. Так же я пытался переписать направление с помощью универсальной direction
, но это тоже не работает. Пытался в самой direction
изменить условия (через Hero.Instance, Slime.Instance, пробовал писать отдельный метод) - все из этого не работает.
Продолжает быть рабочим лишь colliders[i].GetComponent<Rigidbody2D>().AddForce(-transform.position * powerForce, ForceMode2D.Impulse);
, но в одну сторону.
Не мог бы кто-нибудь объяснить в чем проблема?
private void OnAttack()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(attackPos.position, attackRange, Enemy);
for (int i = 0; i < colliders.Length; i++)
{
colliders[i].GetComponent <Entity>().GetDamage(Damage);
Vector2 direction = attackPos.position - colliders[i].transform.position;
StartCoroutine(EnemyOnAttack(colliders[i]));
colliders[i].GetComponent<Rigidbody2D>().AddForce(-direction * powerForce, ForceMode2D.Impulse);
colliders[i].GetComponent<Rigidbody2D>().AddForce(-transform.position * powerForce, ForceMode2D.Impulse);
if (Slime.sprite.flipX == false)
{
Debug.Log("Не повернут");
Debug.Log("Толчок");
}
if (Slime.sprite.flipX == true)
{
Debug.Log("Повернут");
}
}
}