我明白了。如果有人需要幫助過,這是我的食人魔的代碼,你可以提取普林西:
float coeff = 150.0f * deltaTime_s;
Ogre::Quaternion dirY(Ogre::Degree(-90), Ogre::Vector3::UNIT_Y);
if(keyboard->isKeyDown(OIS::KC_W))
{
GameManager::getSingeltonPtr()->getCameraNode()->translate
(dirY* (GameManager::getSingeltonPtr()->getCameraNode()->getOrientation() * Ogre::Vector3 (-coeff, 0, 0)));
}
if(keyboard->isKeyDown(OIS::KC_S)){
GameManager::getSingeltonPtr()->getCameraNode()->translate
(dirY* (GameManager::getSingeltonPtr()->getCameraNode()->getOrientation() * Ogre::Vector3 (coeff, 0, 0)));
}
if(keyboard->isKeyDown(OIS::KC_A))
{
GameManager::getSingeltonPtr()->getCameraNode()->translate
((GameManager::getSingeltonPtr()->getCameraNode()->getOrientation() * Ogre::Vector3 (-coeff, 0, 0)));
}
if(keyboard->isKeyDown(OIS::KC_D))
{
GameManager::getSingeltonPtr()->getCameraNode()->translate
((GameManager::getSingeltonPtr()->getCameraNode()->getOrientation() * Ogre::Vector3 (coeff, 0, 0)));
}
採取三地分,並把它們想象成三角形,以便從任何兩個頂點的使2個向量做叉積,你具有飛機的「正常」矢量......所以在用'運動'向量翻譯攝像機之前,請移除軸向部分,如'movement- = dot(normal,movement)/ | normal |'...如果我沒有弄錯。如果你的交叉產品獲得了相反的方向向量,那麼只是否定「正常」 – Spektre 2014-12-13 15:01:43