2

我有使用 setTransform 设置角度的 b2Body。但我希望 b2Body 以特定角度移动。我的 CCSprite 正在使用 ccMoveBy 以那个角度移动。但是我的 b2Body 并没有与那个 CCSprite 一起移动。所以我想到了使用setTransform。我将角度设置为与移动 CCSprite 相同的值。但是 b2Body 仍然移动到其他地方。

我用过

b->setTransform(b->getPosition(),30*DEG_TO_RED);
b->setLinearVelocity(b2Vec2(120,180));

非常感谢任何帮助。

谢谢,。

4

2 回答 2

1

如果您想自己移动 b2Body,那么最好将其设置为运动体(您可以随时更改身体的类型)。然后只需设置速度:

body->SetType(b2_kinematikBody);
float angle = 30*M_PI/180.0f;
float spd = 50;
b2Vec2 velocity = spd*b2Vec2(cos(angle), sin(angle));
body->SetLinearVelocity(velocity);
于 2011-07-06T14:50:02.687 回答
0
#define CC_DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) * 0.01745329252f) // PI / 180

这是为了让身体旋转 30 度而不改变它的位置。

    b->setTransform(b->getPosition(),CC_DEGREES_TO_RADIANS(30));

    b->setLinearVelocity(b2Vec2(120,180));

或者

    b->setTransform(b2Vec(100/PTMRATIO,200/PTMRATIO),CC_DEGREES_TO_RADIANS(30));

在这里我改为 100 X 200Y POSITION

导入“CGPointExtension.h”

        b->setTransform(ccpAdd(b2Vec(100/PTMRATIO,200/PTMRATIO), b2Vec(50/PTMRATIO,50/PTMRATIO)),CC_DEGREES_TO_RADIANS(30));
于 2011-07-06T12:42:56.130 回答