TurnEntity
Übersicht

![]() |
megabyteBetreff: TurnEntity |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi @ all
und wieder ein neuer noob im Forum ![]() Ich habe ein Problem mit dem Befehl TurnEntity. Mein Vorhaben vorweg Ich versuche eine Sphere in abhängikeit der Zeit zu drehen. Ich versuche also eine Sphere in 24 Stdunden einmal um sich selbst drehen zu lassen. Nun meine Frage zu dem TurnEntity: Ich habe mir die OH von http://www.blitzbase.de/ kopiert. In dieser steht follgendes: Yaw = Yawwinkel 0-360 Grad (Y-Achse) Verstehe ich das Richtig das wenn ich den Yaw auf 0.1 setze -> TurnEntity Sphere, 0, 0.1, 0 -> das dies der Winkel ist um den die Sphere gedreht wird? (immer wieder - den unterschied zu RotateEntity habe ich mir auch schon angesehen, funktioniert aber leider auch nicht) Damit ihr Euch einen überblick verschaffen könnt ist hier mein Code: MAIN Code: [AUSKLAPPEN] Graphics3D 1024,768,32,2
SetBuffer BackBuffer() Include "globalvar.bb" Include "functions.bb" Global kamera = CreateCamera() EntityType kamera, 1 PositionEntity kamera, 0,0,0 Include "erde.bb" While Not KeyDown(1) ;ESC zeit move_cam wframe ;TurnEntity erde, 0, rotation#(1440,erde), 0 ;rotation#(tester%,erde) TurnEntity erde, 0, rotation#(1440), 0 Collisions 1, 2, 2, 2 UpdateWorld RenderWorld Text 0,0, "Zeit = " + zeit_jahre + " Jahre " + zeit_monate + " Monate " + zeit_tage + " Tage " + zeit_stunden + " Stunden " + zeit_minuten + " Minuten " + zeit_sekunden + " Sekunden" Text 0,15,"Faktor = x" + zeit_multiplayer_value Flip Wend End FUNCTIONS Code: [AUSKLAPPEN] ;Globale Variablen für Funktionen
;move_cam (Bewegt die Kamera) Global move_cam_schwenken_runter = 200 ;Pfeil rauf Global move_cam_schwenken_rauf = 208 ;Pfeil runter Global move_cam_schwenken_links = 203 ;Pfeil links Global move_cam_schwenken_rechts = 205 ;Pfeil rechts Global move_cam_schwenken_rolle_links = 44 ;Y Global move_cam_schwenken_rolle_rechts = 45 ;X Global move_cam_bewegen_vor = 17 ;W Global move_cam_bewegen_zurueck = 31 ;S Global move_cam_bewegen_links = 30 ;A Global move_cam_bewegen_rechts = 32 ;D Global move_cam_bewegen_hoch = 18 ;A Global move_cam_bewegen_runter = 46 ;D Global move_cam_speed_multiplayer_key_up = 201 ;Bild rauf Global move_cam_speed_multiplayer_key_down = 209 ;Bild runter Global move_cam_speed_multiplayer_value = 10 ;um wie viel schneller Global move_cam_speed_multiplayer_hits = 1 Global move_cam_schwenken_speed = 1 ;Wie schnell soll die Kamera geschwenkt werden Global move_cam_bewegen_speed = 1 ;Wie schnell soll die Kamera bewegt werden ;wframe (Schaltet den Wireframe-Modus an/aus) Global wiframe ;zeit (Die Zeit) Global zeit_sekunden = 0 Global zeit_minuten = 0 Global zeit_stunden = 0 Global zeit_tage = 0 Global zeit_monate = 0 Global zeit_jahre = 0 Global zeit_millisecs = MilliSecs() Global zeit Global zeit_multiplayer_up = 199 ;Pos1 Global zeit_multiplayer_down = 207 ;Ende Global zeit_multiplayer_value = 1 Global exp_multiplayer ;rotation (berechnet die Drehgeschwindigkei) ;Global rotation_speed# Global tmp_zeit_minuten = zeit_minuten ;Funktionen--------------------------------------------------------------------------------------------- Function move_cam() If KeyDown(move_cam_speed_multiplayer_key_up) And KeyHit(move_cam_speed_multiplayer_key_up) And move_cam_speed_multiplayer_hits < 10 Then move_cam_schwenken_speed = move_cam_schwenken_speed * move_cam_speed_multiplayer_value move_cam_bewegen_speed = move_cam_bewegen_speed * move_cam_speed_multiplayer_value move_cam_speed_multiplayer_hits = move_cam_speed_multiplayer_hits + 1 End If If KeyDown(move_cam_speed_multiplayer_key_down) And KeyHit(move_cam_speed_multiplayer_key_down) And move_cam_speed_multiplayer_hits > 1 Then move_cam_schwenken_speed = move_cam_schwenken_speed / move_cam_speed_multiplayer_value move_cam_bewegen_speed = move_cam_bewegen_speed / move_cam_speed_multiplayer_value move_cam_speed_multiplayer_hits = move_cam_speed_multiplayer_hits - 1 End If If KeyDown(move_cam_schwenken_runter) Then ;Kamera nach unten schwenken TurnEntity kamera, move_cam_schwenken_speed, 0, 0 End If If KeyDown(move_cam_schwenken_rauf) Then ;Kamera nach oben schwenken TurnEntity kamera, -move_cam_schwenken_speed, 0, 0 End If If KeyDown(move_cam_schwenken_links) Then ;Kamera nach links schwenken TurnEntity kamera, 0, move_cam_schwenken_speed,0 End If If KeyDown(move_cam_schwenken_rechts) Then ;Kamera nach rechts schwenken TurnEntity kamera, 0, -move_cam_schwenken_speed,0 End If If KeyDown(move_cam_schwenken_rolle_links) Then ;Kamera nach links schwenken TurnEntity kamera, 0, 0, move_cam_schwenken_speed End If If KeyDown(move_cam_schwenken_rolle_rechts) Then ;Kamera nach rechts schwenken TurnEntity kamera, 0, 0, -move_cam_schwenken_speed End If If KeyDown(move_cam_bewegen_vor) Then ;Kamera nach vorne bewegen MoveEntity kamera, 0, 0, move_cam_bewegen_speed End If If KeyDown(move_cam_bewegen_zurueck) Then ;Kamera nach hinten bewegen MoveEntity kamera, 0, 0, -move_cam_bewegen_speed End If If KeyDown(move_cam_bewegen_links) Then ;Kamera nach links bewegen (strafen) MoveEntity kamera, -move_cam_bewegen_speed, 0, 0 End If If KeyDown(move_cam_bewegen_rechts) Then ;Kamera nach rechts bewegen (strafen) MoveEntity kamera, move_cam_bewegen_speed, 0, 0 End If If KeyDown(move_cam_bewegen_hoch) Then ;Kamera nach oben bewegen (strafen) MoveEntity kamera, 0, move_cam_bewegen_speed, 0 End If If KeyDown(move_cam_bewegen_runter) Then ;Kamera nach unten bewegen (strafen) MoveEntity kamera, 0, -move_cam_bewegen_speed, 0 End If End Function Function wframe() If KeyHit(88) Then ;88 = F12 wiframe = 1 - wiframe WireFrame wiframe End If End Function Function zeit() If KeyDown(zeit_multiplayer_up) And KeyHit(zeit_multiplayer_up) And zeit_multiplayer_value < 20 Then zeit_multiplayer_value = zeit_multiplayer_value + 1 End If If KeyDown(zeit_multiplayer_down) And KeyHit(zeit_multiplayer_down) And zeit_multiplayer_value > 0 Then zeit_multiplayer_value = zeit_multiplayer_value - 1 End If zeit = MilliSecs() - zeit_millisecs If zeit >= 1000 Then If zeit_multiplayer_value = 0 Then exp_multiplayer = 0 ElseIf zeit_multiplayer_value = 1 Then exp_multiplayer = 1 Else exp_multiplayer = exponent(2,zeit_multiplayer_value) End If zeit_sekunden = zeit_sekunden + exp_multiplayer zeit_millisecs = MilliSecs() End If While zeit_sekunden > 59 zeit_sekunden = zeit_sekunden - 60 zeit_minuten = zeit_minuten + 1 If zeit_minuten > 59 Then zeit_minuten = zeit_minuten - 60 zeit_stunden = zeit_stunden + 1 End If If zeit_stunden > 23 Then zeit_stunden = zeit_stunden - 24 zeit_tage = zeit_tage + 1 End If If zeit_tage > 29 Then zeit_tage = zeit_tage - 30 zeit_monate = zeit_monate + 1 End If If zeit_monate > 11 Then zeit_monate = zeit_monate - 12 zeit_jahre = zeit_jahre + 1 End If Wend End Function Function rotation#(volle_drehung_in) If tmp_zeit_minuten <> zeit_minuten Then tmp_zeit_minuten = zeit_minuten - tmp_zeit_minuten Return rotation_speed# = 360 / volle_drehung_in * tmp_zeit_minuten tmp_zeit_minuten = zeit_minuten Else Return rotation_speed# = 0 End If End Function Function exponent#(Basis#,Exponent#) ;Exponentialrechner If Exponent# = 0 Then ;Ist der Exponent 0 ist das Ergebnis immer 1 Basis# = 1 Else tmp_Basis# = Basis# While exponent# > 1 Basis# = Basis# * tmp_Basis# exponent# = exponent# - 1 Wend End If Return Basis# End Function ERDE Code: [AUSKLAPPEN] Global erde = CreateSphere(32)
EntityType erde, 2 ScaleEntity erde, 200 ,200, 200 Global erde_tex = LoadTexture("texturen/erde/erde.jpg") EntityTexture erde, erde_tex, 0, 0 PositionEntity erde, 0, 0, 300 Ich weis, es kann sein das es noch ein Par Variablen gibt die ich deklariert habe die nichts zu bedeuten haben. Ich bin halt schwer am rumtesten. Über hilfe würde ich mich sehr freuen. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das soll wohl eine Weltkugel sein. Um sie genau einmal in 24h um 360° zu drehen, gibt es verschiedene Wege... Aber eines vorweg:
RotateEntity setzt einen bestimmten Winkel absolut TurnEntity dreht um einen relativen Winkel um Speziel für dein Anliegen, würde ich RotateEntity dafür nehmen. Den Winkel kannst du dann ganz einfach so ausrechnen winkel=zeit*360/24 oder kürzer winkel=zeit*15... Um die Zeit herrauszufinden, kannst du ql:CurrentTime benutzen. Die Summen musst du dann allerdings noch aus dem String noch parsen. Siehe dazu ql:left, ql:mid und ql:right... Die Strings kannst du einfach in Integerzahlen umwandel, wenn du sie in eine Variable mit Int(string) einsetzt. Die Zeit muß dann noch komplett umgerechnet werden. zB zeit#=stunden+minuten/60... |
||
![]() |
megabyte |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi hectic
erstmal danke das du dich bemühst mir zu helfen. Vieleicht kannst du mir auch sagen warum ich bei follgender Function immer das Ergebnis = 1 zurückbekomme Code: [AUSKLAPPEN] Function rotation#(volle_drehung_in)
Return rotation_speed# = ((360 / volle_drehung_in) * zeit_stunden) End Function Wobei ich hier die Variable "volle_drehung_in" auf 24 setze und die Variable "zeit_stunden" wird automatisch icrementiert. Aber die Function Returnt immer 1 und ich sehe nicht warum. |
||
![]() |
megabyte |
![]() Antworten mit Zitat ![]() |
---|---|---|
oki sorry ich habs
Ist natürlich ![]() Code: [AUSKLAPPEN] Function rotation#(volle_drehung_in)
Return rotation_speed# = ((360 / volle_drehung_in) * zeit_stunden) End Function Jetzt habe ich das so gemacht und es geht Code: [AUSKLAPPEN] Function rotation#(volle_drehung_in)
Return ((360 / volle_drehung_in) * zeit_stunden) End Function Nochmals danke für deine hilfe |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group