旋转时子弹定位

时间:2016-05-14 17:12:22

标签: java android libgdx

我在libgdx上创建了一个Android应用程序(自上而下的射击游戏)并且有子弹定位的问题(不,数学真实)
所以问题在于计算子弹的位置 我想在这里产生子弹:
example (红线所在的位置)
我计算一个位置:

  

bullet.setPosition(world.getPlayer()。getX()+ world.getPlayer()。getWidth()*(float)Math.cos(Math.toRadians(world.getPlayer()。getRotation())),                   world.getPlayer()。getY()+ world.getPlayer()。getHeight()*(float)Math.sin(Math.toRadians(world.getPlayer()。getRotation()));;

当旋转= 0时效果很好,但是一旦我开始旋转我的播放器就会出错:(

1 个答案:

答案 0 :(得分:0)

我假设您的播放器对象是libGDX Sprite。因此,getXgetY是精灵左下角的坐标,getRotation是精灵围绕原点的旋转(假设位于精灵的中心)玩家)。

通过执行一些基本的三角学,您可以将角度和位移转换为(x,y)坐标。子弹需要围绕玩家的中心旋转。这可以使用以下代码完成:

Sprite player = world.getPlayer(); //Just to tidy up the code

//Half width, half height and rotation
float hw = player.getWidth() / 2.0f;
float hh = player.getHeight() / 2.0f;
float rot = Math.toRadians(player.getRotation());

bullet.setPosition(player.getX() + hw + hw * (float) Math.cos(rot),
                   player.getY() + hh + hh * (float) Math.sin(rot));