
cocos2dx 3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体 100
cocos2dx3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体B发生碰撞。但刚体A有时会穿过刚体B,或者嵌入到刚体B中再反弹出去。这怎么...
cocos2dx 3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体B发生碰撞。但刚体A有时会穿过刚体B,或者嵌入到刚体B中再反弹出去。这怎么解决了?刚体A,B都为静态不规则刚体。
展开
3个回答
展开全部
physicsworld所属的物理引擎bug很多,不建议使用,建议重构代码用box2d作为物理引擎,也带有不规则物体的生成方法,并且刚体可以添加子弹(bullet)属性,bullet属性会使运动物体的碰撞检测更加精确,box2d几乎不会出现刚体嵌入的情况。为了防止嵌入发生在使刚体移动时最好使用改变速度的方法而不是直接改变位置,还有什么问题可以继续问
展开全部
看代码吧 至于逻辑自行处理吧
void HelloWorld::objectMoveByJoystick() {
//
if (!m_iscontact) {
CCPoint pos = m_pS->getPosition();
pos.x += m_x * m_speed;
pos.y += m_y * m_speed;
//m_pS->getPhysicsBody()->setVelocity(200,0);这样则不会穿透
auto moveto = MoveTo::create(0.9f, pos);
m_pS->runAction(moveto);//这样控制精灵移动就会出现穿透
}
}
void HelloWorld::objectMoveByJoystick() {
//
if (!m_iscontact) {
CCPoint pos = m_pS->getPosition();
pos.x += m_x * m_speed;
pos.y += m_y * m_speed;
//m_pS->getPhysicsBody()->setVelocity(200,0);这样则不会穿透
auto moveto = MoveTo::create(0.9f, pos);
m_pS->runAction(moveto);//这样控制精灵移动就会出现穿透
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-06-06
展开全部
local function update(delta)
for i=1,3 do
cc.Director:getInstance():getRunningScene():getPhysicsWorld():step(1/180.0)
end
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(update,0,false)
for i=1,3 do
cc.Director:getInstance():getRunningScene():getPhysicsWorld():step(1/180.0)
end
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(update,0,false)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询