Урон при столкновении
|
|
hmpr | Дата: Вторник, 30 Декабря 2014, 14:30 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Научите, как сделать так, чтобы при столкновении с врагом урон гг получал только 1 раз (в момент столкновения), а не каждый шаг всего времени контакта гг и врага. Повторный урон гг должен получать после повторного столкновения. А то что-то у меня ни фига не получается.
|
|
| |
kukinillo777 | Дата: Вторник, 30 Декабря 2014, 15:18 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Дело в том, что за 1/30 секунды при условии, если игрок прикасается к врагу, у него отнимается n жизней. Чтобы это исправить, можно изменить количество урона и поставить врагу твердость, а игроку при столкновении с врагом отталкивание.
Но если ты не ищешь легких путей, а также хоть немножко владеешь GML, то куда радикальнее будет создать некий промежуток времени во время которого враг не сможет нанести урон.
Для этого пишем в Create:
В событии столкновения:
Код if mister_potato=false {
mister_potato=true; health-=20; vspeed=-vspeed; alarm[1]=30;
}
И в событии Alarm 1:
P.S. Рекомендую вместо переменной health использовать hp, просто health глобальная переменная. P.S.S. Проверял на арканоиде, тебе может не помочь.
Все свои желания можно воплотить в своей игре, если руки из нужного места растут. А если и мозга работает, то и в реальности все сделаешь :)
|
|
| |
HiNuTo | Дата: Вторник, 30 Декабря 2014, 15:27 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| hmpr, за 2-3 шага подобную конструкцию осуществить легко. В создание: Код collisions=true//Столкновений нет В столкновение: Код alarm[0]=room_speed//Через секунду произойдет действие collisions=false//Столкновение есть В аларм: Код collision=true//Столкновений нет В столкновение: Код if collisions=false //{Все действия, какие нужны}
Повторное столкновение будет проходить через секунду, так что по возможности отбрасывайте объекты друг от друга.Добавлено (30 декабря 2014, 15:27) --------------------------------------------- kukinillo777, alarm[1]=room_speed, если ты хочешь делать все посекундно. Так как 30 - не постоянная скорость комнаты и ее значение можно при желании сменить.
И даже если без тебя я слаб, Сейчас для меня будто оргазм состояние зла.
|
|
| |
kukinillo777 | Дата: Вторник, 30 Декабря 2014, 15:29 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| HiNuTo, не, я ему в качестве примера привел. А уж как делать это решать естественно ему.
Все свои желания можно воплотить в своей игре, если руки из нужного места растут. А если и мозга работает, то и в реальности все сделаешь :)
|
|
| |
LunarPixel | Дата: Вторник, 30 Декабря 2014, 16:23 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| hmpr, как вариант, в событии столкновения:
Код if alarm[0]=-1 { hp-=1; } alarm[0]=1;
И в alarm 0 можно просто поставить пустой комментарий //
|
|
| |
aFriend | Дата: Среда, 31 Декабря 2014, 08:39 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Заносить id всех инстансов, которым нанесен урон в массив и при столкновении проверять есть ли в массиве этот инстанс
Сообщение отредактировал aFriend - Среда, 31 Декабря 2014, 08:39 |
|
| |
AyzenHard | Дата: Пятница, 02 Января 2015, 20:25 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| проверять скорость в момент столкновения, например: если скорость выше 20, то убавить сколько-то хп(например 20), если скорость 30, то 30, и т.д. еще можно добавить соотношение масс, у кого больше масса, тот заберет больше хп
как реализовать не знаю(сам только изучаю GM)
hэhэээй
|
|
| |
karambaman | Дата: Суббота, 03 Января 2015, 00:50 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Я не уверен, но можно попытаться так:
Создание: Столкновение: Код if !collision{ //действие при столкновении collision=true } Шаг: Код if distance_to_object(враг)>32{ //вместо 32 любое число, в зависимости от размера спрайтов в игре и их центровки collision=false }
|
|
| |