我有b2Body,我使用setTransform设置角度。但是我希望b2Body以特定的角度移动。我的CCSprite使用ccMoveBy在这个角度移动。但我的b2Body并没有随着那个CCSprite而移动。所以我想到了使用setTransform。我将角度设置为与移动CCSprite相同的值。但仍然b2Body在其他地方移动。
我使用它像
b->setTransform(b->getPosition(),30*DEG_TO_RED);
b->setLinearVelocity(b2Vec2(120,180));
任何帮助都非常感激。
谢谢。
答案 0 :(得分: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);
答案 1 :(得分: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
b->setTransform(ccpAdd(b2Vec(100/PTMRATIO,200/PTMRATIO), b2Vec(50/PTMRATIO,50/PTMRATIO)),CC_DEGREES_TO_RADIANS(30));