没有物理引擎的碰撞角度

collision angle without physics engine

本文关键字:碰撞 引擎      更新时间:2023-10-16

我正在尝试使气泡碰撞以在左右屏幕上反弹。我在Visual Studio 2012中使用cocos2dx 2.2.5,但我仍然是新手,所以我不使用任何物理引擎。球可以停在左右屏幕,但它们不会反弹,只是漂浮到屏幕顶部。

这是我的代码:

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

我的猜测是,您的重新定位没有按预期工作,并且速度在正值和负值之间不断交替。如果不看到更多代码,很难分辨。我会以这种方式实现这一点,以免受此类问题的影响:

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