void Camera_Process(void){
////SetMouseDispFlag(FALSE);
float h,v;
MATRIX z;
MATRIX y;
float Camera_model_Length ;
Camera_model_Length =4000.0f;//CAMERA_PLAYER_LENGTH;
// マウスの位置を取得
int mouse_x, mouse_y;
GetMousePoint( &mouse_x , &mouse_y ) ;
set.MouseX += mouse_x - 320;
set.MouseY += mouse_y - 240;
if(set.MouseY>=80)set.MouseY=80;
if(set.MouseY<=-70)set.MouseY=-70;
h=(set.MouseX/120.0f);
v=(set.MouseY/120.0f);
y=MGetRotY(h);
z=MGetRotZ(v);
cam.pos=VAdd(mod.pos,VGet(0.0f,PLAYER_HIT_HEIGHT+25.0f,0));
cam.target_pos = VAdd( VTransform( VTransform( VGet( -Camera_model_Length, 0.0f, 0.0f ), z ), y ), cam.pos) ;
mod.aitem_pos= VAdd( VTransform( VTransform( VGet( -70.0f, -50.0f, 0.0f ), z ), y ), cam.pos) ;
// カメラの情報をライブラリのカメラに反映させる
SetCameraPositionAndTarget_UpVecY( cam.pos,cam.target_pos ) ;
SetMousePoint(320,240);
}void aitem_model(void){
MV1SetMatrix(mod.aitem_Handle, MGetIdent());
MV1SetScale(mod.aitem_Handle, VGet(20.0f, 20.0f, 20.0f) );
MV1SetRotationXYZ( mod.aitem_Handle, VNorm(VSub( cam.target_pos,cam.pos ))) ;
MV1SetPosition(mod.aitem_Handle,mod.aitem_pos);
}アイテムはカメラの注視点を使いモデルの手前に表示しています。
しかし、カメラを動かすとアイテムが回転してしまいます。
3Dシューティングゲームのように視点を動かし、それに銃の動きがついてくるようにしたいのです。
MV1SetRotationXYZ( mod.aitem_Handle, VNorm(VSub( cam.target_pos,cam.pos ))) ;
カメラの注視点ーカメラ座標、この値を正規化したものでは向きが出せないのでしょうか?