forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Анимированные спрайты. (http://forum.boolean.name/showthread.php?t=2260)

Tasadar 02.01.2007 01:01

Анимированные спрайты.
 
Подскажите пожалуйста как в Блице сделать анимированные спрайты? К примеру пламя свечи, или монстров как в М&M7?

HolyDel 02.01.2007 01:06

Re: Анимированные спрайты.
 
CreateSprite
LoadAnimTexture
EntityTexture
тебе помогут.
подробнее:
грузим анимированную тексу.
в цикле текстурим срайт текстурой с определенным кадром
EntityTexture spr,tex,frame
этот кадр, ясень пень, надо увеличивать в цикле

Tasadar 02.01.2007 01:14

Re: Анимированные спрайты.
 
Нечто подобное я пробовал. Получалось, что на спрайте рамка ползла по стрипу и ничего не получалось.

HolyDel 02.01.2007 01:20

Re: Анимированные спрайты.
 
для спрайта Blend-инг моде поставь 3 (для огня). если по краю рамка, то это скорее всего текстура некачественная

Tasadar 02.01.2007 01:26

Re: Анимированные спрайты.
 
Как некачественная?
Жаль что напрямую GIFы юзать нельзя!

jimon 02.01.2007 14:44

Re: Анимированные спрайты.
 
Tasadar
некачественая всмысле или сильно зжата или криво зделана

DaHuJIbI4 02.11.2011 23:26

Ответ: Анимированные спрайты.
 
Сделал всё как выше описано но такая проблема возникла: скорость смены кадров текстуры оочень огромна. Хотя в скрипте вроде всё как надо:
Function ubdate_pedobear()
If MilliSecs() > timer + 1000
d=d*(-1)
timer=MilliSecs()
EndIf
If d>0 Then k=1 Else k=0
EntityTexture spr_ped, anim_ped, k
End Function

RegIon 03.11.2011 14:47

Ответ: Анимированные спрайты.
 
Код:

If MilliSecs() > timer + 1000
        d=d*(-1)
        timer=MilliSecs()

Это как понять:
если мсек больше чем таймер+1000 то
д=-д--ЗАЧЕМ??
таймер=мсек...
Фсё
так??
..
по твоему коду видно что "д" будет менятся всегда(каждый такт)..так?
и зачем нужна вообще Д если можно было менять К(k=not k)
Код:

Function ubdate_pedobear()
    k=k+1
    EntityTexture spr_ped, anim_ped,k mod 50;количество фреймов -1
End Function

так не проще????

DaHuJIbI4 03.11.2011 16:54

Ответ: Анимированные спрайты.
 
Да d я ввёл просто потому что так в голову взбрело. Чтобы посмотреть как работает. И функция у меня работала, но когда я применил её к спрайту то получилась херня( которую я уже описывал). А то что вы мне написали, во-первых, не работает. Во-вторых я даже не понял как оно должно работать:( При чём тут Mod? Это же остаток от деления. Что это вообще? объясните пожалуйста!

RegIon 03.11.2011 17:02

Ответ: Анимированные спрайты.
 
а...сори..работать не будет так как каждый раз функция очищает свои значения(для моего примера k должна быть глобальной)...
зачем mod??
пример:k=будет больше чем количество фреймов(оно может быть любым если не обнулять(что наверное проще))..то mod 50 будет постоянно интегрироватся от 0 до 49
Код:

global frame%=0
Function ubdate_pedobear() 
  frame=frame+1
    if frame>30 frame=0 ; тут интеграция будет мах до 30
 EntityTexture spr_ped, anim_ped,frame
End Function


DaHuJIbI4 03.11.2011 17:24

Ответ: Анимированные спрайты.
 
Это я понял и уже исправил. Но вопрос вот в чём: Мне нужно чтобы смена кадра была 1 раз в секунду. Но даже с таймером у меня получается скорость over9000 кадров/сек.

Spy4433 03.11.2011 19:01

Ответ: Анимированные спрайты.
 
ну потому что прибавлять надо по таймеру


global frame%=0,timer%
Function ubdate_pedobear()
if millisecs()>timer then
timer=millisecs()
frame=frame+1
endif
if frame>30 frame=0 ; тут интеграция будет мах до 30
EntityTexture spr_ped, anim_ped,frame
End Function

DaHuJIbI4 03.11.2011 20:21

Ответ: Анимированные спрайты.
 
Уррааа! заработало


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

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