Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« : Июнь 08, 2012, 15:53:21 » |
|
У меня возник ещё один вопрос: в соответствующем событии для игрового персонажа для проигрывания анимации я пишу: obj_aleksandr.sprite_index = spr_aleks_an_shoot; spr_aleks_an_shoot.image_speed=1; if spr_aleks_an_shoot.image_index=[b]n[/b] { spr_aleks_an_shoot.image_speed=0; } Правилен ли этот код? Как узнать индекс изображения n? Прошу исправить, если в коде есть ошибка, так как сам понимаю, что мог многое напутать.
|
|
|
Записан
|
|
|
|
Briginas
Главный Модератор
Репутация: 673
Offline
Пол: Награды: ...
API: GameMaker Studio 2
Деятельность: Game Designer
Сообщений: 2042
|
|
« Ответ #1 : Июнь 08, 2012, 15:59:08 » |
|
obj_aleksandr.sprite_index = spr_aleks_an_shoot; obj_aleksandr.image_speed=1; if obj_aleksandr.image_index=n { obj_aleksandr.image_speed=0; }
Так будет правильнее, вместо спрайта нужно указывать объект.
|
|
|
Записан
|
|
|
|
VladTheCat
Немного
GM Pro user
Репутация: 145
Offline
Пол: Награды:
API: Love
Деятельность: Целая игростудия, состоящая из одного кота.
Сообщений: 1435
|
|
« Ответ #2 : Июнь 08, 2012, 16:01:31 » |
|
image_index/speed надо указывать не у спрайта, а у объекта.
|
|
|
Записан
|
Будьте вежливы: Вам помогли? Не забудьте поставить плюс. А то банда злобных апельсинов придет за вами. И даже тех. поддержка вам не поможет. :3 Когда я что-то пишу в "<>", то это значит, что содержимое надо заменить на свое значение.
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #3 : Июнь 08, 2012, 16:04:45 » |
|
Что же насчет индекса?
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #4 : Июнь 08, 2012, 16:06:30 » |
|
Правилен ли этот код? Как узнать индекс изображения n? Я понял тебя так:
|
Регулируемая анимация
Снимок.PNG (42.04 Кб, 747x490 - просмотрено 710 раз.)
|
|
Записан
|
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #5 : Июнь 08, 2012, 16:07:18 » |
|
obj_aleksandr.sprite_index = spr_aleks_an_shoot; obj_aleksandr.image_speed=1; if obj_aleksandr.image_index=7 { obj_aleksandr.image_speed=0; } Такой код не работает. ----------------------- Hadarak, необходимо, чтобы анимация была проиграна до последнего кадра лишь один раз, после чего на нем бы остановилась.
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #6 : Июнь 08, 2012, 16:09:12 » |
|
obj_aleksandr.sprite_index = spr_aleks_an_shoot; obj_aleksandr.image_speed=1; if obj_aleksandr.image_index=7 { obj_aleksandr.image_speed=0; } Такой код не работает. Может потому что кадров семь? А седьмой кадр будет иметь индекс 6 т.к. расчёт идёт с нуля.
|
|
|
Записан
|
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #7 : Июнь 08, 2012, 16:10:38 » |
|
Может потому что кадров семь? А седьмой кадр будет иметь индекс 6 т.к. расчёт идёт с нуля. Кадров восемь.
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #8 : Июнь 08, 2012, 16:13:07 » |
|
В каком событии происходит этот код?
|
|
|
Записан
|
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #9 : Июнь 08, 2012, 16:14:49 » |
|
Изменил событие, и анимация заработала. Только вот скорость слишком высока... Насколько я понимаю, следует её значение уменьшать от единицы? --------------------------------------------
Hadarak, было установлено в Аларме. --------------------------------------------
Кроме того, изображения создают замкнутый цикл. Как ликвидировать эту проблему?
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #10 : Июнь 08, 2012, 16:16:14 » |
|
Насколько я понимаю, следует её значение уменьшать от единицы? Да. Добавлено: Июнь 08, 2012, 16:17:00 Hadarak, было установлено в Аларме. По этому и не работало т.к. проверка происходила только 1 раз. Добавлено: Июнь 08, 2012, 16:20:38 Alarm:obj_aleksandr.sprite_index = spr_aleks_an_shoot; obj_aleksandr.image_speed=1;
Step:if obj_aleksandr.sprite_index = spr_aleks_an_shoot;{ if obj_aleksandr.image_index=7 { obj_aleksandr.image_speed=0; } }
p.s. Почему ты везде приписываешь obj_aleksandr? Этот код находиться не в нём?
|
|
|
Записан
|
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #11 : Июнь 08, 2012, 16:24:17 » |
|
Ошибка: ERROR in action number 1 of Step Event for object obj_aleksandr:
Error in code at line 4: if obj_aleksandr.sprite_index = spr_aleks_an_shoot;{ ^ at position 52: Statement expected.
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #12 : Июнь 08, 2012, 16:26:14 » |
|
Убери ; я просто скопировал, не заметил. if obj_aleksandr.sprite_index = spr_aleks_an_shoot{ if obj_aleksandr.image_index=7 { obj_aleksandr.image_speed=0; } }
|
|
|
Записан
|
|
|
|
Autodesk
Участник
Репутация: 32
Offline
Пол:
API: GameMaker Studio Pro
Сообщений: 168
|
|
« Ответ #13 : Июнь 08, 2012, 16:31:35 » |
|
Теперь анимации нет: с начала игры - тот самый последний кадр. -----------------------------------------------------------------
Поспешил с ответом: анимация снова не проигрывается...
|
|
|
Записан
|
|
|
|
Hadarak
|
|
« Ответ #14 : Июнь 08, 2012, 17:11:15 » |
|
Тогда так попробуй(или скинь исходик): Create: xx = 0; Alarm: xx = 1; Step: if xx{ obj_aleksandr.sprite_index = spr_aleks_an_shoot; obj_aleksandr.image_speed=1; if obj_aleksandr.image_index=7 { obj_aleksandr.image_speed=0; xx = 0; } } хотя отличий можно сказать и нет
|
|
|
Записан
|
|
|
|
|