Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5 2D游戏-100%准确人工智能?_Javascript_Html_Artificial Intelligence_Aim - Fatal编程技术网

Javascript HTML5 2D游戏-100%准确人工智能?

Javascript HTML5 2D游戏-100%准确人工智能?,javascript,html,artificial-intelligence,aim,Javascript,Html,Artificial Intelligence,Aim,我一直在用JavaScript使用canvas重新创建经典的小行星,我对游戏开发相当陌生。我想知道是否有可能创建一个命中玩家成功率为100%的AI(假设敌人的子弹可以无限期地移动)?我希望能够控制敌人AI的准确度,从完全不准确到完全准确——无论敌人和玩家对象的相对速度如何,射击都能保证击中玩家 我有一个粗略(和简单)的例子,我在寻找什么。正如你所看到的,它在预测玩家下一步的位置方面做得比较好,但它绝对不是完美的(我也注意到视频中的一些子弹速度错误,如果玩家在仅供参考的时候被摧毁,UFO会向随机方

我一直在用JavaScript使用
canvas
重新创建经典的小行星,我对游戏开发相当陌生。我想知道是否有可能创建一个命中玩家成功率为100%的AI(假设敌人的子弹可以无限期地移动)?我希望能够控制敌人AI的准确度,从完全不准确到完全准确——无论敌人和玩家对象的相对速度如何,射击都能保证击中玩家

我有一个粗略(和简单)的例子,我在寻找什么。正如你所看到的,它在预测玩家下一步的位置方面做得比较好,但它绝对不是完美的(我也注意到视频中的一些子弹速度错误,如果玩家在仅供参考的时候被摧毁,UFO会向随机方向射击)

我使用的功能是:

function angleBetween( p1, vel1, p2, vel2 ) {
    var relativePoint = {
        x: ( p2.x + vel2.x ) - ( p1.x + vel1.x ),
        y: ( p2.y + vel2.y ) - ( p1.y + vel1.y )
    };

    return Math.atan2( -relativePoint.y, -relativePoint.x );
}
p1和vel1是第一个对象的x、y位置和速度

p2和vel2是第二个对象的x、y位置和速度

那么,考虑到物体的相对速度,基本上是否有一种方法可以改进我所做的工作,从而只需要一次击球就可以击中玩家


提前感谢,如果我不清楚,请道歉。

如果没有计算机作弊,这是不可能的,因为射击地点的计算是基于球员当前的速度和位置。问题是玩家可以在敌人已经射击后控制自己的速度,这使得之前的最终位置计算不准确。你可以发射一颗子弹追踪玩家。如果子弹的速度高于玩家的速度,那么子弹肯定会命中。要实现这一点,请计算指向玩家的向量,并朝该方向移动子弹。每一帧都这样做,这样子弹的速度向量将始终指向玩家,因为你将子弹的速度设置为高于玩家的速度,砰!玩家将被击中。只有当你强迫玩家去子弹要去的地方,你才能这样做。这需要计算机方面进行更多的协调,而不仅仅是确定目标。事实上,有很多方法可以做到这一点,其中大多数都会被认为是电脑的彻头彻尾的欺骗。例如,以正确的模式投掷大量小行星,迫使玩家要么击中小行星,要么击中子弹。事实上,这更简单的是确保球员在那一点上无法获胜。