Well, to be honest it was my fault Wolron .. I did edit my second post. Now the guilt got the better of me ... here's a bit of very simple code old code I had to get you started ... Now this isn't a GT4 beater ;)
Graphics3D 640,480,16,1
Global plane = CreatePlane():EntityColor plane, 50,50,100:EntityAlpha plane, .75
texture = CreateTexture( 16,16)
SetBuffer TextureBuffer( texture )
Color 0,0,0:Rect 0,0,16,16,1
Color 50,50,200:Rect 0,0,16,16,0
SetBuffer BackBuffer()
ScaleTexture texture,20,20
EntityTexture plane, texture
FreeTexture texture
Global camera = CreateCamera():PositionEntity camera, 0, 50, -100
Global mirror = CreateMirror()
Global light = CreateLight():RotateEntity light , 15,-45,0
Type Car
Field Model
Field Wheel[3]
Field WheelRotation#
Field Wheelradius#
Field TopSpeed#
Field Drag#
Field Acceleration#
Field Brakes#
Field Speed#
Field Vx#, Vy#, Vz#
End Type
Global MyCar.car = CARcreate( 4, 3, 6, 2, 3 )
While Not KeyDown(1)
CARupdate( MyCar )
PointEntity camera, MyCar\model
CameraZoom camera, EntityDistance( camera, MyCar\model ) / 100
RenderWorld()
Flip
Wend
;==========================================
;==========================================
;==========================================
Function CARupdate( c. car )
;user input
jx# = KeyDown(203) - KeyDown(205 )
jb# = KeyDown( 200)
TurnEntity c\Model, 0, jx * 3.0,0
For w = 0 To 1
RotateEntity c\wheel[w], 0 , jx*45, 0
Next
c\Speed = LIMIT ( c\Speed + ( jb * c\Acceleration ) - ( (Not jb ) * c\Brakes ) , 0, c\TopSpeed )
TFormVector 0,0,(1.0 - c\drag ), c\Model, 0
c\Vx = ( c\Vx * c\drag ) + ( TFormedX() * c\Speed )
c\Vz = ( c\Vz * c\drag ) + ( TFormedZ() * c\Speed )
c\Vy = ( c\Vy * c\drag ) + ( TFormedY() * c\Speed )
speed# = Sqr( c\Vx*c\Vx + c\Vy*c\Vy + c\Vz*c\Vz )
TranslateEntity c\Model, c\Vx, c\vy , c\Vz
c\WheelRotation = c\WheelRotation + Speed * 90.0 / ( Pi * c\WheelRadius )
For w = 0 To 3
RotateEntity c\wheel[ w] , c\WheelRotation, EntityYaw( c\wheel[w] ) , 0
Next
End Function
;==========================================
;==========================================
;==========================================
Function CARcreate.car( w#, h#, d# , tw# , tr# )
c.car = New car
c\Acceleration = .0075
c\Brakes = .005
c\Drag = .95
c\Speed = 0.0
c\TopSpeed = 1.25
c\Wheelradius = tw
c\Model = CreateCube()
FitMesh c\Model , -w,-h,-d, w*2,h*2,d*2
UpdateNormals c\Model
EntityColor c\Model,255,255,0
Wheel = CreateCylinder( 5 )
RotateMesh Wheel,0,0,90
ScaleMesh Wheel , tw,tr,tr
UpdateNormals Wheel
EntityColor Wheel, 64,64,64
For l= 0 To 3
dx = ( l >0 And l<3 ) - ( l = 0 Or l = 3 )
dz = ( l < 2 ) - ( l > 1 )
c\wheel[l] = CopyEntity(wheel , c\Model )
PositionEntity c\wheel[l], w*dx , -h , d*dz
Next
PositionEntity c\Model, 0 , tr+h, 0
FreeEntity Wheel
Return c
End Function
;==========================================
;==========================================
;==========================================
Function LIMIT#(n#,n1#,n2#)
If n>n2 Then n=n2
If n<n1 Then n=n1
Return n
End Function
|