|
|
在我搞的第三人称游戏中,我用AABB检测主角与场景中物体的碰撞,如果有碰撞,就把主角现在位置变为上一帧的主角位置,如果没有碰撞,记下主角这一帧的位置,以便下一帧有碰撞时可以用.
问题是:当我把主角移到与物体碰撞的地方,主角就经常被卡在那里,不能进也不能退.请问这个问题怎么解决?
AxisAlignedBox spbox=mSceneMgr->getSceneNode("Ogre 1")->_getWorldAABB(); //主角的AABB
AxisAlignedBox cbbox=mSceneMgr->getSceneNode("1")->_getWorldAABB(); //场景中物体的AABB
if(spbox.intersects(cbbox)) //如果主角与物体碰撞,把主角现在位置变为上一帧的主角位置
{
mmmMainNode->setPosition(mCharOldPositon);
}
else //如果没有碰撞,记下主角这一帧的位置
{
mCharOldPositon=mmmMainNode->getPosition();
} |
|