I think you merely need to adjust two angles.
Try this:
sync on : sync rate 60 : sync
autocam off
position camera 0, 50, -500
point camera 0, 25, 0
make object cube 1, 100 ` the npc
position object 1, 400, 400, 500
make object sphere 2, 50
position object 2, -100, 50, -200
repeat
if inkey$() = "m" then position object 2, object position x(2)+0.4, object position y(2),object position z(2)
angleX1# = object angle x(1)
angleY1# = object angle y(1)
angleZ1# = object angle z(1)
point object 1, object position x(2), object position y(2), object position z(2)
rotate object 1, curveangle(object angle x(1), angleX1#, 40.0), curveangle(object angle y(1), angleY1#, 40.0), angleZ1#
sync
until spacekey()
end
Edit Actually this is better. Use the arrow keys to move the sphere:
sync on : sync rate 60 : sync
autocam off
position camera 0, 50, -500
point camera 0, 25, 0
make object cube 1, 100 ` the npc
position object 1, 400, 400, 500
make object sphere 2, 50
position object 2, -100, 50, -200
repeat
position object 2, object position x(2)+(rightkey()-leftkey())*2.0, object position y(2) + (upkey()-downkey())*2.0, object position z(2)
angleX1# = object angle x(1)
angleY1# = object angle y(1)
angleZ1# = object angle z(1)
point object 1, object position x(2), object position y(2), object position z(2)
rotate object 1, curveangle(object angle x(1), angleX1#, 40.0), curveangle(object angle y(1), angleY1#, 40.0), angleZ1#
sync
until spacekey()
end