射击前计算轨道周围的导弹轨迹


10

我正在使用Unity3D构建游戏。这是《重力战争》的副本。玩家和AI炮塔都向对方发射导弹(给出一个角度和一个Power变量),试图不使导弹坠落在行星上。但是,这是我的问题:在考虑导弹的引力的同时,如何使AI在射击导弹之前先计算功率和角度?

Answers:


5

像这样的具有多个主体的系统将会变得混乱。我认为您将无法实时求解方程式。您最好的希望是使用遗传算法找到解决方案。

1:产生多个(例如100个)随机解(角度,幂对)。

2:模拟这些解决方案。

3:如果有任何这些,最终击中目标(或足够接近),完成!否则继续。

4:选择最佳的10个解决方案(最终找到最接近目标的解决方案)

5:从这10个解决方案中,通过随机调整其角度和功效,为每个创建10个子级。

6:现在您有100个新解决方案,回到步骤2

如果找不到解决方案,或者搜索时间太长,则需要限制迭代次数。

即使这样,也不能保证找到好的解决方案,因为;1.解决方案可能不存在2.在混乱的系统中,对解决方案进行小的更改可能会对结果产生巨大影响


1

您应该能够模拟镜头而无需绘制它。

然后您可以说,模拟10张照片,然后拍摄10张照片中最接近的一张。


0

考虑到导弹的轨迹是基于输入AnglePower,你应该能够解决(得到一个确切的答案)从反式。

AI的基本步骤如下:

  1. 选择一个随机Power级别。确切是什么都没关系值(在一定程度上),只要它在合理的范围内即可。
  2. 解决(与实际路径相反的)方程以给出精确的(很好,尽可能接近双精度)Angle
  3. 从中选择一个(可修改的)随机偏移量Angle,以调整AI 的“ 难度 ”。
  4. 在(随机)Power和(计算)下像玩家一样射击导弹Angle

您当然可以对两个输入进行随机级别的AI触发,这可能会产生一些有趣的结果...


当您所拥有的全部是重力垂直向下且持续不断的风力时,此方法非常有意义,但是Angle当您在整个宇宙中散布着多个重力体时,您如何用“方程式给出精确的”呢?他们的吸引力取决于您当前的职位。甚至可能无法拍摄一些照片。
约翰·麦克唐纳

@John-如果完全不可能射击(折衷输入功率选择不当),则说明您的运动场存在严重问题。使用这些类型的游戏,任何一名玩家都可以用AI代替。诚然,方程变得更加复杂(并且具有多个主体,很快),但是仍然应该可行。
Clockwork-Muse

很公平。但是您知道方程式要用什么吗?我认为这就是创建这个问题的原因。
约翰·麦当劳

约翰是对的:我正在寻找的是方程式。
Onofrio

@Onofrio-抱歉,我没有相关的方程式……看来您需要多变量演算才能“正确地”完成此操作。
Clockwork-Muse

0

通过不让它们进行计算而是从猜测开始并进行适当的调整来使它变得现实呢?

当我玩《重力战争》时,我就是这么做的。从半随机功效开始,并相应地进行增量调整。在几张照片中,您真的很接近。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.