雑な例で申し訳ないですが、MV1Modelの移動と回転をやってみました。
十字キーでXZ平面の平行移動。ZXキーでY軸回転になっています。
モデルの向きを直接ベクトルで指定する関数は無いようです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( true );
if ( DxLib_Init() < 0 )
return -1;
SetDrawScreen( DX_SCREEN_BACK );
int PlayerHandle = MV1LoadModel( "DxChara.x" );
VECTOR PlayerPosition = VGet( 0.0f, 0.0f, 0.0f );
float PlayerAngle = 0.0f;
const float MoveRate = 10.0f;
const float RotationRate = PHI_F * 2.0f / 60.0f;
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 500.0f, -2000.0f ), VGet( 0.0f, 500.0f, 0.0f ) );
while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
if ( CheckHitKey( KEY_INPUT_UP ) == 1 )
PlayerPosition.z += MoveRate;
if ( CheckHitKey( KEY_INPUT_DOWN ) == 1 )
PlayerPosition.z -= MoveRate;
if ( CheckHitKey( KEY_INPUT_LEFT ) == 1 )
PlayerPosition.x -= MoveRate;
if ( CheckHitKey( KEY_INPUT_RIGHT ) == 1 )
PlayerPosition.x += MoveRate;
if ( CheckHitKey( KEY_INPUT_Z ) == 1 )
PlayerAngle += RotationRate;
if ( CheckHitKey( KEY_INPUT_X ) == 1 )
PlayerAngle -= RotationRate;
ClearDrawScreen( );
MV1SetPosition( PlayerHandle, PlayerPosition );
MV1SetRotationXYZ( PlayerHandle, VGet( 0.0f, PlayerAngle, 0.0f ) );
MV1DrawModel( PlayerHandle );
ScreenFlip( );
}
MV1DeleteModel( PlayerHandle ) ;
DxLib_End( );
return 0;
}
下記の管理人さん作成のサンプルが参考になると思います。
ttp://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction.html