Помоги продумать логику...
| |
dikfair | Дата: Четверг, 17 Июля 2014, 17:47 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Привет всем "помогателям" данного форума=).
Тема создана с целью услышать и поучиться у более опытных геймкреАторов. Так вот, как вы уже догадались я создаю игру О_о. Она сама по себе относительно свободна(Шот типа издалека песочница=)), вот и в ней соб-но мой ГГ пожирает кое чито(не важно что), пускает это будет яблоко, после чего спрайт этого яблока или другого обьекта должен отрисовыватся в его желудке, так вот в чем проблемма. Я в состоянии расписать огромную тучу проверок которые будут проверять что ж в этот раз проглотил наш персик, но для каждого нововеденного обьекта прийдеться все это делать заного. Я пытаюсь сделать так чтобы при создании обьекта я указывал шот в таком роде sprite_id="s_apple" после чего соб-но сжирая наш герой этот обьект просто перехватывал вот эту самую "s_apple" и использовал это как спрайт для прорисовки в команде draw_sprite.
Сам вопрос заключается в том, как мне это сделать так, чтобы при введении нового обьекта я просто задавал в sprite_id название спрайта, а редактирование обьекта отрисовки не как не касался, ну или подскажите более удачную логику, или её реализацию. Я не прошу за меня написать огромный код, достаточно просто обьяснить логику как это сделать или предложить свой логический вариант в котором возможно будет просто команда определяющая спрайт который использует обьект(еда).
П.С. сразу прошу извинения за мой граматикус, чес слово старался как можно грамотнее писать, но русский просто не мое призвание =).
Объект 25 - Исследовательская игра на выживание
|
|
| |
XDominator | Дата: Четверг, 17 Июля 2014, 19:01 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| У объектов есть встроенная переменное - sprite_index. Это идентификатор спрайта, изначально он ставится объекту когда ты выбираешь для него спрайт в окне редактирования. Таким образом, обращаясь к любому объекту, ты можешь брать его sprite_index и использовать где угодно. Вопрос в том как у тебя устроено пожирание. Если дпустить что оно происходит в destroy в объекте еды, тогда пишешь что то вроде:
o_player.sprite_id = sprite_index
и у тебя запишется в объект игрока в переменную sprite_id идентификатор спрайта вызывающего объекта, который ты уже можешь пользовать в draw_sprite. Но вообще, я конечно не знаю механики всей твоей, но более чем уверен что для еды было бы правильней использовать единый объект, а его свойства разделять на разные виды еды с помощью дополнительной переменной, отвечающей за тип.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
dikfair | Дата: Четверг, 17 Июля 2014, 21:55 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата XDominator ( ) и у тебя запишется в объект игрока в переменную sprite_id идентификатор спрайта вызывающего объекта, который ты уже можешь пользовать в draw_sprite. Но вообще, я конечно не знаю механики всей твоей, но более чем уверен что для еды было бы правильней использовать единый объект, а его свойства разделять на разные виды еды с помощью дополнительной переменной, отвечающей за тип. Это мне очень полезно, и я скорее всего так и сделаю теперь, но я видимо немножко не правильно задал вопрос. Как мне заставить draw_sprite считывать значение переменной sprite_id.
draw_sprite(sprite_id,x,y) из этого на сколько я зная будет вытекать следующее, он будет искать спрайт с названием sprite_id, а мне нужно чтобы он использовал только значение этой переменной. Возможно все это очень легко, и я кажусь глупым из за этого, но мне если чесно раньше не приходилось использовать значения переменных для отрисовки спрайтов=). Поэтому даж если ответ будет банальным, прошу его написать вместо "иди погугли", потому что гугл это гугл, там кто угодно что угодно напишет, а я моя цель набраться знаний у опытных или знающих свое дело ребят=).
Объект 25 - Исследовательская игра на выживание
|
|
| |
XDominator | Дата: Пятница, 18 Июля 2014, 08:53 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Собственно в данном случае ответ действительно прост - просто возьми и попробуй так написать) Дело в том что на самом деле, индексы спрайта разработчик и гамак видят по разному. Для гамака каждый спрайт обладает своим внутренним ID, который ничто иное как просто число. Собственно, обращаясь к спрайту по имени, ты просто задаешь гамаку указание найти спрайт с таким именем и забрать его ID, с которым уже и работают все функции, связанные со спрайтами. Поэтому строка draw_sprite(sprite_id, x, y) - корректна, если ты будешь действовать по предложенной мной схеме. А убедиться в том что спрайты - это цифры, можешь очень просто. Воткни нескольким объектам куда нибудь, например в left pressed, строку: show_message(sprite_index) и пощелкай на них в игре.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
dikfair | Дата: Пятница, 18 Июля 2014, 15:01 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Все заработало, благодарю.
Объект 25 - Исследовательская игра на выживание
|
|
| |
|