Пятница, 29 Марта 2024, 18:39

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Смена спрайта в зависимости от значения переменной (gms)
Смена спрайта в зависимости от значения переменной
CmaujlukДата: Четверг, 10 Апреля 2014, 01:41 | Сообщение # 1
участник
Сейчас нет на сайте
Привет!
Есть некая переменная value=[1..1000] и предположим 1000 спрайтов.
Как можно реализовать отображение спрайта в зависимости от значения переменной?
Пробовал пронумеровать спрайты s1,s2,s3... и что-то вроде
Код

sprite_index = 's' + string(value);

Не получилось...
Прописывать
Код

if value == 1 then
{
      sprite_index=s1;
{

Не вариант так как спрайтов много.
Знает кто что тут можно придумать?


Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"


Сообщение отредактировал Cmaujluk - Четверг, 10 Апреля 2014, 01:41
ErrantBugДата: Четверг, 10 Апреля 2014, 10:42 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Индекс спрайта - значение числовое, соответственно и задается только цифрами. Запомните это! Максимум, что вы можете в данной ситуации сделать - создать массив и вручную заполнить его спрайтами, дабы потом легко к нему обращаться. Перевод строки в число с индексом спрайта технически невозможен, ибо во время компиляции все названия спрайтов как бы выпадают из программы. Хотя, возможно, какая-то лазейка есть.



Сообщение отредактировал ErrantBug - Четверг, 10 Апреля 2014, 10:42
zzzzzaДата: Четверг, 10 Апреля 2014, 13:49 | Сообщение # 3
участник
Сейчас нет на сайте
Cmaujluk, ну можно все в один спрайт запихнуть и когда тебе нужно сменить на другой индекс, пишешь "image_index=value".
Если тебе нужно поменять спрайт, то можешь сделать так, как предложил ErrantBug или так:
Код

switch (value)
   {
     case 0:
      sprite_index=spr_player1;
     break;

    case 1:
     sprite_index=spr_block;
    break;
    ...
   }

Или если будешь делать таким способом, легче будет назвать все спрайты числами "spr_1". И тогда можно будет сделать так:
Код

switch (value)
   {
     ll='spr_'+string(value);
     case 0:
      sprite_index=ll;
     break;

    case 1:
     sprite_index=ll;
    break;
    ...
   }


Сообщение отредактировал zzzzza - Четверг, 10 Апреля 2014, 13:50
rgs_hakerДата: Четверг, 10 Апреля 2014, 19:59 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
либо так

sp[0]=s_left
sp[1]=s_right
sp[2]=s_up
sp[3]=s_down
sprite_index=sp[irandom(3)]

То есть выбирается случайный спрайт


_____
XDominatorДата: Пятница, 11 Апреля 2014, 09:31 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Баг, ты попутал sprite_index который имя и image_index, который номер картинки в спрайте smile

ПО теме - можно объединить все в 1 спрайт и пользоваться image_index. Но самый простой вариант как предложили в посте выше. Инициализацию массива вынести в отдельный скрипт чтоб не мешалось и все.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
ErrantBugДата: Пятница, 11 Апреля 2014, 11:22 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Цитата XDominator ()
Баг, ты попутал sprite_index который имя и image_index, который номер картинки в спрайте
Молчал бы, коль не заешь)) На самом деле sprite_index тоже задается числом. Ты можешь даже проверить это, написав draw_text(x,y,<спрайт>). Имя спрайта - это всего лишь "условность" для более удобной работы.


MadDoctorДата: Пятница, 11 Апреля 2014, 12:03 | Сообщение # 7
почетный гость
Сейчас нет на сайте
единственный адекватный способ это один спрайт и менять image_index
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Смена спрайта в зависимости от значения переменной (gms)
  • Страница 1 из 1
  • 1
Поиск:

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