"урона", при столкновени этих объектов - урон собственно отнимет жизнь. Но вопрос: как получить данные урона объекта с которым мы столкнулись? Потому что у меня сейчас вот так:
1 объект - 10 урона
2 обект - 5 урона
При столкновении-
1 объект - наносит свой же урон себе вместо вражеского, а именно 10 ( вместо 5)
2 обект - аналогично наносит себе урон в 5, вместо 10
Какой код нанесения урона у них?
Скрипт этот у обоих объектов: public float damage; private void OnTriggerEnter2D(Collider2D collision) { ProcessCollision(collision.gameObject); } private void OnCollisionEnter2D(Collision2D collision) { ProcessCollision(collision.gameObject); } void ProcessCollision(GameObject collider) { if (collider.CompareTag("Warrior")) { applyDamage(damage); } } // Update is called once per frame void applyDamage(float damage) { currentHp -= damage; Debug.Log("Damage!"); }
Ну так получается что ты сам у себя отнимаешь здоровье
Ну да, вот я и спрашиваю как данные брать объекта с которым столкнулся
Вот именно урон объекта с которым столкнулся, и его уже отнимать от хп
currentHp - должен быть заменён на currentHp того объекта. Взять компонент и выполнить метод. Например создать метод TakeDamage (int _damage) и передавать дэмдж через него в коллизии где коллайдер проверяется по тегу collider. GetComponent<этот скрипт на враге>().TakeDamage(damage)
ApplyDamage просто запускай при коллизии через геткомпонент того объекта с кем столкнулся
А как брать ту же переменную ХП объекта с которым столкнулся? Там такая же переменная как и в уроне, я её просто забыл в кусок куда написать. И скрипт этот висит на обоих объектах, и у каждого объекта свой урон и хп
Просто запускай ApplyDamage (damage) на том объекте с которым столкнулся : вот где у тебя проверка по тегу, перед аплидэмэдж допиши collider.GetComponent<имя скрипта>(). ApplyDamage(damage);
Да, и метод на публичный измени иначе его не видно будет
Отлично
collider хранит информацию об объекте с которым столкнулся?
Он её не хранит, но ты столкнул два объекта. У каждого объекта есть метод вычитания здоровья исходя из урона. Ты просто указываешь что коллайдер который столкнулся с твоим объектом должен получить урон от твоего объекта. И ты передаешь свой урон в ApplyDamage (damage) но выполнятся он должен на том объекте, который столкнулся. Для этого ты и берёшь этот компонент именно на том коллайдере.
Обсуждают сегодня