有哪位高手用过bullet物理引擎的么,请问个刚体位置的有关问题
有谁用过bullet物理引擎的么,请教个刚体位置的问题
我知道通过
appRigidBody->getMotionState()->getWorldTransform(trans);可以把刚体的矩阵位置存放到btTransform trans;中,然后用这个数据绑定OGRE中模型的位置让其改变,现在出现个问题,我想通过鼠标来改变刚体的位置,比如天上一个苹果掉落到地上,给苹果绑定bullet
这样它就有一个加速度下落,然后碰撞到地面会弹起几下,我现在添加了一个方法,点击鼠标右键可以拖动苹果的位置,比如拖到天上再松开,苹果又会自然下落,我是这样做的,在处理邮件的地方
这样做以后我拖动苹果有的时候没问题,它会正常下落,但是又的时候拖动几下后它就会瞬间变回到上一次拖动后它下落的那个地方,然后后面不管你怎么拖动都没有用了,难道setOrigin方法不能更新刚体的位置么?请各位大侠帮帮忙,谢谢了。
------解决方案--------------------
楼主,又来问ogre的东西了?
我知道通过
appRigidBody->getMotionState()->getWorldTransform(trans);可以把刚体的矩阵位置存放到btTransform trans;中,然后用这个数据绑定OGRE中模型的位置让其改变,现在出现个问题,我想通过鼠标来改变刚体的位置,比如天上一个苹果掉落到地上,给苹果绑定bullet
- C/C++ code
World->stepSimulation(1/60.f,10); appRigidBody->getMotionState()->getWorldTransform(trans); appnode->setPosition(trans.getOrigin().getX(),trans.getOrigin().getY(),trans.getOrigin().getZ()); appnode->setOrientation(trans.getRotation().getW(),trans.getRotation().getX(),trans.getRotation().getY(),trans.getRotation().getZ());
这样它就有一个加速度下落,然后碰撞到地面会弹起几下,我现在添加了一个方法,点击鼠标右键可以拖动苹果的位置,比如拖到天上再松开,苹果又会自然下落,我是这样做的,在处理邮件的地方
- C/C++ code
CEGUI::System::getSingleton().injectMouseMove(arg.state.X.rel, arg.state.Y.rel); if(flag1) { trans.setOrigin(btVector3(mMouse->getMouseState().X.abs,mMouse->getMouseState().Y.abs,-50)); appRigidBody->setWorldTransform(trans); appnode->setPosition(mMouse->getMouseState().X.abs,mMouse->getMouseState().Y.abs,-50); }
这样做以后我拖动苹果有的时候没问题,它会正常下落,但是又的时候拖动几下后它就会瞬间变回到上一次拖动后它下落的那个地方,然后后面不管你怎么拖动都没有用了,难道setOrigin方法不能更新刚体的位置么?请各位大侠帮帮忙,谢谢了。
------解决方案--------------------
楼主,又来问ogre的东西了?