Привязывание к персонажу
|
|
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, не замечал такого...Вполне может быть
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |