Here's some code I did a while back. See if it helps.
Sync On : Sync Rate 60:Autocam Off
Position Camera 0,50,0
Type Coords
x as float
y as float
z as float
Endtype
Type trucks
position as Coords
angle as Coords
Endtype
Global Truck as Trucks
Global Object as Coords
Global Limb as Coords
Make_Truck()
Position Object 1,100,30,100
Make Matrix 1,1000,1000,10,10
Randomize Matrix 1,80
Update Matrix 1
For i =11 to 14
Make Object Sphere i,10
Next i
Do
Move Object 1,(Upkey()-Downkey())*3
truck.angle.y=truck.angle.y+Rightkey()-Leftkey()
Rotate Object 1,0,truck.angle.y,0
Get_Angles()
Pitch Object Up 1,truck.angle.z
Roll Object Right 1,truck.angle.x
Return_Object(1)
Position Object 1,Object.x,truck.position.y,Object.z
For i = 1 to 4
Return_Limb(1,i)
Position Object 10+i,Limb.x,Get Ground Height(1,Limb.x,Limb.z)+5,Limb.z
Next i
Position Camera Object.x,Object.y,Object.z
Set Camera To Object Orientation 1
Move Camera -150
Pitch Camera Up 90
Move Camera 50
Pitch Camera Down 90
`Point Camera Object.x,Object.y,Object.z
Sync
Loop
Function Get_Angles()
Dim dz(4) as float
Dim ang(4) as float
h#=0
For i= 1 to 4
Return_Limb(1,i)
dz(i) = Get Ground Height(1,Limb.x,Limb.z)
h#=h#+dz(i)
Next i
truck.position.y=(h#/4)+15
ang(1)=ATanfull(dz(1)-dz(2),50)
ang(2)=ATanfull(dz(3)-dz(4),50)
ang(3)=ATanfull(dz(3)-dz(1),50)
ang(4)=ATanfull(dz(4)-dz(2),50)
truck.angle.x=(ang(1)+ang(2))/2
truck.angle.z=(ang(3)+ang(4))/2
Endfunction
Function Make_Truck()
Make Object Box 1,60,60,15
`Offset Limb 1,0,0,0,-3
Make Object Sphere 2,1
`Make Object Triangle 2,0,0,0,1,0,0,0,0,0
Make Mesh from Object 2,2
Delete Object 2
Add Limb 1,1,2
Offset Limb 1,1,-25,-25,0
Add Limb 1,2,2
Offset Limb 1,2,25,-25,0
Add Limb 1,3,2
Offset Limb 1,3,-25,25,0
Add Limb 1,4,2
Offset Limb 1,4,25,25,0
Set Object Cull 1,0
Pitch Object Down 1,90
Fix Object Pivot 1
`Ghost Object On 1
EndFunction
Function Return_Object(ObjectID)
Object.x=Object Position X(ObjectID):Object.y=Object Position Y(ObjectID): Object.z=Object Position Z(ObjectID)
Endfunction
Function Return_Limb(ObjectID,LimbID)
Limb.x=Limb Position X(ObjectID,LimbID):Limb.y=Limb Position Y(ObjectID,LimbID): Limb.z=Limb Position Z(ObjectID,LimbID)
Endfunction
"Droids don't rip your arms off when they lose." -H. Solo
REALITY II