B3D CarEngine: Probleme mit DPE1.0b

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Felat

Betreff: B3D CarEngine: Probleme mit DPE1.0b

BeitragMo, Sep 22, 2008 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum springt mein Auto herum?
Und könnte jemand mir helfen mit den richtigen Rotation der Reifen, so dass die Reifen drehen richtig...
Ich habe DevilPhysicEngine 1.0b benutzt.

Danke.

Code: [AUSKLAPPEN]

;eldernsoft car game engine v1.0
Include "DevilPhysicEngine.bb"

Graphics3D 800,600,16,2

Global mX#=0
Global MY#=0
Global mZ#=0

Dim car_mtire(100); visual car tires
Dim car_ptire(100); tire physics
Dim car_tire(100) ; physic detection tires(grey tires)

cam=CreateCamera()
camP=CreatePivot()
EntityParent cam,camp
PositionEntity camp,0,2,0

light=CreateLight()

InitPhysics()
createscene()

CreateCarTire("car_tire1.b3d",3,3,3, 0.1,0.1, 1.2,0.6, 1, 500, 0.1)
CreateCarTire("car_tire1.b3d",-3,3,3, 0.1,0.1, 1.2,0.6, 2, 500, 0.1)
CreateCarTire("car_tire1.b3d",3,3,-3, 0.1,0.1, 1.2,0.6, 3, 500, 0.1)
CreateCarTire("car_tire1.b3d",-3,3,-3, 0.1,0.1, 1.2,0.6, 4, 500, 0.1)

SetPhysicMeshRotation(car_ptire(2),180,180,90)
SetPhysicMeshRotation(car_ptire(4),180,180,90)

CenterTiresX#=ArithmeticMiddleX(car_tire(1),car_tire(2),car_tire(3),car_tire(4))
CenterTiresY#=ArithmeticMiddleY(car_tire(1),car_tire(2),car_tire(3),car_tire(4))
CenterTiresZ#=ArithmeticMiddleZ(car_tire(1),car_tire(2),car_tire(3),car_tire(4))

cube=CreateCube()
bodycubep=SetPhysicMesh(cube,"cube",10000)
SetPhysicMeshPosition(bodycubep, CenterTiresX#, CenterTiresY#+4, CenterTiresZ#)

applytire(bodycubep,car_ptire(1))
applytire(bodycubep,car_ptire(2))
applytire(bodycubep,car_ptire(3))
applytire(bodycubep,car_ptire(4))


SetPhysicGravity(1)
While Not KeyHit(1)

SetPhysicMeshTwist(car_ptire(1),1,0,0)
SetPhysicMeshTwist(car_ptire(2),1,0,0)
SetPhysicMeshTwist(car_ptire(3),1,0,0)
SetPhysicMeshTwist(car_ptire(4),1,0,0)

UpdatePhysics(.05)

;PositionEntity camP,EntitysX(car_mtire(1))+mX#,EntitysY(car_mtire(1))+mY#+2.2,EntitysZ(car_mtire(1))+mZ#-5.5

If KeyDown(200) Then MoveEntity cam,0,0,1
If KeyDown(208) Then MoveEntity cam,0,0,-1
If KeyDown(203) Then TurnEntity cam,0,3,0
If KeyDown(205) Then TurnEntity cam,0,-3,0
If KeyDown(36) Then MoveEntity cam,0,1,0
If KeyDown(50) Then MoveEntity cam,0,-1,0

RenderWorld
UpdateWorld
Text 10,10,goimp#
Flip
Wend
FreePhysics()
End

Function createscene()

   area=CreateCube()
   ScaleEntity area,100,1,100
   asphalt_tex=LoadTexture("asphalt_tex.jpg")
   ScaleTexture asphalt_tex,.04,.04
   EntityTexture area,asphalt_tex
   SetStaticPhysicMesh(area, "Cube", 0, -1, 0)
   
   wire_tex=LoadTexture("wire_tex.jpg")
   giv1=CreateCube()
   ScaleEntity giv1,100,10,.1
   ScaleTexture wire_tex,.01,.1
   PositionEntity giv1,0,0,100
   EntityTexture giv1,wire_tex
   SetStaticPhysicMesh(giv1, "Cube", 0, 0, 100)

End Function

Function CreateCarTire(tireloc$,x#,y#,z#,mx#,mz#,px#,pz#,number,mass#,a#=0)
   car_mtire(number)=LoadMesh(tireloc$)
   ScaleMesh car_mtire(number),mx#,mz#,mx#
   RotateEntity car_mtire(number),0,0,90
   car_tire(number)=CreateCylinder(32)
   EntityAlpha car_tire(number),a#
   ScaleMesh car_tire(number),px#,pz#,px#
   car_ptire(number)=SetPhysicMesh(car_tire(number), "Cylinder", mass#) ;1gram = 10 units.. calculate yourself..
   SetPhysicMeshRotation(car_ptire(number),0,0,90)
   SetPhysicMeshPosition(car_ptire(number),x#,y#,z#)
   EntityParent car_mtire(number),car_tire(number)
End Function

Function applytire(tire1,tire2) ; location of the tire
   AttachPhysicMesh(tire1,tire2)
End Function

Function ArithmeticMiddleX(tire1,tire2,tire3,tire4)
   X#=(EntityX(tire1,1)+EntityX(tire2,1)+EntityX(tire3,1)+EntityX(tire4,1))/4
   Return X#
End Function

Function ArithmeticMiddleY(tire1,tire2,tire3,tire4)
   Y#=(EntityY(tire1,1)+EntityY(tire2,1)+EntityY(tire3,1)+EntityY(tire4,1))/4
   Return Y#
End Function

Function ArithmeticMiddleZ(tire1,tire2,tire3,tire4)
   Z#=(EntityZ(tire1,1)+EntityZ(tire2,1)+EntityZ(tire3,1)+EntityZ(tire4,1))/4
   Return Z#
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group