Animation

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Stani

Betreff: Animation

BeitragSo, Jul 04, 2010 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,ich brauch kurz Hilfe.Ich hab hier viele Animationen und möchte die beim gehen einsetzten.Ich hab von Pacemaker von der Website so ein Ninja geholt und mit extractanimseq die frames von 1 - 14(also gehen) ausgeschnitten.
Jetzt mach ich das so ,das ich bei if not keydown(17) then animate player,1,.2,1,0 die animation reintu.Aber wenn ich das jetzt bei if not keydown(31) (rückwerts ) then animate player,1,-.2,1,0 mache,dann geht nichts mehr.
Wie kann ich das lösen?
 

Pousup

BeitragSo, Jul 04, 2010 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste bitte den ganzen Code, das ist für uns um ein vielfaches übersichtlicher. Die Frage die sich mir stellt, ist allerdings: Wieso fragst du: "If not Keydown(xy)" ab?
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr
 

Stani

BeitragSo, Jul 04, 2010 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()
HidePointer



Global player=LoadAnimMesh("ninja.b3d")
ScaleEntity player,0.4,0.4,0.4
ExtractAnimSeq(player,1,14)


Global playerpiv=CreatePivot()

Global cam1=CreateCamera(playerpiv)
MoveEntity cam1,0,2,-5

Global cam2=CreateCamera(player)
MoveEntity cam2,1.8,7.5,-6

HideEntity cam2
ShowEntity cam1

Global Boden=CreatePlane()
EntityTexture Boden,LoadTexture("gras.jpg")

PositionEntity Boden,0,-1,0


Global light=CreateLight()

PositionEntity player,0,-1.1,0




Repeat
Cls

PositionEntity playerpiv,EntityX(player),EntityY(player),EntityZ(player)


If MouseDown(2) Then


HideEntity cam1
ShowEntity cam2


RotateEntity player,EntityPitch(player),EntityYaw(player)-MouseXSpeed(),0


If KeyDown(17) Then MoveEntity player,0,0,.1
If KeyDown(31) Then MoveEntity player,0,0,-.1
If KeyDown(30) Then MoveEntity player,-.1,0,0
If KeyDown(32) Then MoveEntity player,.1,0,0



Else




HideEntity cam2
ShowEntity cam1



RotateEntity playerpiv,EntityPitch(playerpiv),EntityYaw(playerpiv)-MouseXSpeed(),0

If KeyDown(17) Then MoveEntity player,0,0,.1
If KeyDown(31) Then MoveEntity player,0,0,-.1
If KeyDown(30) Then TurnEntity player,0,2,0
If KeyDown(32) Then TurnEntity player,0,-2,0

If not  KeyDown(17) Then
Animate player,1,.2,1,0
EndIf

if not keydown(31) then
animate player,1,-.2,1,0
endif


EndIf



RenderWorld
UpdateWorld



Flip
Until KeyDown(1)
End


Weiß ich ja auch nicht.animate muss man doch immer genau andersrum machen also not keydown....,weil er ja sonst immer wenn du nicht gedrückt hast animiert.
 

Pousup

BeitragSo, Jul 04, 2010 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mich mit 3D noch nicht wirklich auseinander gesetzt, aber kann sein, dass du die Befehle falsch verwendest?

Animate
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr

BladeRunner

Moderator

BeitragSo, Jul 04, 2010 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, Extractanimseq gibt zB die resultierende Nummer der Sequenz zurück - man sollte sie also auch abfragen. Wink

Die Hilfe sei hier dein Freund und Lehrmeister, Stani.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Stani

BeitragSo, Jul 04, 2010 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
mesh = LoadAnimMesh(base_mesh$)

;Laufanimation ist Frame 0-30 (AnimSequenz 1!)
ExtractAnimSeq(mesh, 0, 30 )

;Sprunganimation ist Frame 31-40 (AnimSequenz 2!)
ExtractAnimSeq(mesh, 31, 40)

;Sprunganimation 1x abspielen
Animate mesh, 3, 1, 2


genau so hab ich das gemacht ,aber es geht nicht.

Ist glaub ich was anderes

Xeres

Moderator

BeitragSo, Jul 04, 2010 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub, du solltest nochmal nachlesen, wie ExtractAnimSe benutzt wird.

Moment, mein Fehler: Die Nummer der Animationssquenz muss man nicht zwischenspeichern? Ist das Beispiel korrekt?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Stani

BeitragSo, Jul 04, 2010 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
jopp aber das ist doch garnicht das problemm.Das mit animseq da geht ,nur ich weiß nicht wie ich das mim animate machen soll.Da man ja immer not oder else haben muss,kann ich ja nicht beide machen,da dan beide stimmen und 2 animationen gleichzeitig laufen.

weiß auch nicht warum die Variable nicht stimmen muss für animate : if not A = 1 then animate.....

Iwie muss man das doch machen können

BladeRunner

Moderator

BeitragSo, Jul 04, 2010 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
stehen = extractanimseq(...)
laufen = extractanimseq(...)

if keydown(bla) then
    if not modus = stehen then
        modus = stehen
        animate deinefigur,3,1,stehen
    endif
endif

if keydown(blub) then
    if not modus = laufen then
        modus = laufen
        animate deinefigur,1,1,laufen
    endif
endif

Pseudocode, sollte das Prinzip aber klarmachen. Du machst ne Hilfsvariable die dafür sorgt dass das Animate nur einmalig pro 'aktion ausgeführt wird.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Stani

BeitragSo, Jul 04, 2010 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
aber jetzt wenn ich nur 1 mal w drücke dann leuft die gehen animation weiter bis ich auf s drücke,wodurch dan die rückwertsanimation anfängt aber halt auch bis ich wieder di andere drücke.

BladeRunner

Moderator

BeitragMo, Jul 05, 2010 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann machst Du eine Standanimation die abgespielt wird wenn keine Taste gedrückt wird - selbes Prinzip.
dafür kannst du ja zur Not eine 'Animation' aus einem einzelnen Frame erstellen. Du musst halt nur bei allen Tastaturabrafen eine Hilfsvariable auf 1 setzen wenn sie erfolgt sind und diese Hilfsvariable bei jedem Durchlauf deiner Mainloop zuerst mal auf 0 setzen. Ist sie nach Ende der Mainloop immer noch 0 wurde keine Taste gedrückt und die Standanimation ist dran.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group