3d asteroids-mäßige physik (x,y achse)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Raoudi

Betreff: 3d asteroids-mäßige physik (x,y achse)

BeitragMi, Dez 28, 2005 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
problem: das schiff fliegt mit dem code logischerweise nur auf einer bahn, dh es fliegt immer in die richtung in die es gerade zeigt. soll aber wie bei asteroids sein

haufenweise tuts durchgeguckt, alle nur für 2d, mit draw funktionen usw. hilft mir nich weiter

screen:
http://img270.imageshack.us/img270/9017/cw32nh.jpg

BlitzBasic: [AUSKLAPPEN]
;### ship ###
For shi.ship = Each ship


If EntityCollided(shi\mesh,station_col) Then shi\speed = shi\speed/5

TurnEntity shi\mesh,0,0,shi\turning
MoveEntity shi\mesh,0,-shi\speed,0

shi\turning = shi\turning / 1.1
shi\speed = shi\speed / 1.005

If shi\speed > shi\speedmax Then shi\speed = shi\speedmax
If shi\speed < -(shi\speedmax/4) Then shi\speed = -(shi\speedmax/4)


;RotateEntity camerafocus, EntityPitch(shi\mesh),EntityYaw(shi\mesh),EntityRoll(shi\mesh)
;PositionEntity camerafocus,EntityX(shi\mesh),EntityY(shi\mesh),EntityZ(shi\mesh)
;MoveEntity camerafocus,0,-shi\speed,0

;camrange# = shi\speed*shi\speed
;If camrange > 300 Then camrange = 300

PositionEntity camera,EntityX(camera),EntityY(camera),70+camrange

If KeyDown(203) And KeyDown(205) = False ;pfeil links
shi\turning = shi\turning - shi\steering

EndIf
If KeyDown(205) And KeyDown(203) = False ;pfeil rechts
shi\turning = shi\turning + shi\steering

EndIf

If KeyDown(200) ;pfeil hoch

shi\speed = shi\speed+shi\accleration

EndIf

If KeyDown(208) ;pfeil runter
shi\speed = shi\speed-shi\accleration/2
EndIf




Next


(unwichtige sachen "entfernt")

Mr.Keks

BeitragMi, Dez 28, 2005 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst das in 3d genau so machen wie in 2d... das drawimage ist nicht entscheidend. Rolling Eyes

du musst den bewegungsvektor des schiffes zerlegen... also in eine geschwindigkeit entlang der x-ache und eine entlang der z-achse. wenn dein schiff in eine richtung beschleunigt, dann addierst du zu diesen beiden geschwindigkeiten. dafür brauchst du sin/cos(). außerdem musst du immer die alten werte *.95 oder so nehmen, damit sie sich verringern. schwierig zu erklären, so auf die schnelle... darum gibts ja eigentlich tutorials dafür. kannst dich ja mal mit waveblue austauschen! (http://www.blitz.inarie.de/viewtopic.php?t=759 & http://www.blitz.inarie.de/viewtopic.php?t=765)
MrKeks.net

BtbN

BeitragMi, Dez 28, 2005 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, aber ich verstehe nicht so ganz, was du möchtest.

Waveblue

BeitragMi, Dez 28, 2005 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Inarie hat Folgendes geschrieben:
kannst dich ja mal mit waveblue austauschen! (http://www.blitz.inarie.de/viewtopic.php?t=759 & http://www.blitz.inarie.de/viewtopic.php?t=765)


Bin schon zur Stelle!^^

BlitzBasic: [AUSKLAPPEN]
tempx1#=EntityX(player1mesh)         
tempz1#=EntityZ(player1mesh);Abspeichern der derzeitigen Position
If KeyDown(200) Then MoveEntity player1mesh,0,0,0.0025


TranslateEntity player1mesh,tempxdistance1#,0,tempzdistance1#

tempxdistance1#=EntityX(player1mesh)-tempx1
tempzdistance1#=EntityZ(player1mesh)-tempz1 ;die Distanz wird ermittelt. Diese legt das Raumschiff nun jeden Schleifendurchlauf zurück


Der Code bewirkt, dass das Raumschiff immer seine vorige Bewegung beibehält. das heisst, wenn du 90° zum unteren Bildschirmrand fliegst, du dann dein Raumschiff um 45° drehst(und kein Gas gibst), wird es trotzdem mit 90°weiterfliegen!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Raoudi

BeitragMi, Dez 28, 2005 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
thx euch allen, geht

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group