Страница 1 из 1

Получение урона при столкновении

СообщениеДобавлено: 09 мар 2014, 14:29
Expirian
Здравствуйте! Появилась такая проблема:
Допустим, что есть объект(rigidbody2d) и игрок способен его двигать. При столкновении с другими коллайдерами(стены, пол) игрок должен получить урон(минусуется переменная PlayerHP). Казалось бы, можно всё решить таким кодом:

Синтаксис:
Используется csharp
void OnCollisionStart2D(Collision2D collision){
 if(collision.relativeVelocity.magnitude > 6)//вычитаем такое-то значение
}
 


Однако если объект будет катиться по коллайдеру со скоростью больше 6, то он будет всё время получать урон. Оно и ясно: мы отнимаем хп при каждом столкновении(коих при "поездке" по коллайдеру будет множество). Хотелось бы узнать, как можно иначе раздавать урон, и при этом не отнимать хп, если объект катится/трется при падении или взлете об коллайдер.

Заранее благодарю за помощь!

Re: Получение урона при столкновении

СообщениеДобавлено: 09 мар 2014, 16:53
_Ignat_
Trigger, layuot, tag.

Re: Получение урона при столкновении

СообщениеДобавлено: 09 мар 2014, 17:37
Expirian
_Ignat_ писал(а):Trigger, layuot, tag.

Хотелось бы знать, какой layout вы имеете в виду. И чем могут помочь теги в данной ситуации?

Re: Получение урона при столкновении

СообщениеДобавлено: 09 мар 2014, 18:44
_Ignat_
Expirian писал(а):Хотелось бы узнать, как можно иначе раздавать урон, и при этом не отнимать хп, если объект катится/трется при падении или взлете об коллайдер.

Я ответил.
Теги помогают как раз в таких ситуациях, когда надо "отсеивание", а слои там же.

Re: Получение урона при столкновении

СообщениеДобавлено: 13 мар 2014, 11:55
Nexorion
Дабы не плодить темы, отпишу тут.
Имеем 2 машины("молот" и "наковальня" ), пол, стену. Ставим "наковальню" у стены боком, въезжаем в нее "молотом" на скорости около 60 км/ч.
По идее, больше всего урона должна получить "наковальня", т.к. ей удар пришелся с двух сторон. Как это обсчитается движком и как это задать правильно? Как понять, что удар пришелся в бок наковальни и в лоб молота?Может где эта тема уже поднималась, подскажите :)
Если можно, поделитесь примером скрипта)