forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Как сделать анимацию спрайта? (http://forum.boolean.name/showthread.php?t=3138)

dimanche13 09.04.2007 19:00

Как сделать анимацию спрайта?
 
Возможно этот вопрос поднимался. И невозможно, а точно! Хотелось бы посмотреть на реализацию через БлитцМакс. Ссылки, примеры и ваши наработки. В крайнем случае принципы работы.

johnk 09.04.2007 19:05

Мою гаму видел?

Если нет, то в подписи сайт, смотри на здоровье! Кста тама есть переведенная часть хелпа, там то, что именно тебе нужно.

dimanche13 10.04.2007 12:15

Re: Как сделать анимацию спрайта?
 
Зарегился у тебя на сайте. Скачал хелп к мах2д - там не нашел что мне нужно... и игры твоей не нашел. Дай ссылки прямые, чтоли...

johnk 10.04.2007 14:28

Re: Как сделать анимацию спрайта?
 
Ну в хелпе смотри как сделать, т.е. команды LoadAnimImage и DrawImage, а реализация есть тут.

johnk 10.04.2007 14:54

Re: Как сделать анимацию спрайта?
 
А если тебе код нужен, то вот так там делается:
ExplImage:TImage=LoadAnimImage ("incbin::images\1.bmp",128,128,0,24) - гружу картинку
Далее в типе взрыва делаю функцию и метод
Function Create(x#,y#)
Local c:Explosion=New Explosion
c.x#=x#
c.y#=y#
c.frame=0
ListAddLast (ExpList,c)
End Function
Method update()
If frame<=23
SetScale 0.5,0.5
DrawImage explimage,x,y,frame
SetScale 1,1
Else
ListRemove(ExpList,Self)
End If
frame:+1
End Method
А потом использую в цикле

Explosion.Create(a.GetX(),a.GetY())

For Local vzriv:Explosion=EachIn ExpList
vzriv.update
Next

dimanche13 10.04.2007 15:02

Re: Как сделать анимацию спрайта?
 
Ссылка на "spacer" ? я не заметил там никакой анимации... А что использовать надо команды LoadAnimImage и DrawImage это я и так знал... Хотя нашел у тебя статейку "Сто одно Изображение" сейчас вникаю...

johnk 10.04.2007 15:05

Re: Как сделать анимацию спрайта?
 
"я не заметил там никакой анимации... "

- а взрыв?

dimanche13 10.04.2007 16:07

Re: Как сделать анимацию спрайта?
 
Ой да точно взрывы есть! А то я один раз стрельнул да и не попал нив кого. Вырубил. Ок. Ща попробую, спасибо!

johnk 10.04.2007 16:40

Re: Как сделать анимацию спрайта?
 
Кстати, dimanche13 в 5 посте, я написал как это сделать :)

dimanche13 11.04.2007 13:03

Re: Как сделать анимацию спрайта?
 
Спасибо JohnK, но у меня некоторые затруднения, потому что у тебя взрыв - это последовательный набор картинок всех стадий взрыва. Ты их перебираешь и если кончились фреймы удаляешь. У меня Бомберман . Есть картинка с какого-то сайта стадии его движения вверх ,вниз и т.д. Но когда бомберчел движется вверх надо показать как он перебирает ногами, вправо то же самое и во все стороны. То есть не перебор картинок от начала до конца а по-другому... вот.

johnk 11.04.2007 14:01

Re: Как сделать анимацию спрайта?
 
Если это отдельные картинки то немного легче. Делается так:
Код:

vniz=loadanimimage("vniz.bmp".....и пошло поехало)
If keydown(KEY_DOWN)
Ты должен проверить какой кадр, что бы не было ошибок. Допустим у тебя 5 кадров тогда
if frame<=4 (4 потому что отсчет идет с 0)
Потом просто рисуешь картинку
drawimage vniz,x,y,frame
а если пошел 6 кадр, то вернуть его на первый (а точнее нулевой)
Else frame=0
endif
 увеличиваешь кадр
Frame:+1
endif


dimanche13 11.04.2007 15:52

Re: Как сделать анимацию спрайта?
 
Да надо уже хоть что-нибудь попробовать. У самого парочка мыслей есть на этот счет и тебе спасибо, JohnK. Вот попробую выложу что получилось! или не получилось...

dimanche13 12.04.2007 23:29

Re: Как сделать анимацию спрайта?
 
У меня какая-то фигня получается. Да я шагаю вверх и персонаж машет ногами (простите мой русский язык)то есть вроде идет, но при отпускании кнопки может остановиться с занесеной для шага ногой, то есть движение не завершается а кнопка отпущена.

alcoSHoLiK 13.04.2007 01:58

Re: Как сделать анимацию спрайта?
 
Обнуляй кадр.
Другой вариант - устанавливать переменную состояния. Псевдокод:
Код:

If keypressed Then animate = true
...
DrawImage x, y, frame
...
If animate Then
  frame = frame + 1
  If frame = max_frames Then
      animate = false
      frame = 0
  End If
End If

Тогда анимация будет длится до последнего кадра.

dimanche13 13.04.2007 12:20

Re: Как сделать анимацию спрайта?
 
Я сделал вот так :

If KeyDown(KEY_UP)
If animate = True
If frame < (3 - 1)
frame :+ 1
Else
frame = 0
animate = False
End If
Else
frame = 0
animate = True
End If
End If

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


Часовой пояс GMT +4, время: 20:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot