広告
向いた方向へキャラクターの移動
ダウンロード
- このプロジェクトは、[C0203Move2.zip]からダウンロードできます。
プロジェクト
- この節では、3Dキャラを、「←」「→」で左右に旋回させ、「↑」「↓」で前進または後退できるようにします。
- まずは、[プロジェクトの設定方法]の通りにプロジェクトを用意します。プロジェクト名は「C0203Move2」などとします。
- 「Vixar Motion」を起動して「BlackHair.vxm」ファイルを開き、「C0203Move2」プロジェクトから書き出される実行ファイル(exeファイル)のフォルダ内に「MQA」フォルダを作って、その中に「mqa形式」で「BlackHair.mqa」と保存します。
プログラムの解説
- キャラクターの作成には、「CCharacter」クラスを使います。「CCharacter」クラスは、①Metasequoiaから書き出した静止モデルの「mqoファイル」と、②Vixar Motionから書き出したモデル・アニメーション・データ「mqaファイル」の、両方が使えます。
- 前ページの「キャラクターを移動する」とほぼ同じですが、今回は向いた方向に前進または後退するために三角関数の「sin」(サイン)と「cos」(コサイン)を使います。
- カーソル・キー「←」「→」で角度を増減させるために、「CCharacter」クラスの「AddRotate(float x,float y,float z)」関数を使います。
- ディグリー角度からラジアンに変換するには、「D3DXToRadian」マクロを使います。
- カーソル・キー「↑」「↓」で「radian」の向きにxとzの平行移動をするには、三角関数の「sin」と「cos」を使い、「CCharacter」クラスの「SetMove(float x,floaty,float z)」を使います。
- pos += vlCharacter->GetMove();
で平行移動量を「pos」に追加し、
D3DXMatrixTranslation(&trans,pos.x,pos.y,pos.z);
で平行移動行列を生成します。
D3DXMatrixRotationY(&rotateY,radian);
で「radian」だけY軸に回転した行列を生成します。
平行移動行列と回転行列を掛け合わせて、キャラクターにセットします。
vlCharacter->SetTransform(rotateY*trans);