【问题标题】:Using trigonometry to shoot multiple bullets like a shotgun使用三角学像霰弹枪一样射击多发子弹
【发布时间】:2014-01-02 16:26:24
【问题描述】:

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

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

在示例 1 和示例 2 中,玩家正在向光标移动,而子弹在反方向射击。我想要 o 就像示例 3 中一样,其中有不止一颗子弹从背后射出,而且它们也像霰弹枪一样散开。

图片: http://i.stack.imgur.com/Q3Q18.png

我的目标是让玩家升级后能够一次发射不止一颗子弹。我想要的只是让玩家一次最多可以射击 5 个。提前致谢!

【问题讨论】:

  • 你在使用某种引擎吗?无论如何,球是如何移动的?通过 X 和 Y 的步骤?通过角度和距离/速度?其他?
  • 你为这个应用写过代码吗?
  • 我在android上用java做这个。这就是我在射击单发子弹时管理子弹移动方式的方式:x += Math.cos(angle * Math.PI/180) * Status.bulletSpeed; y += Math.sin(angle * Math.PI/180) * Status.bulletSpeed;
  • 是的,我已经编写了代码。我公式中的角度也是玩家角度。
  • 如果您需要更多帮助来了解我想要什么,我曾经玩过一个使用相同概念的 Flash 游戏:kongregate.com/games/gamereclaim/death-vs-monstars

标签: android trigonometry angle


【解决方案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;

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

【讨论】:

  • 您也可以随机偏移角度,而不是设置偏移量
  • 非常感谢!我一有机会就试试,我会告诉你进展如何。现在我看着它,解决方案看起来很明显。我在中四,我在学校几个月才开始学习三角学,所以这些概念对我来说仍然是新的,但感谢你简化了它,让我能理解。
  • 这对你有用吗?如果是,请将此答案标记为正确。
  • 它成功了,我不知道如何设置为正确,我也不能投票
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多