0

我有一个具有旋转运动和射击功能的太空射击游戏,但是当我射击时,子弹会在移动时略微向左或向右伸出我该如何解决这个问题谢谢:)

Bullets newBullet = new Bullets(Content.Load<Texture2D>("PlayerBullet"));
newBullet.velocity = new Vector2((float)Math.Cos(rotation),
                                 (float)Math.Sin(rotation)) * 5f + playerVelocity;
newBullet.position = playerPosition + newBullet.velocity * 5;

这是一些我认为导致问题的代码

4

3 回答 3

2

我相信您的位置和速度计算不正确。

初始位置应该只是玩家的位置(例如,如果携带枪,还可能加上偏移量)

newBullet.position = playerPosition;

我不确定您为什么要在子弹中添加玩家速度。为什么玩家移动的速度很重要?我还假设* 5f如果只是一个速度系数。

newBullet.velocity = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)) * 5f;

试试看,看看是否解决了问题。

于 2013-10-09T01:48:21.720 回答
0

我希望子弹的初始位置是

newBullet.position = playerPosition + playerVelocity * 5;

代替

newBullet.position = playerPosition + newBullet.velocity * 5;
于 2013-10-08T15:02:03.927 回答
0

我打赌你在创建子弹后更新你的玩家位置,基本上是产生子弹,然后向左或向右移动你的玩家对象。

在使用它来定位子弹、相机等之前,请确保您已完成更改玩家位置。

于 2013-10-09T08:57:28.317 回答