位置矢量相对于原点

时间:2014-05-13 13:17:50

标签: java libgdx

我有一个小技术游戏,我正在搞乱,我无法弄清楚给定另一个对象来源的1个对象的公式。

所以我有一艘宇宙飞船和一门大炮。我有游戏设置使用单位,所以1单位= 16像素(像素艺术)。

基本上我的大炮应该在X上放置0.5625个单位,在Y上放置0个相对于太空飞船原点的位置,它位于0,0(左下角)。

大炮应该独立于宇宙飞船的角度,它可以瞄准不同的方向,而不是固定以瞄准宇宙飞船的方式。

我不断跟随光标,工作正常。现在,当我旋转宇宙飞船时,显然宇宙飞船的起源正在改变世界坐标,所以放置大炮的公式都搞砸了,就像这样:

    protected Vector2 weaponMount = new Vector2();

        weaponMount.set(getBody().getPosition().x + 0.5625f, getBody()
            .getPosition().y);

显然,如果我将船舶以90°的角度定位,X将会变得不同,并且大炮将从船上下来。这是我的意思的截图示例:

Spaceship fail

这个公式是什么?我尝试过使用cos / sin,但这不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

weaponMount.set(0.5625f,0).setAngle(SpaceshipAngle).add(getBody().getPosition());

SpaceshipAngle是你宇宙飞船的角度。

答案 1 :(得分:0)

宇宙飞船的origin是宇宙飞船旋转和缩放的点(它的Texture)。相反,position始终是Texture的左下角,并且不依赖于旋转 您的问题是,offset并未依赖spaceship的轮换 要注意这个rotation,你应该存储一个Vector2 offset,它描述你的武器偏移(在你的情况下它是Vector2(0.5625f, 0))。
接下来会存储一个描述您的太空飞船float angle的{​​{1}} 然后,您可以使用:rotation轮换offset。 最后一件事是设置武器offset.setAngle(rotation)。这个代码没有太大变化:

position