Game Maker - создание игр | HellRoom Games

Game Maker | GameMaker: Studio [Game-Maker.ru] => Вопросы по TDS (игры с видом сверху) => Тема начата: Autodesk от Июнь 08, 2012, 15:53:21



Название: Регулируемая анимация
Отправлено: Autodesk от Июнь 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? Прошу исправить, если в коде есть ошибка, так как сам понимаю, что мог многое напутать.


Название: Re: Регулируемая анимация
Отправлено: Briginas от Июнь 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; 
}

Так будет правильнее, вместо спрайта нужно указывать объект.


Название: Re: Регулируемая анимация
Отправлено: VladTheCat от Июнь 08, 2012, 16:01:31
image_index/speed надо указывать не у спрайта, а у объекта.


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 16:04:45
Что же насчет индекса?


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 08, 2012, 16:06:30
Цитировать
Правилен ли этот код? Как узнать индекс изображения n?
Я понял тебя так:


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 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, необходимо, чтобы анимация была проиграна до последнего кадра лишь один раз, после чего на нем бы остановилась.


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 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 т.к.  расчёт идёт с нуля.


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 16:10:38
Цитировать
Может потому что кадров семь? А седьмой кадр будет иметь индекс 6 т.к.  расчёт идёт с нуля.
Кадров восемь.


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 08, 2012, 16:13:07
В каком событии происходит этот код?


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 16:14:49
Изменил событие, и анимация заработала. Только вот скорость слишком высока... Насколько я понимаю, следует её значение уменьшать от единицы?
--------------------------------------------

Hadarak, было установлено в Аларме.
--------------------------------------------

Кроме того, изображения создают замкнутый цикл. Как ликвидировать эту проблему?


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 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? Этот код находиться не в нём?


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 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.


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 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; 
}
}


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 16:31:35
Теперь анимации нет: с начала игры - тот самый последний кадр.
-----------------------------------------------------------------

Поспешил с ответом: анимация снова не проигрывается...


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 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;  
}
}
хотя отличий можно сказать и нет :errm:


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 17:22:28
Если сможете разобрать:


Название: Re: Регулируемая анимация
Отправлено: infernal от Июнь 08, 2012, 17:28:12
делов то


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 17:31:05
Спасибо, а возможно через Аларм?


Название: Re: Регулируемая анимация
Отправлено: Briginas от Июнь 08, 2012, 17:32:23
Спасибо, а возможно через Аларм?
Да. Время аларма нужно писать не в step, а в create


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 17:33:42
Briginas, infernal, спасибо.
--------------------------

Хочу ещё спросить:
как в игру добавить второй аларм, обратно сопряженный с первым (чтобы через определенный интервал времени действия повторялись в обратном порядке)?


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 08, 2012, 17:35:02
Не надо каждый раз подписывать obj_aleksandr и не надо просто так ставить в Step
Код:
alarm[0] = n;
тк будильник заводится каждый шаг и постоянно равен 60.
Пример не успел отправить. :getlost:


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 17:53:08
Цитировать
как в игру добавить второй аларм, обратно сопряженный с первым (чтобы через определенный интервал времени действия повторялись в обратном порядке)?

Я могу получить ответ на этот вопрос, пожалуйста?


Название: Re: Регулируемая анимация
Отправлено: Briginas от Июнь 08, 2012, 18:05:35
В сам аларм пропиши время аларма.


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 08, 2012, 18:07:13
вот


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 18:09:57
Ошибка при открытии.


Название: Re: Регулируемая анимация
Отправлено: Грабер от Июнь 08, 2012, 18:10:38
в конце использования alarm[0],
допиши
Код:
alarm[0]=время


Название: Re: Регулируемая анимация
Отправлено: Hadarak от Июнь 08, 2012, 18:11:29
Ошибка при открытии.
Исправил см. прошлое сообщение. GM тупил.

Добавлено: Июнь 08, 2012, 18:12:25
в конце использования alarm[0],
допиши
Код:
alarm[0]=время
Он спрашивает как сделать обратную анимацию, а вы говорите как завести ещё один будильник.


Название: Re: Регулируемая анимация
Отправлено: Autodesk от Июнь 08, 2012, 18:12:40
Hadarak, спасибо большое. Работает.


Название: Re: Регулируемая анимация
Отправлено: Грабер от Июнь 08, 2012, 18:14:28
тогда
Ошибка при открытии.
Исправил см. прошлое сообщение. GM тупил.

Добавлено: Июнь 08, 2012, 18:12:25
в конце использования alarm[0],
допиши
Код:
alarm[0]=время
Он спрашивает как сделать обратную анимацию, а вы говорите как завести ещё один будильник.

тогда извеняюсь,
 не понял вопрос