3d.01章のモデルを動かせるようにしてみましょう。
実行結果
Xを押すとXが増加、左シフトを押しながらXを押すとXが減少
Yを押すとYが増加、左シフトを押しながらYを押すとYが減少
Zを押すとZが増加、左シフトを押しながらZを押すとZが減少
という操作を受け付けます。
モデルの位置をセットするには
MV1SetPosition( ModelHandle, VGet( x, y, z ) ) ;
を利用します。
今回新しく使っている関数はこれだけです。
以下のサンプルを見てみましょう。
/***** main.cpp *****/ #include <DxLib.h> int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); float x=0, y=0, z=0; //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)){//Xキーが押されていたら if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら x+=0.1f; } else { x-=0.1f; } } if(CheckHitKey(KEY_INPUT_Y)){//Yキーが押されていたら if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら y+=0.1f; } else { y-=0.1f; } } if(CheckHitKey(KEY_INPUT_Z)){//Zキーが押されていたら if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら z+=0.1f; } else { z-=0.1f; } } // 指定位置にモデルを配置 MV1SetPosition( ModelHandle, VGet( x, y, z ) ) ; // 3Dモデルの描画 MV1DrawModel( ModelHandle ) ; DrawFormatString(0,0,GetColor(255,255,255),"x=%.1f y=%.1f z=%.1f",x,y,z); } DxLib_End(); return 0; }
実際に操作してみてください。
実行結果のように動けば成功です。
- Remical Soft -