Пятница, 29 Марта 2024, 02:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Помоги продумать логику... (Ну карочи странная тема, но очень нуждаюсь в помощи.)
Помоги продумать логику...
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 - Исследовательская игра на выживание
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Помоги продумать логику... (Ну карочи странная тема, но очень нуждаюсь в помощи.)
  • Страница 1 из 1
  • 1
Поиск:

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