Четверг, 25 Апреля 2024, 07:35

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Форум игроделов » Записи участника » Overdrave [47]
Результаты поиска
OverdraveДата: Среда, 12 Июня 2013, 14:37 | Сообщение # 41 | Тема: Как установить задержку между созданием объектов?
частый гость
Сейчас нет на сайте
Ранее, в другой теме, я уже писал, как использовать переменную-"блокер". Хорошо, напишу снова...

CREATE
Код

shot_lock=0 //объявление переменной-блокера
alarm_lock=0 //Переменная нужна лишь для второго способа


STEP
Код

if keyboard_check(vk_ctrl) and shot_lock=0 //Если нажата клавиша Ctrl и блокер выключен, т.е. равен нулю, то...
{
instance_create(o_ammo,x,y) //Создание пули, в самой пуле уже задавай направление движения. Пуля создаётся один раз.
shot_lock=1 //блочим
}


Разблокирование этой переменной двумя способами (вводить в тот же STEP):
1)При отпускании Ctrl
Код

if keyboard_check_released(vk_ctrl) and shot_lock=1 //когда отпускаем Ctrl, переменная снова становится равна нулю
shot_lock=0


2)Небольшой откат
Код
if shot_lock=1 and alarm_lock=0
{
alarm[0]=room_speed //откат равен 1 секунде. Можно ввести любое число в кол-ве шагов
alarm_lock=1
}
, а в Alarm 0 вбить
Код

shot_lock=0
alarm_lock=0


P.S: Мог напутать с названием Ctrl в коде (может быть, не vk_ctrl, а vk_control?..)
OverdraveДата: Вторник, 11 Июня 2013, 21:48 | Сообщение # 42 | Тема: Изменение переменной по нажатию
частый гость
Сейчас нет на сайте
В одном из примеров увидел интересный триггер, который выглядит как
Код
your_variable=1-your_variable

Однако надо также учитывать, что кнопка нажата не один шаг, т.е. действие выполняется несколько раз.
Я использую:
CREATE
Код
press_lock=0 //Объявляем переменную-"блокер".


STEP
Код
if press_lock=0 and keyboard_check(mb_left) //"Если переменная-"блокер" выключена (можно использовать "true" и "false"), т.е. равна нулю, а также нажата левая кнопка мыши, то..."
{
your_variable=1-your_variable //Нужное нам действие (выполнится ОДИН раз!)
press_lock=1 //"Включаем" переменную-"блокер"
}

if keyboard_check_released(mb_left) and press_lock=1 //Когда левая кнопка мыши "отжата", а переменная-"блокер" включена,..
press_lock=0 //вырубаем "блокер"


Может код и не удобный, но для понимания простой.
OverdraveДата: Воскресенье, 09 Июня 2013, 22:29 | Сообщение # 43 | Тема: Лазеры и зеркала
частый гость
Сейчас нет на сайте
Код события STEP объекта игрока:
Код

if instance_number(laser_turet)>0
{
if laser_turet.attack=1
{
if collision_line(laser_turet.x,laser_turet.y,laser_turet.xx,laser_turet.yy,id,0,0)
instance_destroy()
}
}


Думаю, где-то здесь собака то и зарыта.

А скриншот прилагается под спойлером.
OverdraveДата: Воскресенье, 09 Июня 2013, 21:22 | Сообщение # 44 | Тема: Лазеры и зеркала
частый гость
Сейчас нет на сайте
В игре на вооружении три системы лазеров:
1)Объекты-лазеры
Каждый лазер - объект 32х4. Есть стационарная лазерная туррель. Работает идеально, проста в реализации и установке, да и выглядит реалистично, вот только двигаться не может вообще.
2)"Лазеромёт"
Та же стационарная туррель, но в этот раз стреляет небольшими объектами, которые в целом выглядят как лазер. Из преимуществ, нужных мне - это отражение от зеркала. Однако тут тоже есть недостатки и весомые: после движения зеркала игроком сверху лазер "делится" - очевидно, слишком маленькая скорость комнаты. Также недавно увеличил скорость самого игрока, и проблема медлительности лазера стала более ощутимой - лазер не успевал "отлетать", поэтому убивал игрока.
3)Рисование лазера.
Есть туррель (внезапно), которая крепится в воздухе и направлена вниз. По форме круглая, "качается" примерно на 80 градусов вниз. Время от времени отключается. Работает так: находится координата столкновения со стеной. До неё рисуется линия. В событии игрока пишется код в стиле "Если пересеч линию х,хх,у,уу (т.е. линию, совпадающую с линией лазера), то игрок самоликвидируется". Всё работает прекрасно, пока в игру не вступает второй такой же лазер: работает лишь событие столкновение с линией первого такого лазера, т.е. Игрок умирает лишь от первого лазера.

На скриншоте все три вида систем.


Ну и, собственно, моя просьба: совместить все три системы в одну, т.е. максимально сохранить преимущества каждой и устранить их недостатки или, как вариант, написать другую.
OverdraveДата: Четверг, 06 Июня 2013, 21:27 | Сообщение # 45 | Тема: Самонаводящаяся ракета
частый гость
Сейчас нет на сайте
YellowAfterlife, спасибо, только мне надо было, чтобы ракета выстреливалась туррелью и летела в игрока...
OverdraveДата: Понедельник, 03 Июня 2013, 10:57 | Сообщение # 46 | Тема: Самонаводящаяся ракета
частый гость
Сейчас нет на сайте
XDominator
Премного благодарен. Всё заработало сразу после того, как я поменял знаки |D
OverdraveДата: Воскресенье, 02 Июня 2013, 15:04 | Сообщение # 47 | Тема: Самонаводящаяся ракета
частый гость
Сейчас нет на сайте
Давно пытаюсь сделать самонаводящуюся ракету. Не ту, что тупо летит напролом, с шансом попасть в цель в 100%, а ту, от которой вполне возможно увернутся. Я пытался реализовать это двумя способами:
1)Сделал небольшой объект-цель для ракеты, который с небольшим отставанием двигался за игроком (скорость этого объекта зависела от степени отставания). Ракета всё делала правильно, до тех пор, пока не достигала объекта: она попросту залагивала в нём (очевидно, не прописаны её последующие действия). тогда я рассмотрел 3 фазы разворота:
*Снизить скорость
*Снизить скорость до нуля и наполовину повернуться (всё плавно, офк)
*Повышать скорость до обычной, завершив поворот.
При всех этих стадиях проверять, совпадает ли direction ракеты с point_direction до координат игрока, если да, то просто ускоряться до нормальной скорости, ведя обыкновенное преследование.
Эта система пока только в теории, не знаю, сработает ли она, ведь цель после прыжка наверняка будет оказываться над игроком...

2)Втором способ заключается в том, чтобы сравнивать координаты потенциального столкновения с координатами игрока:

*на картинке увидел ошибку в виде у>yy, имелось в виду напротив, y<yy

Эту систему я реализовал таким образом:
Код

if Player.x>xx  
direction+=1

if Player.x<xx
direction-=1


довольно просто, да и работает всё прекрасно, пока в дело не входит разница переменных у и уу. Может получиться так, что у<yy, а x>xx (персонаж слева сверху от ракеты), тогда ракета попросту летит вниз.

Если коротко, то два вопроса:
1)Какую из этих систем лучше всего использовать?
2)Как усовершенствовать вторую систему?
Форум игроделов » Записи участника » Overdrave [47]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

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