Пятница, 08 Ноября 2024, 21:22

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Привязывание к персонажу
SpaceMarineДата: Воскресенье, 22 Июня 2014, 23:44 | Сообщение # 1
частый гость
Сейчас нет на сайте
как "привязать" один объект к другому? например при контакте с пистолетом создавался его объект и привязывался к персонажу.
SaiteiДата: Воскресенье, 22 Июня 2014, 23:58 | Сообщение # 2
старожил
Сейчас нет на сайте
SpaceMarine, не знаю как в GML, но на С++ я бы создал у класса "игрок" (тобишь объекта) массив снаряжения и пр. Ну а там уж через ф-ции (т.к. мы точно знаем координаты игрока) рисуем всё это дело так, как задумано.
Можно иначе, более примитивно: просто хранить глобальные переменные x,y игрока и при столкновении игрока с тем же пистолетом (просчет колизии типа "прямоугольник х прямоугольник") у пистолета выставлять флажок (буллевую переменную) "подобрано" в true. И, т.к. "подобрано" == true, пистолет будет рисоваться отталкиваясь от x,y
zzzzzaДата: Понедельник, 23 Июня 2014, 13:29 | Сообщение # 3
участник
Сейчас нет на сайте
SpaceMarine, В степе obj_pistol:
Код
x=obj_player.x
y=obj_player.y

Ну и прибавь/отними сколько тебе надо будет.
OverdraveДата: Понедельник, 23 Июня 2014, 13:32 | Сообщение # 4
частый гость
Сейчас нет на сайте
И осторожнее с самим объектом игрока! Если ты удаляешь игрока через instance_destroy() (например, в случае его смерти), то пистолет также следует удалять, иначе он попытается считывать несуществующие координаты (как итог - крах).
XDominatorДата: Понедельник, 23 Июня 2014, 15:42 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
zzzza, это - пример очень плохой реализации. Я сам несколько раз вставал на эти грабли. Фишка в том, что у пистолета всегда будет отставание от объекта на 1 шаг. Не знаю с чем это связано, но факт - при такой реализации не больших скоростях объект ведет себя как привязанный, и его координаты ни хрена не совпадают с координатами игрока. Нужно заводить отдельный триггер именно в объекте игрока, включать Draw event и там писать
Код

draw_self();
if pistol = true
  draw_sprite(spr_pistol, 0, x, y);


Соответственно pistol и есть наш триггер - контролирующая переменная. Именно ее значение мы меняем для включения\выключения отрисовки пистолета, и вдобавок, пистолет не будет как "привязанный на резинку"


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
zzzzzaДата: Вторник, 24 Июня 2014, 02:34 | Сообщение # 6
участник
Сейчас нет на сайте
XDominator, никогда не делал игру, где нужно было привязывать один объект к другому, поэтому и написал, что первое в голову пришло. Но теперь буду знать, как можно сделать лучше, спасибо)
OverdraveДата: Вторник, 24 Июня 2014, 15:41 | Сообщение # 7
частый гость
Сейчас нет на сайте
XDominator, Если записывать привязку не в степ, а в энд степ, отставания не будет.
А человеку, который не знает, как банальную привязку делать, про draw пока говорить чуть-чуть рановато.
XDominatorДата: Вторник, 24 Июня 2014, 15:49 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Overdrave, не замечал такого...Вполне может быть smile

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
  • Страница 1 из 1
  • 1
Поиск:

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