使用三角法拍摄多个子弹像霰弹枪

时间:2014-01-02 16:26:25

标签: android trigonometry angle

我正在制作一个游戏,玩家跟随鼠标,子弹被射出玩家后端,朝向鼠标移动的相反方向。有点难以用语言解释,所以我很快在paint.net上做了一个粗略的草稿来演示。

灰球是球员。黄色光标是玩家在触摸屏上触摸的位置。黑球是子弹。

在示例1和2中,玩家朝向光标移动,子弹在相反方向后面射击。我想要的就是在例子3中,背面有不止一颗子弹,它们也像霰弹枪一样展开。

图像: http://i.stack.imgur.com/Q3Q18.png enter image description here

我的目标是允许玩家升级,以便一次能够射击多个子弹。我想要的只是让玩家一次最多可以拍摄5张。提前谢谢!

1 个答案:

答案 0 :(得分:1)

其他子弹的角度将使用您使用的相同公式,但角度相对于中心子弹将是一些恒定的偏移。例如,如果您使用以下公式作为中心项目符号:

x += Math.cos(angle * Math.PI/180) * Status.bulletSpeed; 
y += Math.sin(angle * Math.PI/180) * Status.bulletSpeed;

然后你的其他子弹将是:

x1 += Math.cos((angle + 10) * Math.PI/180) * Status.bulletSpeed; 
y1 += Math.sin((angle + 10) * Math.PI/180) * Status.bulletSpeed;


x2 += Math.cos((angle - 10) * Math.PI/180) * Status.bulletSpeed; 
y2 += Math.sin((angle - 10) * Math.PI/180) * Status.bulletSpeed;

如果您愿意,可以选择10以外的其他值。如果你想一次拍摄5张,你也可以使用:

x3 += Math.cos((angle + 20) * Math.PI/180) * Status.bulletSpeed; 
y3 += Math.sin((angle + 20) * Math.PI/180) * Status.bulletSpeed;


x4 += Math.cos((angle - 20) * Math.PI/180) * Status.bulletSpeed; 
y4 += Math.sin((angle - 20) * Math.PI/180) * Status.bulletSpeed;

此处,您使用的数字应该是您为第一组选择的值的两倍。