【发布时间】:2013-01-20 07:29:31
【问题描述】:
我有一个可以发射炮弹和烟雾粒子效果的大炮,我希望炮弹从大炮的末端开始,我可以通过将大炮的宽度添加到它的 x 位置并添加一半来做到这一点到大炮的高度。当大炮未旋转时,这可以正常工作,但是当我旋转大炮时,它不在正确的位置。这就是我用来尝试旋转矢量的方法。
Vector2 rotPos = cannon.position.tmp().add(cannon.bounds.width, cannon.bounds.height/2).rotate(cannon.angle);
我怎样才能得到一个旋转的矢量,在正确的位置发射炮弹。见下图。
更新 我也试过下面的,同样的结果,球向左飞了
Vector2 rotPos = world.CannonBody.getWorldVector( world.CannonBody.getPosition() );
【问题讨论】:
-
stackoverflow.com/questions/9164146/… 另见函数GetWorldPoint,它可以为您提供起始位置
-
我使用
Vector2 rotPos = world.CannonBody.getWorldVector( world.CannonBody.getPosition() );,球不是从大炮的末端射出,而是从图像左侧射出。我正在使用 setTransform 旋转炮身。 -
如何让炮身旋转后从炮身末端射球?我有正确的角度和速度,我只需要将球设置在正确的位置。
-
以下代码有效,但仅适用于 0 到 45 度之间的角度。
position.tmp().add(bounds.width * (float)Math.cos(Math.toRadians(angle)), bounds.width * (float) Math.sin(Math.toRadians(angle)) );
标签: vector rotation box2d libgdx