You'll have to use a dummy object, like they did in the tank demo.
I wrote this for the old ski compo I never entered.
autocam off
hide mouse
sync on
backdrop on
color backdrop 0
REM LOAD IMAGES
load image "snow.bmp", 1
REM SETUP MATRIX
make matrix 1, 1000,1000, 25, 25
prepare matrix texture 1,1,1,1
set matrix height 1,10,10,25.0
set matrix height 1,9,10,25.0
set matrix height 1,8,10,25.0
set matrix height 1,10,9,25.0
set matrix height 1,9,9,25.0
set matrix height 1,8,9,25.0
`randomize matrix 1, 20.0
update matrix 1
REM MAKE AND SETUP OBJECTS
make object cube 1,1
scale object 1, 500,100,1500
color object 1, 200
`temp spheres
make object sphere 2, 2
color object 2, rgb(0,200,0)
make object sphere 3,2
color object 3, rgb(0,200,0)
make object sphere 4,2
color object 4, rgb(200,0,0)
make object sphere 5, 2
color object 5, rgb(200,0,0)
`dummy object
make object cone 6, 5
hide limb 6,0
make object cone 8, 5
hide limb 8,0
load object "l-punk-static.x", 7
yrotate object 7, 270
fix object pivot 7
scale object 7, 1500,1500,1500
glue object to limb 1,6,0
glue object to limb 7,8,0
REM ======================== MAIN LOOP ========================
DO
rem Control player with arrow keys
if upkey()=1 then x#=newxvalue(x#,a#,5) : z#=newzvalue(z#,a#,5)
if downkey()=1 then x#=newxvalue(x#,a#,-5) : z#=newzvalue(z#,a#,-5)
if leftkey()=1 then a#=wrapvalue(a#-5.0)
if rightkey()=1 then a#=wrapvalue(a#+5.0)
rem Update character
dx#=curvevalue(x#,dx#, 15.0)
dz#=curvevalue(z#,dz#, 15.0)
da#=curveangle(a#, da#, 10.0)
y#=get ground height(1,dx#,dz#)+1.0
rem Position camera to the back of the character
cx#=newxvalue(x#,wrapvalue(a#+180),100)
cz#=newzvalue(z#,wrapvalue(a#+180),100)
cy#=get ground height(1,cx#,cz#)+50.0
position camera x#,y#+100,z#-100
rem Point camera at object
point camera dx#,y#+5,dz#
rem find the ground height at each corner of the snowboard
temp_angle#=curveangle(a#, da#-20, 10.0)
front_left_x#=newxvalue(dx#,wrapvalue(temp_angle#),7.5)
front_left_z#=newzvalue(dz#,wrapvalue(temp_angle#),7.5)
front_left_height#=get ground height(1,front_left_x#,front_left_z#)
temp_angle#=curveangle(a#, da#+20, 10.0)
front_right_x#=newxvalue(dx#,wrapvalue(temp_angle#),7.5)
front_right_z#=newzvalue(dz#,wrapvalue(temp_angle#),7.5)
front_right_height#=get ground height(1,front_right_x#,front_right_z#)
temp_angle#=curveangle(a#, da#+20, 10.0)+180
rear_left_x#=newxvalue(dx#,wrapvalue(temp_angle#),7.5)
rear_left_z#=newzvalue(dz#,wrapvalue(temp_angle#),7.5)
rear_left_height#=get ground height(1,rear_left_x#,rear_left_z#)
temp_angle#=curveangle(a#, da#-20, 10.0)+180
rear_right_x#=newxvalue(dx#,wrapvalue(temp_angle#),7.5)
rear_right_z#=newzvalue(dz#,wrapvalue(temp_angle#),7.5)
rear_right_height#=get ground height(1,rear_right_x#,rear_right_z#)
rem calculate the amount to angle-tilt snowboard
length#=((rear_left_height#-front_left_height#)+(rear_right_height#-front_right_height#))/0.6
width#=((front_right_height#-front_left_height#)+(rear_right_height#-rear_left_height#))/0.2
rem update object
position object 6,dx#,y#,dz#
yrotate object 6,da#
rotate object 1,wrapvalue(length#),0,wrapvalue(width#)
position object 8,dx#,y#,dz#
yrotate object 8,da#
rotate object 7,wrapvalue(length#),0,wrapvalue(width#)
rem position a ball at each corner to show correct coordinates
position object 2, front_left_x#, front_left_height#, front_left_z#
position object 3, front_right_x#, front_right_height#, front_right_z#
position object 4, rear_left_x#, rear_left_height#, rear_left_z#
position object 5, rear_right_x#, rear_right_height#, rear_right_z#
rem misc text
set cursor 1,1
print str$(dx#)
set cursor 1,10
print str$(dz#)
set cursor 1,20
print str$(y#)
set cursor 1,30
print str$(dx2#)
set cursor 1,40
print str$(dz2#)
set cursor 1,50
`print str$(limb position y(1,1))
set cursor 1,60
print str$(width#)
set cursor 1,70
print str$(length#)
sync
LOOP
"eureka" - Archimedes
