トップページ > 記事閲覧
3Dで敵キャラの向きをプレイヤーの位置に向ける
名前:ピンクの丸い生命体 日時: 2013/12/11 23:35

初めて投稿するので至らないところもあると思いますがよろしくお願いします。 今回質問したいのは、私は今DXライブラリを用いてMMDデータを使用した3Dゲームを作成しているのですが、敵キャラの向きの変更の仕方がわかりません 。 自キャラの居る位置(座標)のほうを敵キャラが向く、といったようなプログラムを作りたいのですが、どうしてもうまくいきません。 わかる方は是非教えてください
メンテ

Page: 1 |

Re: 3Dで敵キャラの向きをプレイヤーの位置に向ける ( No.1 )
名前:管理人 日時:2013/12/14 17:15

3Dモデルの向きの変更は MV1SetRotationXYZ を使用して行います // 90度角度を変える MV1SetRotationXYZ( ModelHandle, VGet( 0.0f, DX_PI / 2.0f, 0.0f ) ); 特定の位置に3Dモデルを向けさせる場合は atan2 を使用して MV1SetRotationXYZ に設定するための値を取得します 二つの3Dモデルを表示して、片方のモデルがもう片方のモデルの方に向くプログラムを 組んでみましたので、よろしければご覧ください #include "DxLib.h" #include <math.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle1 ; int ModelHandle2 ; VECTOR Position1 ; VECTOR Position2 ; VECTOR SubVector ; float Angle ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // クリアカラーをグレーに変更 SetBackgroundColor( 64, 64, 64 ) ; // 3Dモデルの読み込み ModelHandle1 = MV1LoadModel( "DxChara.x" ) ; ModelHandle2 = MV1DuplicateModel( ModelHandle1 ) ; // 描画先を裏画面に変更 SetDrawScreen( DX_SCREEN_BACK ) ; // カメラの設定 SetCameraPositionAndTarget_UpVecY( VGet( -20.0f, 2400.0f, -1700.0f ), VGet( -0.000f, 380.0f, -10.0f ) ); SetCameraNearFar( 17.0f, 10000.0f ); // 3Dモデルの座標を初期化 Position1 = VGet( 0.0f, 0.0f, 0.0f ) ; Position2 = VGet( 1000.0f, 0.0f, 0.0f ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面をクリア ClearDrawScreen() ; // キー入力で座標を移動 if( CheckHitKey( KEY_INPUT_LEFT ) ) Position2.x -= 40.0f ; if( CheckHitKey( KEY_INPUT_RIGHT ) ) Position2.x += 40.0f ; if( CheckHitKey( KEY_INPUT_UP ) ) Position2.z += 40.0f ; if( CheckHitKey( KEY_INPUT_DOWN ) ) Position2.z -= 40.0f ; // 3Dモデル2から3Dモデル1に向かうベクトルを算出 SubVector = VSub( Position1, Position2 ) ; // atan2 を使用して角度を取得 Angle = atan2( SubVector.x, SubVector.z ) ; // atan2 で取得した角度に3Dモデルを正面に向かせるための補正値( DX_PI_F )を // 足した値を3Dモデルの Y軸回転値として設定 MV1SetRotationXYZ( ModelHandle2, VGet( 0.0f, Angle + DX_PI_F, 0.0f ) ); // 3Dモデル1を描画 MV1SetPosition( ModelHandle1, Position1 ) ; MV1DrawModel( ModelHandle1 ) ; // 3Dモデル2を描画 MV1SetPosition( ModelHandle2, Position2 ) ; MV1DrawModel( ModelHandle2 ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
メンテ
Re: 3Dで敵キャラの向きをプレイヤーの位置に向ける ( No.2 )
名前:ピンクの丸い生命体(解決) 日時:2013/12/15 00:18

向きを変えることが出来ました。 本当にありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存