看了几本书,突然发现,DXUT的强大不是言语可以表达的啊。。。。。。
原来以为camera需要自己再增加一些方法、一些私有变量,结果发现根部不需要,它里面米多米多的class,但是我只用了CFirstPersonCamera,因为它是派生(是不是那个专业词汇我记不清了。。)了公有类CBaseCamera。
CBaseCamera有个方法是void CBaseCamera::GetInput(……)。
void CBaseCamera::GetInput( bool bGetKeyboardInput,
bool bGetMouseInput,bool bGetGamepadInput,bool bResetCursorAfterMove )
{
m_vKeyboardDirection = D3DXVECTOR3( 0, 0, 0 );
if( bGetKeyboardInput )
{
// Update acceleration vector based on keyboard state
if( IsKeyDown( m_aKeys[CAM_MOVE_FORWARD] ) ) //w
m_vKeyboardDirection.z += 1.0f; //原来就是这样
if( IsKeyDown( m_aKeys[CAM_MOVE_BACKWARD] ) ) //s
m_vKeyboardDirection.z -= 1.0f;//原来就是这样
if( IsKeyDown( m_aKeys[CAM_ROTATE_RIGHT] ) ) //d
m_fCameraYawAngle += 0.05f;//这个是我改的,就一点点,使用了CBaseCamera的私有变量,居然是控制旋转的。。。。。。你试试就知道了
if( IsKeyDown( m_aKeys[CAM_ROTATE_LEFT] ) ) //a
m_fCameraYawAngle -= 0.05f;//同上
if( IsKeyDown( m_aKeys[CAM_STRAFE_RIGHT] ) ) //e
m_vKeyboardDirection.x += 1.0f;//原来就是这样
if( IsKeyDown( m_aKeys[CAM_STRAFE_LEFT] ) ) //q
m_vKeyboardDirection.x -= 1.0f;//原来就是这样
}
if( bGetMouseInput )
……
}
突然就发现,原来好简单,那些aqweds的问题。DXUT强大ing。。。。。。。。。。。。。。。。。。