.cfg文件匹配问题:
1.7版的Ogre SDK的.cfg有两个版本:
Release版, 如resource.cfg;
Debug版, 如resource_d.cfg;
可在程序中使用宏来区分在何种模式以调用相应的.cfg文件.
camera的初始位置与方向:
初始位置:(0, 0, 0);
初始方向:(0, 0, -1);
node = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode1", Vector3(-400, 200, 400));
node->yaw(Degree(-45));
node->attachObject(mCamera);
上述代码将camera平移至-400, 200, 400的位置, 并将镜头对准点(0, 200, 0).
(考虑一下rotate时的右手螺旋规则!)
鼠标与键盘输入:
可以使用OIS::Mouse与OIS::Keyboard来帮助定义标准输入.
以下, mMouse为OIS::Mouse *类型, mKeyboard为OIS::Keyboard类型.
mMouse->capture();//捕捉鼠标状态
if(mMouse->getMouseState().buttonDown(OIS::MB_left)){//若左键按下
......
}
mKeyboard->capture();//捕捉键盘状态
if(mKeyboard->isKeyDown(OIS::KC_ESCAPE)){//若ESC按下
......
}
事件的时间间隔设置:
可在帧监听器中的frameStarted函数中维护一个时间变量:
mToggle -= evt.timeSinceLastFrame;
这样该值就描述了数个帧经过的时间;
在每次事件发生时重设时间如:
mToggle = 0.5;
之后在事件处理的条件中加入
if(mToggle<0.0f){
......
}
如此, 事件发生后的0.5秒钟内就不能再发生其它事件, 这样当用户按下某键的时间超过1个帧时间但小于0.5秒时, 我们构建的系统就可以正确处理.
这样的设置可以实现一些细节化的设计.