Newton : Panzer

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ToeB

Betreff: Newton : Panzer

BeitragFr, Sep 24, 2010 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte mal ein kleines Testprojekt mit einem Panzer machen, der halt mit der Newton engine Läuft. Dafür erstelle ich ein "JointVehicle" und 8 Tires (phJointVehicleAddTires). Jetzt hab ich aber das Problem, das die Räder positionen immer "NaN" sind. So hab ich das gemacht (aus dem Vehicle beispiel im prinziep kopiert) :
Code: [AUSKLAPPEN]
Function CreateTank.TTank( r=255, g=255, b=255 )
   tmp.TTAnk = New TTank
   tmp\mesh = CopyEntity( Panzer )
   PositionEntity tmp\mesh, 0, 0, 0
   EntityColor tmp\mesh, r, g, b
   tmp\BODY = FindChild( tmp\mesh, "KÖRPER" )
   tmp\TOWER = FindChild( tmp\mesh, "TURM" )
   tmp\GUN = FindChild( tmp\mesh, "KANNONE" )
   tmp\ENDE = FindChild( tmp\mesh, "ENDE" )
   tmp\LOOK = FindChild( tmp\mesh, "LOOK" )
   tmp\base = phxCreateBox(4, 5, 8, 10)
   phBodySetPos(tmp\base\body,0,0,0)
   phBodySetVel(tmp\base\body,0,0,0)
   phBodySetMat(tmp\base\body,matBody)
   tmp\base\mesh = tmp\mesh
   tmp\veh = phJointVehicleCreate( 0, 0, 0, tmp\base\body)
   CamPiv[0] = CreatePivot( tmp\mesh )
   CamPiv[1] = CreatePivot( CamPiv[0] )
   CamPiv[2] = CreatePivot( CamPiv[0] )
   PositionEntity CamPiv[1], 0, 10, -20
   PositionEntity CamPiv[2], 0, 4, 5
   For i = 0 To 3
      tmp\wheel_r[i] = CopyEntity( Tire )
      tmp\wheel_l[i] = CopyEntity( Tire )
                                  ;Vehicle,x,y,z,nx,ny,nz,mass,width,radius,shock,spring,lenght,mat
      tmp\tire_r[i] = phJointVehicleAddTire(tmp\veh,8,-4,i,-1, 0, 0,0.1 ,0.4  ,2     ,136.4,8651.0,10.3  ,0  )
      tmp\tire_l[i] = phJointVehicleAddTire(tmp\veh,-8,-4,i,-1, 0, 0,0.1 ,0.4  ,    2,136.4,8651.0,10.3  ,0  )
   Next
   Return tmp
End Function

Function UpdatePlayer()
   For tmp.TTank = Each TTank
      For i = 0 To 3
         PositionEntity tmp\wheel_r[i],phJointVehicleGetTireX(tmp\veh,tmp\tire_r[i]),phJointVehicleGetTireY(tmp\veh,tmp\tire_r[i]),phJointVehicleGetTireZ(tmp\veh,tmp\tire_r[i])
         RotateEntity tmp\wheel_r[i],phJointVehicleGetTirePitch(tmp\veh,tmp\tire_r[i]),phJointVehicleGetTireYaw(tmp\veh,tmp\tire_r[i]),phJointVehicleGetTireRoll(tmp\veh,tmp\tire_r[i]),1
         PositionEntity tmp\wheel_l[i],phJointVehicleGetTireX(tmp\veh,tmp\tire_l[i]),phJointVehicleGetTireY(tmp\veh,tmp\tire_l[i]),phJointVehicleGetTireZ(tmp\veh,tmp\tire_l[i])
         RotateEntity tmp\wheel_l[i],phJointVehicleGetTirePitch(tmp\veh,tmp\tire_l[i]),phJointVehicleGetTireYaw(tmp\veh,tmp\tire_l[i]),phJointVehicleGetTireRoll(tmp\veh,tmp\tire_l[i]),1
         DebugLog EntityX(tmp\wheel_r[i])+","+EntityY(tmp\wheel_r[i])+","+EntityZ(tmp\wheel_r[i])
      Next
   Next
End Function



Aber bei dem Debuglog zeigt er mir nur
Code: [AUSKLAPPEN]
NaN,NaN,NaN

an :/

Ich hoffe ihr könnt mir da weiterhelfen, villeicht mach ich ja was falsch...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Lastmayday

BeitragFr, Sep 24, 2010 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
tag,

NaN = Not a Number. heißt das du sqr(0) und oder 0 / 0 rechnest.

mfg Lastmayday

ToeB

BeitragFr, Sep 24, 2010 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank, das weiß ich, aber da ich nirgentwo mit wurzel artbeite (höchtens die NewtonDLL), kann ich das auch nicht beheben Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ToeB

BeitragFr, Sep 24, 2010 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah habs gelöst, lag an dem Vehicle erstellen.

Mal ne andere Frage : Wie realisiere ich am besten mit Newton Panzerketten um die Räder ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Silver_Knee

BeitragSa, Sep 25, 2010 1:01
Antworten mit Zitat
Benutzer-Profile anzeigen
entweder du animierst ein mesh oder du lässt die textur fahren

ToeB

BeitragSa, Sep 25, 2010 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja hab ich jetzt auch dran gedacht Wink Dazu noch ne Frage :

Ich habe an jeder seite ja 4 Räder. Jetzt sind die beiden mittleren räder auf dem Boden und die beiden aüßeren ein stückchen nach oben versetzt (so wie bei nem Panzer). Jetzt ist es aber so, das ich ALLE Räder gleich beschleunige. Das hat zu folge das die beiden Aüßerren (oder die die nicht den Boden berühren) schneller drehen als die auf dem Boden.

Kann ich der NewtonEngine irgentwie sagen, das die Räder "Zusammen" gehören und sich, egal welches Rad beschleunigt wird, immer gleichschnell drehen müssen ?

Und so sehen die Räder aus :
user posted image

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Silver_Knee

BeitragSa, Sep 25, 2010 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
beschleunige doch nur ein rad und setz die anderen räder auf die gleiche Drehung. Geht das net?

M0rgenstern

BeitragSa, Sep 25, 2010 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß jetzt nicht wie die Newton Enginge funktioniert, aber spontan würde ich folgendes sagen:
Die beiden Räder mit Bodenkontakt beschleunigen und den anderen beiden Rädern einen Rotationspunkt geben und auf die Kollision mit der Kette reagieren lassen.
Damit drehen die sich nur so schnell wie die Kette sich bewegt.

Lg, M0rgenstern

ToeB

BeitragSo, Sep 26, 2010 0:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das problem ist ja das ich nur eine Graphische Kette habe keine Phyiskalische...

Trotzdem danke !

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group