我在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时效果很好,但是一旦我开始旋转我的播放器就会出错:(
答案 0 :(得分:0)
我假设您的播放器对象是libGDX Sprite
。因此,getX
和getY
是精灵左下角的坐标,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));