広告
キャラクターの移動
ダウンロード
- このプロジェクトは、[C0202Move.zip]からダウンロードできます。
プロジェクト
- この節では、3Dアニメーション・ツール「Vixar Motion」から書き出した「mqaファイル」でキャラクターを表示し、カーソル・キー「←」「→」「↑」「↓」でキャラクターを移動できるようにします。
- まずは、[プロジェクトの設定方法]の通りにプロジェクトを用意します。プロジェクト名は「C0202Move」などとします。
- 「Vixar Motion」を起動して「SharpHair.vxm」ファイルを開き、「C0202Move」プロジェクトから書き出される実行ファイル(exeファイル)のフォルダ内に「MQA」フォルダを作り、その中に「mqa形式」で「SharpHair.mqa」と保存します。
プログラムの解説
- キャラクターの作成には、「CCharacter」クラスを使います。「CCharacter」クラスは、①Metasequoiaから書き出した静止モデルの「mqoファイル」と、②Vixar Motionから書き出したモデル・アニメーション・データ「mqaファイル」の、両方が使えます。
- ファイルの読み込みには、「CCharacter」クラスの「LoadMQAFile」関数を使います。
- 現在の位置座標を取得するには、「Ccharacter」クラスの「GetPosition()」を使います。
- キーボードが押されたかを取得するには、「CDirectInput」クラスの「GetKeyboardInput」関数を使います。
- キャラの回転を格納するには、「CCharacter」クラスの「SetRotate(float x,float y,float z)」関数を使います。
- 座標から平行移動行列を作るには、「D3DXMatrixTranslation」関数を使います。
- y軸を回転軸にして回転する行列を作るには、「D3DXMatrixRotationY」関数を使います。
- 行列を掛け合わせてトランスフォーム*した結果をキャラクターに反映させるには、「CCharacter」クラスの「SetTransform(D3DXMATRIX m)」関数を使います。
- 行列同士を掛けるには、「rotateY(回転)*trans(平行移動)」のように記述します。掛ける順番が「trans * rotateY」のように逆になると、行列計算の結果が変わってきます。自分で確かめてください。
- トランスフォームしたキャラを描画するには、「CCharacter」クラスの「TransformAndDrawModels(LPDIRECT3DDEVICE9 dev)」関数を使います。
- 最後に、「ReleaseDirectX9」関数で、生成したインスタンスを「SAFE_DELETEマクロ」でメモリから解放してください。