以给定角度移动 b2Body

发布于 2024-11-18 23:36:48 字数 358 浏览 4 评论 0原文

我有 b2Body,我使用 setTransform 设置角度。但我希望 b2Body 以特定角度移动。我的 CCSprite 使用 ccMoveBy 沿该角度移动。但我的 b2Body 没有随着 CCSprite 一起移动。于是我想到了使用setTransform。我将角度设置为与移动 CCSprite 时相同的值。但 b2Body 仍然移动到其他地方。

我已经使用它了,

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

非常感谢任何帮助。

谢谢你,。

I have b2Body of which i set angle using setTransform. But I want b2Body to move in particular angle. My CCSprite is moving in that angle using ccMoveBy. But my b2Body is not moving with that CCSprite. So I thought of using setTransform. I set the angle with the same value by which I'm moving CCSprite. But still b2Body moves somewhere else.

I have used it like

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

Any help is grealy appreciated.

Thank you,.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水染的天色ゝ 2024-11-25 23:36:48

如果您想自己移动 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);

If you want to move b2Body by yourself then it is a good idea to make it a kinematic body (you can change body's type every time you want). Then just set the velocity:

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);
望她远 2024-11-25 23:36:48
#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

import "CGPointExtension.h"

        b->setTransform(ccpAdd(b2Vec(100/PTMRATIO,200/PTMRATIO), b2Vec(50/PTMRATIO,50/PTMRATIO)),CC_DEGREES_TO_RADIANS(30));
#define CC_DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) * 0.01745329252f) // PI / 180

this is for 30degree rotation of body and not change in its position.

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

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

or

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

here i changed to 100 X 200Y POSITION

import "CGPointExtension.h"

        b->setTransform(ccpAdd(b2Vec(100/PTMRATIO,200/PTMRATIO), b2Vec(50/PTMRATIO,50/PTMRATIO)),CC_DEGREES_TO_RADIANS(30));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文