Суббота, 30 Ноября 2024, 19:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Создание задержки триггера
IgorfjvДата: Понедельник, 12 Июня 2017, 14:58 | Сообщение # 1
был не раз
Сейчас нет на сайте
Доброе время суток! Извеняюсь, что криво объясняю.
Игра жанра beat `em all, анимация атака кулаком.
На кулаке висит капсул коллайдер, на противнике триггер.

Код на враге:

OnTriggerEnter(Collider other){
if (other.tag == "Kulak_Playera"){
GetHit(10);
}
}

void GetHit(int damage){
health -= damage;
_animator.SetTrigger("Gethit");
}

Проблема1: Как сделать так что бы не было ложных срабатываний - коллайдеры уменьшил до минимума хоть бы хны.
Проблема2: При атаке "снимает" не 10, как надо, а 20-100 ХП.

Чую что дело в том что коллайдер лишний раз заходит в зону триггера. Нужна задержка срабатывания.
Посоветуйте что делать, пожалуйста. Заранее благодарен.
TLTДата: Вторник, 13 Июня 2017, 16:44 | Сообщение # 2
Сейчас нет на сайте
Основы программирования. Нужно значительно усложнить механизм, в том числе и срабатывание коллизий. Слишком много ожидаете от такого простого кода.

Дао, выраженное словами, не есть истинное Дао.
IgorfjvДата: Вторник, 13 Июня 2017, 21:34 | Сообщение # 3
был не раз
Сейчас нет на сайте
Решил. Помогли:) Пока так. Булева переменная в одиночку не справилась. Late и FixedUpdate не помогли. Решил через курутины.

OnTriggerEnter(Collider other){
if (other.tag == "Kulak_Playera" && !isHit){
isHit = true;
GetHit(10);
}
}

void GetHit(int damage){
health -= damage;
_animator.SetTrigger("Gethit");
StartCourutine(Sbros());
}

IEnumerator Sbros(){
yield return new WaitForSecondsRealtime(2f);
isHit = false;
}


Сообщение отредактировал Igorfjv - Среда, 14 Июня 2017, 12:48
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг