3Dマウス、作ってみました。地面となるオブジェクトに高低差を設ける場合はintersect objectコマンドを使えば 簡単に実現できるのではないでしょうか。マウスクリックで移動、矢印キーでカメラの移動&パンです。 sync on:sync rate 60 make camera 1 set current camera 1 color backdrop 1,0 make object box 1,1000,1,1000 make object sphere 2,30:color object 2,rgb(255,0,0) make object sphere 3,30:position object 3,0,1,0:scale object 3,100,3,100:color object 3,rgb(0,0,255) position camera 0,150,-300:position object 2,0,15,0 do fps$="3D mouse Example Fps: "+str$(screen fps()) text screen width()-20-text width(fps$),screen height()-40,fps$ text 0,20,mes$ if mouseclick() flag=pick object (mousex(),mousey(),1,1) mx=get pick vector x():my=get pick vector y():mz=get pick vector z() mes$="x;"+str$(mx)+"y;"+str$(my)+"z;"+str$(mz) targetx=mx+camera position x(1) targety=my+camera position y(1) targetz=mz+camera position z(1) position object 3,targetx,targety+1,targetz endif point object 2,targetx,targety+15,targetz spd#=((abs(object position x(2)-object position x(3))+abs(object position z(2)-object position z(3)))) move object 2,spd#/50 control camera using arrowkeys 1,2,2 sync loop