关于精灵的Gravity

大家好我是cocos2dx的新人。

最近在学习cocos2dx,看着教程试着自己做个小游戏。

游戏的内容大概是随着用户点击屏幕,物理世界的重力就会左右变换,来达到主角精灵的左右晃动。

但是我遇到的问题是经过一段时间的运行,精灵自身会发生旋转,有时候y坐标还会发生移动。下面贴一下精灵physicsbody的代码。

auto body = PhysicsBody::create();
auto shapeBox = PhysicsShapeBox::create(sprite->getContentSize(), PHYSICSSHAPE_MATERIAL_DEFAULT, Point::ZERO);
body->addShape(shapeBox);
body->setDynamic(true);
body->setGravityEnable(true);
body->setCollisionBitmask(0x03);
body->setContactTestBitmask(true);
```


然后改变重力是用以下代码

if(moveDirection == MOVE_RIGHT)
{
    this->changeMoveDirection(MOVE_LEFT);
    this->world->setGravity(Vec2(-100, 0));
}
else if (moveDirection == MOVE_LEFT)
{
    this->changeMoveDirection(MOVE_RIGHT);
    this->world->setGravity(Vec2(100, 0));
}

```


现在我是不知道为什么会出现我说的那种问题,也不知道是不是代码有问题,所以请大虾们帮我看看。。。 谢谢。

请问楼主的问题解决了吗?物理世界的重力加速度可以根据需要改来改去吗?就像你的代码写的那样this->world->setGravity(Vec2(100, 0));?