First off, i've only used the vehicle commands so far, and from what i've used, this addon seems pretty good, although it does have many problems (thats not me!)
But one problem i can't seem to fix is the steering of a car. If i fiddle with the settings, i either get quick steering response when the car is slow, and stupidly quick steering response when the car is at max speed, or stupidly slow steering when the car is slow, and still stupidly fast when the cars at max speed.
When the car is at max speed, its impossible to turn a corner, the car does a 180 on the slighest touch of turning. It also bounces like crazy when it goes over the smallest bump, and i've messed with vehicle mass, and gravity to my hearts content!
The code is below if it helps anyone.
rem ** GTRacing **
phy start
set display mode 1024, 768, 32
sync on
sync rate 30
autocam off
load object "Models/laguna_seca/laguna_seca.x",1
set object texture 1,1,0
set object transparency 1,4
set object smoothing 1,100
phy make rigid body static mesh 1
set ambient light 75
remstart
make object cube 2,1
position object 2,-79,7,39
yrotate object 2,-244
remend
load object "Models/car/merc.x",2
rotate limb 2,0,0,90,0
scale object 2,100,100,100
position object 2,-80,5,39
rem yrotate object 2,110
phy create vehicle 2
phy add vehicle body 2, 2.0, 0.6, 1.0, 0.0, 0.6, 0.0
phy add vehicle wheel 2, 2, 1.5, 0.3, 1.1, 0.6, 0.2, 0, 0
phy add vehicle wheel 2, 7, 1.5, 0.3, -1.1, 0.6, 0.2, 0, 1
phy add vehicle wheel 2, 1, -1.5, 0.3, -1.1, 0.6, 0.2, 1, 0
phy add vehicle wheel 2, 6, -1.5, 0.3, 1.1, 0.6, 0.2, 1, 1
phy set vehicle static friction 2, 3.0
phy set vehicle dynamic friction 2, 1.5
steeringDelta# = 0.05 : phy set vehicle steering delta 2, steeringDelta#
phy set vehicle max steering angle 2, 1.0
phy set vehicle suspension spring 2,400
phy set vehicle auto 2, 0
phy set vehicle wheel multiplier 2,0
phy set vehicle suspension spring 2,100
phy set vehicle brake torque 2,10
phy build vehicle 2
rem follower object invisible
make object sphere 3,10 : hide object 3
do
set cursor 0,0
rem print "Speed:",str$(spd#)
print "FPS:",screen fps()
print "Force: ",phy get vehicle motor force(2)
position object 3,object position x(2),object position y(2),object position z(2)
set object to object orientation 3,2
move object 3,-10
point object 3,object position x(2),object position y(2),object position z(2)
dist#=3.8 : high#=1.4 : angle#=object angle y(3)+90
set camera to follow object position x(2), object position y(2), object position z(2), angle#, dist#, high#, 10, 0
position object 3,object position x(2),object position y(2),object position z(2)
phy set vehicle motor force 2,0.0
gosub driveCar
phy update
sync
loop
driveCar:
`
rem movement
key = 0 : force#=0.0
if upkey ( ) = 1 then force#=600 : key = 1 : phy set vehicle wheel multiplier 2,50
if downkey ( ) = 1 then force#=-400.0 : key = 1 : phy set vehicle wheel multiplier 2,-50
if key = 0 then force#=0.0
phy set vehicle motor force 2,force#
if force#>0
forcenoise#=forcenoise#+(force#/10.0)
if forcenoise#>4000.0 then forcenoise#=4000.0
else
if force#<0
forcenoise#=forcenoise#-20.0
if forcenoise#<-500.0 then forcenoise#=-500.0
else
forcenoise#=forcenoise#-50.0
if forcenoise#<0.0 then forcenoise#=0.0
endif
endif
`
rem steering
steeringAngle# = phy get vehicle steering angle ( 2 )
key = 0
if keystate ( 205 ) = 1
if steeringAngle# > ( -1.0 + steeringDelta# )
steeringAngle# = steeringAngle# - ( steeringDelta# / 2 )
endif
key = 1
endif
if keystate ( 203 ) = 1
if steeringAngle# < ( 1.0 - steeringDelta# )
steeringAngle# = steeringAngle# + ( steeringDelta# / 2 )
endif
key = 1
endif
if key = 0
if steeringAngle# > 0.0
steeringAngle# = steeringAngle# - steeringDelta# * 2
if steeringAngle# < 0
steeringAngle# = 0.0
endif
endif
if steeringAngle# < 0.0
steeringAngle# = steeringAngle# + steeringDelta# * 2
if steeringAngle# > 0
steeringAngle# = 0.0
endif
endif
endif
phy set vehicle steering angle 2, steeringAngle#
phy set vehicle steering value 2, -( steeringAngle# * 45 )
`
return