まず、やりたいことは以下になります。
カメラは車をフォローしません。 Camera.cpp--------------------------------------------------
D3DXVECTOR3 CamPos;
D3DXVECTOR3 CamLook;
D3DXVECTOR3 CamRotAngle;
D3DXVECTOR3 CamLookRotAngle;
void InitCamera(){
CamPos = D3DXVECTOR3( 0.0f, 8.0f, 8.0f );
CamLook= D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
CamRotAngle = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
CamLookRotAngle = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
}
void UpdateCamera(){
if( CheckKey_Keyboard( DIK_W ) ){
CamPos.z -= 0.07f;
CamLook.z -= 0.07f;
}else if( CheckKey_Keyboard( DIK_S ) ){
CamPos.z += 0.07f;
CamLook.z += 0.07f;
}
if( CheckKey_Keyboard( DIK_A) ){
CamPos.x -= 0.07f;
CamLook.x -= 0.07f;
}else if( CheckKey_Keyboard( DIK_D ) ){
CamPos.x += 0.07f;
CamLook.x += 0.07f;
}
if( CheckKey_Keyboard( DIK_T ) ){
CamPos.y += 0.07f;
}else if( CheckKey_Keyboard( DIK_B ) ){
CamPos.y -= 0.07f;
}
if( CheckKey_Keyboard( DIK_Q ) ){
CamLook.x += 0.07f;
CamRotAngle.y -= D3DX_PI / 360.0f;
}else if( CheckKey_Keyboard( DIK_E ) ){
CamLook.x -= 0.07f;
CamRotAngle.y += D3DX_PI / 360.0f;
}
if( CheckKey_Keyboard( DIK_Y ) ){
CamLook.y += 0.07f;
}else if( CheckKey_Keyboard( DIK_N ) ){
CamLook.y -= 0.07f;
}
if( CheckKey_Keyboard( DIK_Z ) ){
CamRotAngle.z += D3DX_PI / 360.0f;
}else if( CheckKey_Keyboard( DIK_C ) ){
CamRotAngle.z -= D3DX_PI / 360.0f;
}
D3DXMATRIX MatCamRot;
D3DXMATRIX MatCamPos;
D3DXMATRIX MatCamLookPos;
D3DXMATRIX MatCamPosFinal;
D3DXMATRIX MatCamLookPosFinal;
D3DXVECTOR3 CamPosTemp = CamPos;
D3DXVECTOR3 CamLookTemp = CamLook;
D3DXMatrixIdentity( &MatCamPosFinal );
D3DXMatrixIdentity( &MatCamLookPosFinal );
D3DXMatrixRotationYawPitchRoll( &MatCamRot, CamRotAngle.y, CamRotAngle.x, CamRotAngle.z );
D3DXMatrixTranslation( &MatCamPos, CamPos.x, CamPos.y, CamPos.z );
D3DXMatrixTranslation( &MatCamLookPos, CamLook.x, CamLook.y, CamLook.z );
MatCamPosFinal = MatCamRot * MatCamPos;
MatCamLookPosFinal = MatCamRot * MatCamLookPos;
D3DXVec3TransformCoord( &CamPosTemp, &CamPosTemp, &MatCamPosFinal );
D3DXVec3TransformCoord( &CamLookTemp, &CamLookTemp, &MatCamLookPosFinal );
D3DXMATRIX MatView;
D3DXMatrixLookAtLH( &MatView,
&CamPosTemp,
&CamLookTemp,
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );
g_pD3DDevice->SetTransform( D3DTS_VIEW, &MatView );
}
D3DXVECTOR3 RotationXYZ_model = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 Translation_model = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 Scaling_model = D3DXVECTOR3( 0.6f, 0.6f, 0.6f );
D3DXMATRIX Matrix_model;
void UpdateModel(){
if( CheckKey_Keyboard( DIK_UP ) ){
Translation_model.z -= 0.1f;
}else if( CheckKey_Keyboard( DIK_DOWN ) ){
Translation_model.z += 0.1f;
}
if( CheckKey_Keyboard( DIK_LEFT ) ){
Translation_model.x += 0.1f;
}else if( CheckKey_Keyboard( DIK_RIGHT ) ){
Translation_model.x -= 0.1f;
}
D3DXMatrixTranslation( &mtxTrans, Translation_model.x, Translation_model.y, Translation_model.z );
D3DXMatrixRotationYawPitchRoll( &mtxRot, CamRotAngle.y, CamRotAngle.x, CamRotAngle.z );
D3DXMatrixScaling( &mtxScale, Scaling_model.x, Scaling_model.y, Scaling_model.z );
Matrix_model = mtxScale * mtxRot * mtxTrans;
}