Вторник, 05 Ноября 2024, 17:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Урон при столкновении
hmprДата: Вторник, 30 Декабря 2014, 14:30 | Сообщение # 1
частый гость
Сейчас нет на сайте
Научите, как сделать так, чтобы при столкновении с врагом урон гг получал только 1 раз (в момент столкновения), а не каждый шаг всего времени контакта гг и врага. Повторный урон гг должен получать после повторного столкновения. А то что-то у меня ни фига не получается.
kukinillo777Дата: Вторник, 30 Декабря 2014, 15:18 | Сообщение # 2
частый гость
Сейчас нет на сайте
Дело в том, что за 1/30 секунды при условии, если игрок прикасается к врагу, у него отнимается n жизней. Чтобы это исправить, можно изменить количество урона и поставить врагу твердость, а игроку при столкновении с врагом отталкивание.

Но если ты не ищешь легких путей, а также хоть немножко владеешь GML, то куда радикальнее будет создать некий промежуток времени во время которого враг не сможет нанести урон.

Для этого пишем в Create:

Код
mister_potato=false;


В событии столкновения:

Код
if mister_potato=false {  

mister_potato=true;  
health-=20;  
vspeed=-vspeed;  
alarm[1]=30;  

}


И в событии Alarm 1:

Код
mister_potato=false;


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
участник
Сейчас нет на сайте
Я не уверен, но можно попытаться так:

Создание:
Код
collision=false

Столкновение:
Код
if !collision{
//действие при столкновении
collision=true
}

Шаг:
Код
if distance_to_object(враг)>32{ //вместо 32 любое число, в зависимости от размера спрайтов в игре и их центровки
collision=false
}


  • Страница 1 из 1
  • 1
Поиск:

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