« phpGroupWareを入れてみる | メイン | KAGでの複数ムービー再生不具合 »

2005年03月07日

Teaspire 開発日誌:: 視点と操作方法

    

LAMPのチュートリアルとして付いているソースでは、斜め上から見下ろし、矢印キーでの移動は押した方向に進むというものになっている。
これを、上矢印キーで進み、左右矢印キーで方向をかえる操作系に変更した。
左右矢印キーが押されたら、角度を増減する。
上矢印キーが押されたら、ベクトルの方向を角度で変更したものを現在位置に加算する。
で、この上矢印キーでの移動だが、次のような仮想ソースコードのようにしてやりたかったのだが、出来なかった。
Matrix44.rotationY(angle);
Vector3 *= Matrix44;
Vector3& operator*= (const Matrix44 &rhs)がVector3に実装されていなかったのだ。
いろいろと調べるがやり方がよくわからない。
仕方がないので、D3DXを使うことにした。
次のような感じだ。
D3DXMATRIX rotMat;
D3DXMatrixRotationY( &rotMat, rotAngle );
D3DXVECTOR3 tv( 0.0f,0.0f,moveSpeed);
D3DXVECTOR3 tvd;
D3DXVec3TransformCoord( &tvd, &tv, &rotMat );
これで移動量が取得できたので、後は現在位置に加算して移動完了。
とりあえず、操作方法は変更できた。
次は視点の変更。
キャラクターの斜め後ろから見るような視点にした。
これはCamera::setLookAtを使えば簡単に出来るはずということで、キャラクター位置を適当な高さとキャラクターの向きと逆方法(つまり後ろ方向)へ少し移動した位置をカメラ位置へ、注視点はキャラクター位置の真上でカメラより少し下、上方向ベクトルは普通に0.1.0を使い、設定したら難なく出来た。(向きなど少し間違ったり、微調整はしたが)

にしても、LAMPを使おうと思ったら結構ソースコードを読まないとダメっすなぁ。



投稿者 Takenori : 2005年03月07日 23:57




comments powered by Disqus
Total : Today : Yesterday : なかのひと