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=7967)

Colossus 12.03.2009 15:19

Очередной Косяк с анимацией
 
Люди... Помогите мне пожалста.. я уже всю голову изъепал сибе... не могу сделать нормально анимки... вот медия:

http://slil.ru/27112107

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

Буду очень блпгодарен за любую помощь

NitE 12.03.2009 16:13

Ответ: Очередной Косяк с анимацией
 
я-бы помог, но к сожалению со скоростью в 0,1 кб/с на этом гавёном хостинге это не возможно...

Colossus 12.03.2009 16:37

Ответ: Очередной Косяк с анимацией
 
ну.. хотяб код бы скинул)

NitE 12.03.2009 17:30

Ответ: Очередной Косяк с анимацией
 
http://rapidshare.com/files/208338083/URBAN.rar.html
вот что-то похожее на то что надо, нормально сделать немог, т.к. нету данных о модели да и тебе "адвансд" фичи ещё не нужны ))

Colossus 12.03.2009 20:12

Ответ: Очередной Косяк с анимацией
 
впринципе я уже допер) все было просто как бананова кожура)))

Код:

Graphics3D 800,600,32,1
AmbientLight 195,140,50
SetBuffer BackBuffer()

CamPivot=CreatePivot()

camera=CreateCamera(CamPivot)
              PositionEntity camera,0,6,-10
              RotateEntity camera,0,180,0
              PointEntity camera,CamPivot

light=CreateLight(2)
          PositionEntity light,0,100,0

urban=LoadAnimMesh("Urban.b3d")
            ScaleEntity urban,0.1,0.1,0.1
            RotateEntity urban,0,180,0
            PositionEntity urban,0,0,10

rhand=FindChild(urban,"ValveBiped.Bip01_R_Hand")

Global idle=LoadAnimSeq(urban,"Idle.b3d")
Global runf=LoadAnimSeq(urban,"RunF.b3d")
Global runb=LoadAnimSeq(urban,"RunB.b3d")
Global runr=LoadAnimSeq(urban,"RunR.b3d")
Global runl=LoadAnimSeq(urban,"RunL.b3d")
Global runfr=LoadAnimSeq(urban,"RunFR.b3d")
Global runfl=LoadAnimSeq(urban,"RunFL.b3d")
Global runbr=LoadAnimSeq(urban,"RunBR.b3d")
Global runbl=LoadAnimSeq(urban,"RunBL.b3d")


While Not KeyHit(1)

PositionEntity CamPivot,EntityX(urban),EntityY(urban)+2,EntityZ(urban)
RotateEntity CamPivot,EntityPitch(CamPivot)+MouseYSpeed()*.09,EntityYaw(CamPivot)-MouseXSpeed()*.09,0
MoveMouse 400,300

If Not Animating(urban) Animate urban,1,1,idle

If KeyDown(17)  If AnimSeq (urban)<>runf Animate urban,3,0.5,runf
If KeyDown(31)  If AnimSeq (urban)<>runb Animate urban,3,0.5,runb
If KeyDown(30)  If AnimSeq (urban)<>runl Animate urban,3,0.5,runl
If KeyDown(32)  If AnimSeq (urban)<>runr Animate urban,3,0.5,runr



UpdateWorld
RenderWorld
Flip
Wend
End

но почему то не работаю анимки впередвбок и назадвбок)

falcon 13.03.2009 11:55

Ответ: Очередной Косяк с анимацией
 
накой столько глобалов? о_0
тут можно обойтись обычными числами\константами


Цитата:

но почему то не работаю анимки впередвбок и назадвбок)
чтото я утебя в коде не вижу даже запуска этих анимаций
или комп типа сам должен допедрить как по диагонали ходить :)

Colossus 13.03.2009 16:30

Ответ: Очередной Косяк с анимацией
 
да не я таким же образом прописывал команды тока условие было If Keydown(например вперед) and Keydown(например влево) и потом
If AnimSeq (urban)<>бежимвпередвлево Animate urban,3,0.5,бежимвпередвлево

вот... но никуя не работало...

falcon 14.03.2009 11:30

Ответ: Очередной Косяк с анимацией
 
угу...
а ты подумал как это будет работать? :)
если я тя прально понял то у тя выполняется 2 условия
если нажмеш на w и если нажмеш на w and a ...
оба условия верны... начит и воспроизводить получается 2 анимации одновременно...

Colossus 14.03.2009 12:38

Ответ: Очередной Косяк с анимацией
 
да зачем 2 анимации то?! у меня 8 анимаций) вперед,назад,вправо,влево, впередвправо, впередвлево,назадвправо,назадвлево если нажимаем например w+a то должна проигрываться анимка впередвлево.. вот такая каряга то...

falcon 14.03.2009 13:26

Ответ: Очередной Косяк с анимацией
 
я тебя понял а ты меня нет :)
внимательно прокомпилируй в СВОЕЙ голове код который отвечает за анимацию (касательно условий) и на всякий перечитай мой предыдущий пост

NitE 14.03.2009 13:40

Ответ: Очередной Косяк с анимацией
 
те надо делать

if keydown(1) then curanim$="вперед"
if keydown(1) and keydown(2) then curanim$="вперед-назад"

Colossus 14.03.2009 13:52

Ответ: Очередной Косяк с анимацией
 
спасибо Nite, я попробую)

falcon 14.03.2009 14:16

Ответ: Очередной Косяк с анимацией
 
NitE советчик блин
по твоему коду получается что если нажата и 1 и 2
то анимироваться будет не только вперед-назад но и вперед (т.к. первому условию пофигу нажата ли вторая кнопка.. оно идет по факту что ПЕРВАЯ то нажата)

ABTOMAT 14.03.2009 14:52

Ответ: Очередной Косяк с анимацией
 
Код:

if keydown(1) then curanim$="вперед"
if keydown(1) and keydown(2) then curanim$="вперед-назад"

млио
ну зачем строковой переменной?
и логика как заметил фэлкон неверная
во-первых если вызывать keydown более одного раза за цикл то прерывание клавиши обнулится после первого вызова. Один раз за цикл снимаем с клавиш прерывания:
Код:

        KD_W = KeyDown(17)
        KD_A = KeyDown(30)
        KD_S = KeyDown(31)
        KD_D = KeyDown(32)

И потом узнаём, нажата ли только одна клавиша или несколько?
movekeys = KD_W+KD_A+KD_S+KD_D
Ну и исходя из этого пишем логику
If movekeys = 1 then
If KD_W then .....
Elseif Movekeys = 2 then
If KD_W+KD_A then ....
end if


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

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