BaLahmuT
@BaLahmuT

Как сделать нанесение урона сверху, справа, слева в 2D игре?

Враг убивается если на него прыгнуть сверху, изначально проблема заключалась в том что урон при прыжке наносился и врагу и игроку, исправил, но теперь другая проблема, когда враг движется с левой стороны то урон не наносится, а если с правой наносится (2 сердечка). что нужно чтоб и с правой стороны урон проходил
Вот скрипт получения урона, закреплен за врагом и игроком:
public class CollisionDamage : MonoBehaviour
{
    public int damage = 10;
    public string collisionTag;

    GameObject enemy;
    GameObject player;

    private void OnCollisionEnter2D(Collision2D coll)
    {
        Health healthE = enemy.GetComponent<Health>();
        Health healthP = player.GetComponent<Health>();

        if (coll.gameObject.CompareTag(collisionTag)) //tag enemy
        {
            foreach (ContactPoint2D point2D in coll.contacts)
            {
                if (point2D.normal.y >= 0.5f)
                {
                    //Destroy(enemy.gameObject);                    
                    healthE.takeDamage(damage);
                }
                if (point2D.normal.x >= 0.5f)
                {
                    healthP.takeDamage(damage);
                }
            }
        }
    }

    private void Start()
    {
        enemy = GameObject.FindWithTag("Enemy");
        player = GameObject.FindWithTag("Player");  //GameObject.FindGameObjectWithTag("Player");
    }
}

Согласен, возможно не совсем правильно делаю, но как быть в этой ситуации? проблема возникает когда враг меняет сторону (flipX)?
618305b018850639218848.png
  • Вопрос задан
  • 485 просмотров
Пригласить эксперта
Ответы на вопрос 1
@WaterSmith
Android-разработчик. Java, Kotlin
if (point2D.normal.x >= 0.5f)
                {
                    healthP.takeDamage(damage);
                }


Подозреваю, что при столкновении слева, point2D.normal.x меньше 0.5
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы