没有物理引擎的碰撞角度

时间:2015-01-10 01:32:44

标签: c++ cocos2d-x collision-detection

我正在尝试使气泡碰撞在左右屏幕周围反弹。我正在使用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;
   }
}

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;
}