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 -