我正在尝试使气泡碰撞在左右屏幕周围反弹。我正在使用cocos2dx 2.2.5和visual studio 2012,但我还是新手,所以我不使用任何物理引擎。球可以在左右屏幕停止,但它们不会反弹,只是漂浮到屏幕顶部。
这是我的代码:
void level11::move(float delta)
{
if (getPosition().x > VisibleRect::right().x - radius())
{
setPosition( ccp( VisibleRect::right().x - radius(), getPosition().y) );
m_velocity.x *= -1;
}
else if (getPosition().x < VisibleRect::left().x + radius())
{
setPosition( ccp(VisibleRect::left().x + radius(), getPosition().y) );
m_velocity.x *= -1;
}
}
答案 0 :(得分:0)
我的猜测是你的重新定位不能按预期工作,并且速度在正值和负值之间保持交替。没有看到更多代码就很难分辨。我这样做是为了安全地防止这类问题:
if ((m_velocity.x > 0 && getPosition().x > VisibleRect::right().x - radius()) ||
(m_velocity.x < 0 && getPosition().x < VisibleRect::left().x + radius())) {
m_velocity.x *= -1;
}