3d.01章のモデルを回転させられるようにしてみましょう。
実行結果
Xを押しながら左右キーを押すとX軸回転
Yを押しながら左右キーを押すとY軸回転
という操作を受け付けます。
モデルの回転をするには
MV1SetRotationXYZ( ModelHandle, VGet( x, y, z) ) ;
を利用します。
今回新しく使っている関数はこれだけです。
以下のサンプルを見てみましょう。
/***** main.cpp *****/ #include <math.h> #include <DxLib.h> static const float ROTATE_SPEED = DX_PI_F/90;//回転スピード int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); float angleX = 0.f, angleY = 0.f; //3Dモデルの読み込み int ModelHandle = MV1LoadModel( "dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ; //奥行0.1~1000までをカメラの描画範囲とする SetCameraNearFar( 0.1f, 1000.0f ) ; //(0,10,-20)の視点から(0,10,0)のターゲットを見る角度にカメラを設置 SetCameraPositionAndTarget_UpVecY( VGet( 0, 10, -20 ), VGet( 0.0f, 10.0f, 0.0f ) ) ; while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){ if( CheckHitKey(KEY_INPUT_X) > 0){//Xキーが押されていたら if( CheckHitKey(KEY_INPUT_LEFT) > 0 ){//左キーが押されていたら angleX -= ROTATE_SPEED; } if( CheckHitKey(KEY_INPUT_RIGHT) > 0 ){//右キーが押されていたら angleX += ROTATE_SPEED; } } if( CheckHitKey(KEY_INPUT_Y) > 0){//Yキーが押されていたら if( CheckHitKey(KEY_INPUT_LEFT) > 0 ){//左キーが押されていたら angleY -= ROTATE_SPEED; } if( CheckHitKey(KEY_INPUT_RIGHT) > 0 ){//右キーが押されていたら angleY += ROTATE_SPEED; } } //第二引数の回転角度をセット MV1SetRotationXYZ( ModelHandle, VGet( angleX, angleY, 0.0f ) ) ; // 3Dモデルの描画 MV1DrawModel( ModelHandle ) ; } DxLib_End(); return 0; }
実際に操作してみてください。
実行結果のように動けば成功です。
- Remical Soft -