Directx9でTPSを作ろうと思っています。
プログラム経験はC言語をある程度勉強した程度です。
今3人称カメラを実装しようとしているのですが、キャラの移動がうまくいかず躓いています。
カメラを注視点を中心に移動させるのはできてるとは思いますが、カメラを動かした状態のキャラの移動ができません。
うまく説明できないのですが、普通3人称ゲームでのキャラの前方向はカメラの位置によって変わりますよね?
あの動きが理想なのですが、今の自分のプログラムだとカメラを動かしたところでキャラの進む方向はキャラの向きに依存して
ラジコン操作のようで物凄くやりにくいです。
カメラの動かし方はこんな感じです。
[code=C]
//-----------------------------------
//カメラの更新
//-----------------------------------
void CameraUpdate() {
//マウスの入力で角度変更
if (dims.lX) {
camera.angle.x -= dims.lX / 100.0f;
}
if (dims.lY) {
camera.angle.y += dims.lY / 150.0f;
}
if (camera.angle.y >= CAMERA_Y_LIMIT) {
camera.angle.y = CAMERA_Y_LIMIT;
}
if (camera.angle.y <= -CAMERA_Y_LIMIT) {
camera.angle.y = -CAMERA_Y_LIMIT;
}
camera.rotate.x = cosf(camera.angle.x) * cosf(camera.angle.y);
camera.rotate.y = sinf(camera.angle.y);
camera.rotate.z = sinf(camera.angle.x) * cosf(camera.angle.y);
if (GetAsyncKeyState(VK_E)) {
camera.length += 0.05f;
}
if (GetAsyncKeyState(VK_Q)) {
camera.length -= 0.05f;
}
camera.pos = player.pos + (camera.rotate * camera.length);
camera.lookat = { player.pos.x + 2.0f, player.pos.y + 9.0f, player.pos.z};
//カメラ位置
D3DXVECTOR3 vEyePt(camera.pos.x, camera.pos.y, camera.pos.z);
//カメラの注視点
D3DXVECTOR3 vLookatPt(camera.lookat.x, camera.lookat.y, camera.lookat.z);
//カメラの傾き
D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f);
D3DXMATRIX m_view;
D3DXMatrixLookAtLH(&m_view, &vEyePt, &vLookatPt, &vUpVec);
m_pD3DDevice->SetTransform(D3DTS_VIEW, &m_view);
}
[/code]
ここで作ったカメラマトリクスm_viewをつかってキャラの移動をするのですか?