Суббота, 23 Ноября 2024, 01:10

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
аларм и анимация
dildo_bomberДата: Понедельник, 19 Сентября 2016, 14:45 | Сообщение # 1
частый гость
Сейчас нет на сайте
у меня проблема. есть объект, у него два анимированных спрайта по 60 кадров.
есть 2 аларма, которые я выставляю по 60.
выглядит так
1й аларм
-alarm[2] = 60
-sprite_index = srp_1

2й аларм
-alarm[1] = 60
-sprite_index = srp_2

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


Сообщение отредактировал dildo_bomber - Понедельник, 19 Сентября 2016, 14:46
TLTДата: Вторник, 20 Сентября 2016, 14:07 | Сообщение # 2
Сейчас нет на сайте
Цитата dildo_bomber ()
проблема заключается в том, что анимация не состыкуется друг с другом


Это ни как не связано с алармом, судя по всему.

Цитата dildo_bomber ()
как по другому сделать? можно ли сделать в спрайте до 15 кадров, а потом как то заставить его замереть на последнем до конца дней существования вселенной или до смены на следующий спрайт?


Типа как если бы персонаж со стойки по кадрам садился и на последнем замер?

Можно решить разными путями. Можешь накачать примеров игр, исходников с подобными реализациями и глянуть. Либо кидай сюда свой исходник, тебе подскажут точнее.


Дао, выраженное словами, не есть истинное Дао.
dildo_bomberДата: Среда, 21 Сентября 2016, 15:00 | Сообщение # 3
частый гость
Сейчас нет на сайте
уже выяснил, по смене спрайта анимация не останавливается, она доходит до 67 кадров (сделал специально для проверки), после чего начинается с 0 нового спрайта, не успев его пройти, спрайт меняется, а анимация всё еще идёт до конца. вот почему так и получается.
тогда вопрос, как сделать замену спрайта так, что бы анимация прерывалась?

EDIT: насколько я понял из дебаггера: 1 фрэйм уходит на то, что бы запустить аларм, и только потом начинается анимация. т.к. у меня 2 аларма, то получается, что на каждый аларм утекает по 1 фрейму каждый запуск. учитывая то, что анимация идёт до конца и только потом меняется - вот я и получаю мои непонятки. неужели никто никогда с таким не сталкивался? может подобное реализуется как то по другому, я хз. допёк только до такого способа.


Сообщение отредактировал dildo_bomber - Среда, 21 Сентября 2016, 16:32
Fill_FreemanДата: Среда, 21 Сентября 2016, 18:24 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Вот так вот вообще не понятно чего тебе надо, и что у тебя есть.

Цитата dildo_bomber ()
можно ли сделать в спрайте до 15 кадров, а потом как то заставить его замереть на последнем до конца дней

Цитата dildo_bomber ()
уже выяснил, по смене спрайта анимация не останавливается


В событии Animation End, можешь остановливать анимацию (image_speed = 0 или как-то так).
Это всё, что мне пришло на ум, по твоим сообщениям.


dildo_bomberДата: Четверг, 22 Сентября 2016, 11:10 | Сообщение # 5
частый гость
Сейчас нет на сайте
идея хорошая, попробовал - ничего не фурычит.
animation end выставляет скорость 0 для всех спрайтов на постоянной основе.

попробовал в step сделать так:
----if sprite_index = spr_boss1_laser and image_index = 55 {image_speed = 0}
не заработало совсем.

и еще так:
----if image_index>image_number-1 {image_speed = 0} else {imgae_speed = 1}
тоже не сработало.

а возможно ли в самой animation end попробовать как то сделать проверку на конец анимации?
чтото вроде:
if animation_end = 1 /*т.е. если анимация закончилась*/ {image_speed = 0} else {image_speed = 1} ?
точнее, пусть просто image_speed = 0 будет написано там, но как сделать, что бы после, когда новый спрайт присваивается объекту,
скорость снова становилось 1.

EDIT: в step вписал if image_index = 5 {image_speed = 0}, проверил в дебаггере - не срабатывает, на 5 кадре скорость анимации не меняется на 0. почему?
пробовал и в draw пихать, и в animation end.


Сообщение отредактировал dildo_bomber - Четверг, 22 Сентября 2016, 11:42
Fill_FreemanДата: Четверг, 22 Сентября 2016, 13:55 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Цитата dildo_bomber ()
animation end выставляет скорость 0 для всех спрайтов на постоянной основе.


animation end ничего не выставляет. Это событие, на которое ты навешиваешь любые действия, какие захочешь.

Мне кажется, что для сравнения одинарное равно не срабатывает. GML, конечно, гибкий, но в справке написано так:

Цитата
Comparing

<, <=, ==, !=, >, >= - These are comparisons and can only give a true or false result (where true can also be interpreted as 1, and false as 0). Examples of use:

if (a < b) {do something...}
if (a != b) {do something...}


Поэтому я бы сделал так.
В Animation End событие добавил следующий код:

Код

if (sprite_index == spr_boss1_laser) {
  image_index = 55;
  image_speed = 0;
}




Сообщение отредактировал Fill_Freeman - Четверг, 22 Сентября 2016, 13:57
dildo_bomberДата: Четверг, 22 Сентября 2016, 16:03 | Сообщение # 7
частый гость
Сейчас нет на сайте
спасибо, сравнение сработало! осталось дописать пару деталей и всё запахало!

PS.: для тех, кто попал сюда через сёрф инета про такие же траблы.

если задаёшь image_index = 53, то сделующий спрайт будет проигрываться с именно с 53го. и скорость так же останется 0.
в моём случае надо было дописать в каждом из алармов
image_index = 0
image_speed = 1
дабы всё запустилось.


Сообщение отредактировал dildo_bomber - Четверг, 22 Сентября 2016, 16:06
sfabrikanДата: Четверг, 22 Сентября 2016, 16:49 | Сообщение # 8
БЕЗУМЕЦ!!!
Сейчас нет на сайте
dildo_bomber, а у тебя забавный ник

Это я
  • Страница 1 из 1
  • 1
Поиск:

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