Bewegung auf Zeit

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Flausch96

Betreff: Bewegung auf Zeit

BeitragFr, Jul 01, 2011 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute. Ich habe in Blitz3d ein Terrain und einen Würfel der sich nach oben bewegt erstellt. Wie stell ich jetzt ein das der Würfel sich nicht ewig nach oben bewegt, sondern nach einiger Zeit wieder zurück zu seiner ursprünglichen position.

Hier ist der code:

BlitzBasic: [AUSKLAPPEN]
;-------------------------------------------------
Graphics3D 640, 480, 16, 1

SetBuffer BackBuffer()

camera = CreateCamera()

PositionEntity camera, 1, 1, 1

light = CreateLight()

RotateEntity light, 90, 0, 0

terrain = CreateTerrain(32)

TerrainDetail terrain, 4000, True

ScaleEntity terrain, 1, 50, 1

Wuerfel = CreateCube()

PositionEntity Wuerfel,0,5,5
;--------------------------------------------------
While Not KeyHit(1)
;Hier ist die Stelle die ich meine
MoveEntity Wuerfel,0,0.1,0

If KeyDown(205) = 1 Then TurnEntity camera, 0, -1, 0

If KeyDown(203) = 1 Then TurnEntity camera, 0, 1, 0

If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -0.1

If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 0.1

x# = EntityX(camera)

y# = EntityY(camera)

z# = EntityZ(camera)

terra_y# = TerrainY(terrain, x#, y#, z#) + 5

PositionEntity camera, x#, terra_y#, z#

RenderWorld

Flip

Wend
;----------------------------------------------------
End


Hoffe ihr habt verstanden was ich meine.

Xeres

Moderator

BeitragFr, Jul 01, 2011 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder Zeit messen mit Millisecs oder Koordinaten vergleichen und ab einer bestimmten Höhe die Bewegung umkehren.

Edit: Blitz3D oder BMax?
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)

Flausch96

BeitragFr, Jul 01, 2011 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Möchte es gerne mit Milisecs Machen, könntest du mir erkären wie ich das mache ?

Ana

BeitragFr, Jul 01, 2011 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ungefähr so:

BlitzMax: [AUSKLAPPEN]
Type MovingQuad
Field StartZeit:Int
Field Laufzeit:Int
Field x:Int
Field y:Int

Method Move()
If MilliSecs() < StartZeit + Laufzeitstartzeit
x:+ 1
y:+ 1
EndIf
End Method

End Type

Function CreateMovingQuad:movingquad (LaufZeit:Int)
Local mq:movingquad = New MovingQuad
mq.startzeit = MilliSecs()
mq.laufzeit = laufzeit
Return mq
End Function


Du gibst deinem Objekt einen Anfangszeitpunkt und eine Dauer. Der Anfangszeitpunkt wird dem aktuellem Millisecs wert gleich gesetzt. Wenn nun die Startzeit plus die Dauer kleiner ist als die Aktuelle Millisecs Zeit, dann muss mehr Zeit als die Dauer beschreibt vergangen sein.
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Xeres

Moderator

BeitragFr, Jul 01, 2011 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So geht's:
BlitzBasic: [AUSKLAPPEN]

Repeat

ms=MilliSecs() ;* Für mehrere Aufrufe Zwischenspeichern

If Zeit+2500 < ms Then ;* 2,5 Sekunden sind vergangen...
Zeit=ms ;* Zeit Nachstellen
;* Wenn die Aktuelle Zeit (ms) größer ist als die
;* Gespeicherte (Zeit) Plus die gewünschte Dauer,
;* folgt die Reaktion z.B. Variablen ändern o.ä.
EndIf

Until [...]
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)

Flausch96

BeitragFr, Jul 01, 2011 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke, damit kann ich schonmal was anfangen Razz Razz

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group