Animation zu schnell :: 3D

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Chester

Betreff: Animation zu schnell :: 3D

BeitragMi, Apr 13, 2005 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi@all
Mein Problem heute:

BlitzBasic: [AUSKLAPPEN]

If KeyHit(57) spieler\weapon = spieler\weapon + 1
If spieler\weapon = 2 Then spieler\weapon = 0

If spieler\weapon = 0 Animate body,3,1 ,0,0
If spieler\weapon = 1 Animate body,3,-1,0,0

Warum zum Kuckuck springt er immer gleich auf den letzten Frame?

Mfg
ChEsTeR
 

Gast

BeitragDo, Apr 14, 2005 8:23
Antworten mit Zitat
Steht der Codeabschnitt den du gepostet hast in ner Schleife?
MFG DamienX

Von Noob zu noob: Eigentlich sehe ich keinen großen Fehler!
Wenn du KeyDown genommen hättest wärs was anderes
aber wenn das nicht in ner Schleife steht dann müsstest
du nen größeren Codeausschnitt posten!!!!
 

gamble

BeitragDo, Apr 14, 2005 8:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahrscheinlich weil dein Programm zu schnell läuft. Wenn du z.B einen Timer für die Animation erstellst sollte das "irgendwie" klappen Mr. Green
 

Gast

BeitragDo, Apr 14, 2005 11:40
Antworten mit Zitat
Jo würd ich auch sagen:

Zitat von Hubsi:

BlitzBasic: [AUSKLAPPEN]

If MilliSecs() > timer + zeitabschnitt ;(z.B. 3000 für 3 sek)
MilliSecs() = timer
;Aktion die er machen soll
EndIf



Es wird also überprüft ob die bereits vergangene Zeit größer einer vorher gespeicherten Zeit + eine Zeitspanne (welche du halt willst) vergangen ist und falls ja wird die aktuelle Zeit zwischengespeichert und lustige Sachen ausgeführt.

MFG DamienX

Chester

BeitragFr, Apr 15, 2005 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
so langsam glaube ich dass die ani gar nicht zu schnell ist, sondern das irgendwat nicht stimmt. denn egal mit welcher timerzeit, dass ist immer wie ein schalter:
Ich drücke die Leertaste -> dann ist der arm sofort oben
ich drücke nochmal die leertaste -> dann ist der arm sofort wieder unten

BlitzBasic: [AUSKLAPPEN]

Type spieler
Field weapon
End Type



Graphics3D 640,480,0,2
SetBuffer BackBuffer()
main_cam=CreateCamera()
CameraClsColor main_cam,0,255,255
CameraViewport main_cam,0,0,640,480


main_light=CreateLight(1)
RotateEntity main_light,45,0,0

Global body=LoadAnimMesh(\"meshs\koerper\player_weapon.b3d\")

Global beine=LoadAnimMesh(\"meshs\beine\player_run.b3d\")

Global player = CreateMesh()
AddMesh player,beine
AddMesh player,body

PositionEntity main_cam,0,30,-500
PointEntity main_cam,player
PositionEntity main_cam,0,300,-500
RotateEntity main_cam,10,0,0

RotateEntity body,0,180,0
RotateEntity beine,0,180,0

Global spieler.spieler = New spieler

Repeat
Cls
If MilliSecs() > timer +10
timer=MilliSecs()


If KeyDown(208) Then
Animate beine,1,-1,1,0
Else If KeyDown(200)
Animate beine,1,1,1,0
Else
Animate beine,1,1,0,0
EndIf



If KeyDown(203) Then
TurnEntity beine,0,2,0
TurnEntity body,0,2,0
EndIf
If KeyDown(205) Then
TurnEntity beine,0,-2,0
TurnEntity body,0,-2,0
EndIf

If KeyHit(57) spieler\weapon = spieler\weapon + 1
If spieler\weapon = 2 Then spieler\weapon = 0

If spieler\weapon = 0 Animate body,3,1 ,0,0
If spieler\weapon = 1 Animate body,3,-1,0,0



UpdateWorld()
RenderWorld()
Color 0,0,0
Text 10,10,spieler\weapon

FlushKeys()
Flip
EndIf
Until KeyHit(1)


FreeEntity player
ClearWorld()
End


This is my Code ^^

Edit: @DamienX
BlitzBasic: [AUSKLAPPEN]

MilliSecs() = timer ; <- LOL?
timer=MilliSecs() ; LOL! :wink:

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragFr, Apr 15, 2005 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

If spieler\weapon = 0 And zeit + 250 < MilliSecs() Then Animate body,3,1 ,0,0 : zeit=MilliSecs()
If spieler\weapon = 1 And zeit + 250 < MilliSecs() Then Animate body,3,-1,0,0 : zeit=MilliSecs()

So muss es funzen! Ich verstehe zwar überhaupt nichts von B3D aber so muss es einfach funzen. MFG Blitzmaker

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group