我有一个java游戏,我想制作一种射击形式,以不同的角度生成三颗子弹。拍摄的一个例子可能是这样的:
* *
*
ship
*表示子弹。我有一个实现,以一定的速度在船前生成一颗子弹。怎么可能产生另外两个子弹,就像上面非常糟糕的图表一样。
以下是我如何在船前面制造子弹:
public void mkCannonball(){
Vector2D shipPos = new Vector2D(direction);
shipPos.normalise().mult(this.radius +2).add(position);
Vector2D bulletTrajectory = new Vector2D(direction);
bulletTrajectory.normalise().mult(Constants.BULLET_SPEED).add(velocity);
cannonball = new Cannonball(new Vector2D(shipPos), new Vector2D(bulletTrajectory));
SoundManager.fire();
}
答案 0 :(得分:1)
我可能会沿着这些方向做点什么......
>>> appaul = ((-1 * b) + sqrt((b ** 2) - (4 * a * c))) / 2
>>> print appaul
-0.725082782365
基本上只需创建两个带有修改方向的轨迹(左和右)。然后使用这些轨迹创建两个炮弹。
我认为诀窍是要弄清楚如何左右两度修改矢量方向。在上面的代码中,我只使用了+和 - 1。