温馨提示:这篇文章已超过460天没有更新,请注意相关的内容是否还可用!
摘要:本研究利用人工智能技术实现FPS游戏的自动瞄准功能。采用yolov5fps自瞄技术,该技术基于深度学习算法,能够实现对游戏画面的实时目标检测与定位。通过训练模型,系统能够自动识别并瞄准目标,提高游戏的自动化程度和玩家体验。此技术的引入为FPS游戏带来了新的玩法和可能性,同时也为人工智能在游戏领域的应用提供了更广阔的发展空间。
我要指出这段源码比较粗糙,欢迎大家提出优化建议,我们可以一起交流学习。
让我们了解一下可能会遇到的东西和可能会遇到的问题。
1、xy坐标点与当前鼠标的xy坐标点距离计算,这是实现跟枪功能的关键之一。
2、获取窗口句柄,本文使用的是根据窗口名称获取句柄的方式。
3、推理方式,本文使用的是GPU,因为GPU推理速度快。
4、屏幕宽高获取、敌人坐标获取和计算哪个是最近的敌人并控制鼠标去敌人身上和头上,这里还涉及到一个知识点,即只需要敌人身体坐标就可以计算得出敌人头部坐标。
5、鼠标按键状态获取。
正文开始,我们先从头开始代码解析,先来一个xy坐标的距离计算。
以下是Python代码:
class Point(): def __init__(self, x1, y1, x2, y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 class Line(Point): def __init__(self, x1, y1, x2, y2): super().__init__(x1, y1, x2, y2) def getlen(self): changdu = math.sqrt(math.pow((self.x1 - self.x2), 2) + math.pow((self.y1 - self.y2), 2)) return changdu
接下来是全文代码解析,我们导入依赖的库,然后定义了两个类,即Point和Line类,用于计算两个坐标点的直线距离。
我们获取到某FPS游戏的窗口句柄,并定义了一个方法来获取窗口截图,我们调用Yolo模型进行推理,获取每个敌人的坐标,并计算每个敌人中心坐标,然后挑选距离准星最近的敌人,如果左键是按下状态则控制鼠标移动到敌人的身体或者头部(本文计算方式是移动到头部)。
在实时进行游戏窗口推理的部分,我们进行了屏幕截取、模型使用、推理、过滤模型、循环遍历每个敌人的坐标信息、距离计算等步骤,我们根据距离数据获取到距离最近的敌人位置,并进行瞄准操作。
关于鼠标行为的控制部分,使用了相对移动的方式,通过计算敌人坐标与屏幕中心的相对位置,来控制鼠标的移动,y轴相对移动的计算方式可能比较难以理解,我附上了实例图进行说明。
对于其他fps游戏,我们只需要修改窗口名称参数和分辨率参数即可,以上就是Yolov5 FPS跟枪的源码解析和原理讲解,感谢大家支持,我是毕加锁,期待你的关注。
注:以上内容可能存在语法错误或格式错误,请自行调整。
还没有评论,来说两句吧...