マウス操作で視点を動かします。そして持っている武器もその視点にあわせて、動かします。(自分が実際に持っているかのように見せるため)
カメラが回転すると、それに伴い武器もカメラと同じ角度だけ回転するわけです。
マウスの横移動でカメラの向きが変わると武器もその分Y軸を軸として回転させるようにしました。
しかし、マウスを上下移動させたときに カメラは回転するんですが、武器が回転させれません。
そこでいろいろ試してみました。下のスクリプトに試してみた命令を書きました。
どうすれば、マウスを上下に動かしカメラを回転させた時に武器も回転させれるでしょうか。
hsid1は銃の形状識別IDです。
*MouseChk ;マウス操作チェック camdeg_dxz = mouse_sousakando * (before_mx-ginfo_mx) ;前回のマウスカーソル座標と、今回のマウスカーソル座標との距離に応じて、回転角度を求める camdeg_dy = mouse_sousakando * (before_my-ginfo_my) camdegxz-=camdeg_dxz camdegy-=camdeg_dy mouse -1 ;マウスカーソルを消す mouse ginfo_wx1+ginfo_winx/2,ginfo_wy1+ginfo_winy/2 ;ウィンドウのだいたい中心にマウスカーソルを移動させる before_mx=ginfo_mx ;マウスカーソル座標を保存しておく before_my=ginfo_my if( camdegxz > 360.0 ) : camdegxz -= 360.0 if( camdegxz < 0.0 ) : camdegxz += 360.0 ;モデルの向きを変える E3DRotateInit hsid1 E3DRotateY hsid1,camdegxz ;この行に「E3DRotateX camdegy」と書いたがだめだった *MoveCamera ;ここからはあまり関係ないとは思うが一応カメラ関係の部分なので。 ;カメラの位置とカメラのターゲット位置設定 E3DSin camdegxz, sinxz E3DCos camdegxz, cosxz E3DSin camdegy, siny E3DCos camdegy, cosy E3DGetPos hsid1, numx,numy,numz camposx = sinxz * cosy * cameradist + numx camposy = eye_y + siny * cameradist + numy camposz = cosxz * cosy * cameradist + numz E3DSetCameraPos camposx, camposy, camposz targetx= sinxz * cosy * cameradist2 + numx targety= eye_y + siny * cameradist2 + numy targetz= cosxz * cosy * cameradist2 + numz E3DSetCameraTarget targetx, targety, targetz, 0.0, 1.0, 0.0 return