尝试在我的游戏中制作子弹对象。
这是我的代码:
CircleShape circleShape = new CircleShape();
FixtureDef ballFix = new FixtureDef();
ballFix.shape = circleShape;
Body ball = PhysicsFactory.createCircleBody(getPhysicsWorld(), x, y, 0.2f, BodyType.DynamicBody, ballFix);
ball.setLinearVelocity(5f, 5f);
无论我如何尝试,我都无法向负x方向“发射子弹”,即使我将x方向更改为负方向!
为了更好地可视化,我制作了一张图片:
:)
我做错了什么?
我知道这已经有 9 年多了,但我遇到了同样的问题,并且在网上找不到任何与此类似的问题。
在我的情况下,我在与角色控制器相同的位置生成子弹。这导致它与我角色的碰撞箱发生碰撞。
在您的情况下,您可以修改此代码,以在与您射击子弹的方向相同的方向上有一点偏移。
CircleShape circleShape = new CircleShape();
FixtureDef ballFix = new FixtureDef();
ballFix.shape = circleShape;
Body ball = PhysicsFactory.createCircleBody(getPhysicsWorld(), x + 1f, y + 1f, 0.2f,
// Or instead of (x + 1f, y + 1f) you could use
// (x + viewDirection.x * modifier, y + viewDirection.y * modifier)
BodyType.DynamicBody, ballFix);
ball.setLinearVelocity(5f, 5f);