Help! Sinus-Animation!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Okyo

Betreff: Help! Sinus-Animation!

BeitragSo, Jul 30, 2006 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich habe ein Problem mit der Animation meiner Waffe!

Ich habe eine typische 3D-Shooter Perspektive und eine Waffe and die R-Cameraseite gelinkt!(s.ä.Doom)

Damit das alles cooler erscheint, wollte ich beim laufen die Waffe einbißchen animieren!

Dazu habe ich folgenden Code!
...................................
Zeit#=MilliSecs()/3
Pendeln#=Sin(Zeit)*0.08

If KeyDown(200) Then
MoveEntity Weapon,Pendeln,0,0
EndIf
.................................
Hierbei pendelt die Waffe in einer angenehmen Geschwindigkeit auf der X-Achse etwas von Rechts nach Links und wieder zurück, wenn die Pfeiltaste (Oben)gedrückt wird!

PROBLEM KONKRET:

Wenn ich die Pfeiltaste nach kurzem Drücken wieder loslasse, pendelt die Waffe nicht wieder zurück auf ihre Ursprungskoordinaten! Die Waffe bleibt dort liegen, wenn ich die Taste losgelassen habe!
Die Waffe hat also nur die halbe Sinuswelle auf der X-Achse animiert und von dort aus startet sie dann die neue Sinus-Animation, wenn ich erneut auf Pfeiltaste (Oben) drücke!
D.h. auf blöd ist nach 10 Sekunden Laufen, die Waffe von ganz Rechts nach ganz Links gewandert!

Ich möchte aber, dass die Waffe wieder zurück auf ihren Ursprungspunkt geht und nicht mitten stehen bleibt, wenn ich die Taste wieder loslasse!

Thanx

TheProgrammer

BeitragSo, Jul 30, 2006 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz anstatt Moveentity einfach Positionentity.

Code: [AUSKLAPPEN]

Positionentity weapon,x#+Pendeln,y#,z#


Musst dann noch ein bischen mit dem Sin-Wert rumprobieren.
aktuelles Projekt: The last day of human being
 

Okyo

BeitragSo, Jul 30, 2006 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert zwar..aber das Ergebnis ist etwas hässlich, weil sich die Waffe dann ruckartig zurück zu seinem Ursprungspunkt bewegt! Vorher war das geschmeidiger...mit errechneten Zwischenwerten ...
trotzdem danke

TheProgrammer

BeitragSo, Jul 30, 2006 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit es nicht ruckelt, musst du sin() von 1-360° verwenden. Also eine Variable von 1-360 erhöhen und dann immer wieder auf 1 zurücksetzen.
aktuelles Projekt: The last day of human being
 

Okyo

BeitragSo, Jul 30, 2006 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Meinste mit MOD? Oder wie sollte das genau aussehen?

Jedenfalls...ich versuchte öfter "The Last Days of Human Being" downzuloaden..leider hats net gefunzt...haste noch nen anderen Link?

TheProgrammer

BeitragSo, Jul 30, 2006 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, der server is mal wieder, wie so oft, down. Sad Aber ich werde mich drum kümmern. Wink

Zu deinem Problem:

Code: [AUSKLAPPEN]

a = a + 1
if a = 360 then a = 0

positionentity weapon,x#+sin(a)*0.08,y#,z#


Musst einfach mal mit den Werten etwas rumprobieren.
aktuelles Projekt: The last day of human being

PowerProgrammer

BeitragSo, Jul 30, 2006 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist etwas schneller:
Code: [AUSKLAPPEN]
a = (a + 1) Mod 360
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Okyo

BeitragMo, Jul 31, 2006 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat gefunzt!
Habs so gelöst..
t#=((t# + 1) +3)Mod 360
Pendeln#=Sin(t#)*0.07

Thanx...

Kann man den Code bei deinem Spiel sehen?
Oder nur ne exe. zum downloaden?
 

Okyo

BeitragMo, Jul 31, 2006 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
nö,..das funzt auch net..das andere alles auch nicht...nach einer gewissen zeit..ist die waffe ganz woanders...?????

TheProgrammer

BeitragMo, Jul 31, 2006 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

camera = CreateCamera()
light = CreateLight()

RotateEntity light,0,90,0

cube = CreateCube()
UpdateNormals cube


While Not KeyHit(1)

 If KeyDown(57) Then a = (a + 5) Mod 360
 PositionEntity cube,Sin(a)*2,-3,10

 RenderWorld
 Flip
Wend
End


Also hier funktioniert alles.
Der Code von meinem Game ist übrigens net freigegeben.
aktuelles Projekt: The last day of human being
 

Okyo

BeitragMo, Jul 31, 2006 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, die Funktion ist schon richtig, und wenn ich nur die Pfeiltaste drücke, dann passt alles!

Problem ist aber: dass ich manchmal "Oben" und "Rechts"-Pfeiltaste und "Mouse" gleichzeitig bediene...hier kommen 3 verschiedene Dinge zusammen die sich rechnen!
 

Okyo

BeitragMo, Jul 31, 2006 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, alles passt perfekt! Hatte vergessen sie in die If Keyhit ..schleife zu legen!!
thanx...

Black Spider

BeitragDi, Aug 01, 2006 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hab nochmal n bischen dran rumgespielt, sodass die Waffe, wie bei Quake 4, wieder zu ihrer Ursprungsposition
bewegt wird, wenn man aufhört zu gehen.

Code: [AUSKLAPPEN]
Graphics3D 640,480,0,2
SetBuffer BackBuffer()

camera = CreateCamera()
light = CreateLight()

RotateEntity light,0,90,0

cube = CreateCube()
UpdateNormals cube


While Not KeyHit(1)

 If KeyDown(57) Then
 a = (a + 5) Mod 360
Else
 If (360 - a) < a Then
   If a < 360 Then a = a+5
 Else
   If a > 0 Then a = a-5
 End If
End If


 PositionEntity cube,Sin(a),-3,10
 RotateEntity cube,EntityPitch(cube),EntityYaw(cube),-Sin(a)*3

 RenderWorld
 Flip
Wend
End
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group