|
09.04.2007, 19:00
|
#1
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Как сделать анимацию спрайта?
Возможно этот вопрос поднимался. И невозможно, а точно! Хотелось бы посмотреть на реализацию через БлитцМакс. Ссылки, примеры и ваши наработки. В крайнем случае принципы работы.
|
(Offline)
|
|
09.04.2007, 19:05
|
#2
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Мою гаму видел?
Если нет, то в подписи сайт, смотри на здоровье! Кста тама есть переведенная часть хелпа, там то, что именно тебе нужно.
|
(Offline)
|
|
10.04.2007, 12:15
|
#3
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
Зарегился у тебя на сайте. Скачал хелп к мах2д - там не нашел что мне нужно... и игры твоей не нашел. Дай ссылки прямые, чтоли...
|
(Offline)
|
|
10.04.2007, 14:28
|
#4
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Как сделать анимацию спрайта?
Ну в хелпе смотри как сделать, т.е. команды LoadAnimImage и DrawImage, а реализация есть тут.
|
(Offline)
|
|
10.04.2007, 14:54
|
#5
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
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
|
(Offline)
|
|
10.04.2007, 15:02
|
#6
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
Ссылка на "spacer" ? я не заметил там никакой анимации... А что использовать надо команды LoadAnimImage и DrawImage это я и так знал... Хотя нашел у тебя статейку "Сто одно Изображение" сейчас вникаю...
|
(Offline)
|
|
10.04.2007, 15:05
|
#7
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Как сделать анимацию спрайта?
"я не заметил там никакой анимации... "
- а взрыв?
|
(Offline)
|
|
10.04.2007, 16:07
|
#8
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
Ой да точно взрывы есть! А то я один раз стрельнул да и не попал нив кого. Вырубил. Ок. Ща попробую, спасибо!
|
(Offline)
|
|
10.04.2007, 16:40
|
#9
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Как сделать анимацию спрайта?
Кстати, dimanche13 в 5 посте, я написал как это сделать
|
(Offline)
|
|
11.04.2007, 13:03
|
#10
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
Спасибо JohnK, но у меня некоторые затруднения, потому что у тебя взрыв - это последовательный набор картинок всех стадий взрыва. Ты их перебираешь и если кончились фреймы удаляешь. У меня Бомберман . Есть картинка с какого-то сайта стадии его движения вверх ,вниз и т.д. Но когда бомберчел движется вверх надо показать как он перебирает ногами, вправо то же самое и во все стороны. То есть не перебор картинок от начала до конца а по-другому... вот.
|
(Offline)
|
|
11.04.2007, 14:01
|
#11
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
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
|
(Offline)
|
|
11.04.2007, 15:52
|
#12
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
Да надо уже хоть что-нибудь попробовать. У самого парочка мыслей есть на этот счет и тебе спасибо, JohnK. Вот попробую выложу что получилось! или не получилось...
|
(Offline)
|
|
12.04.2007, 23:29
|
#13
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как сделать анимацию спрайта?
У меня какая-то фигня получается. Да я шагаю вверх и персонаж машет ногами (простите мой русский язык)то есть вроде идет, но при отпускании кнопки может остановиться с занесеной для шага ногой, то есть движение не завершается а кнопка отпущена.
|
(Offline)
|
|
13.04.2007, 01:58
|
#14
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
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
Тогда анимация будет длится до последнего кадра.
|
(Offline)
|
|
13.04.2007, 12:20
|
#15
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
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у вопрос можешь показать на реальном проектк как твой код реализуется, а то у меня не получилось...
А вопрос так и завис в воздухе... может есть у кого-нить ссылка на подобный код...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:51.
|