「按键精灵」游戏小地图寻路的坐标换算
作者:郭立员
大家好,我是公众号3分钟学堂的郭立员~
看标题可能有些朋友是不知道要讲什么,我们用一个图举例:

这是一个游戏的小地图,在地图中点击指定坐标,游戏人物就可以自动移动到那个位置,但是有个问题,游戏中提示的坐标,并不是脚本点击的坐标,主要原因有这么3个:
①横竖屏的原因,游戏是横屏的,坐标原点(0,0)是横屏的左上角,按键通常是按照竖屏的截图,那么坐标原点就是竖屏的左上角,换成横屏就是横屏的左下角。
②比例的原因,小地图的坐标单位一般不是像素,也就是说在小地图上移动一个单位,可能是好几个像素点。
③小地图是有边框的,那么它的坐标原点就不可能是左上角,所以会有相对坐标的偏移。
基于以上原因,脚本坐标和小地图坐标需要进行换算,才能实现在脚本中输入一个游戏坐标,脚本能够正确点击对应的位置。
先来解决第一个横竖屏的问题,这里姑且忽略第二、三个问题。
①假设屏幕的宽度是x0,高度是y0

②游戏横屏时,手机屏幕是逆时针旋转

③假设游戏地图的坐标是(x,y),xy是任意坐标,防止是特殊位置的坐标推算的结果而导致计算偏差。


④xy坐标换算成脚本的坐标(竖屏坐标)是多少?
先把屏幕还原成竖屏

新的坐标,我用黄线表示

假设竖屏坐标是(x1,y2),原本横屏的(x,y)坐标,看图可以知道转成竖屏就是(x0-y,x),那么:
x1=x0-y
y1=x
在这两个算式中,x,y,x0都是已知的数字,所以可以算出x1,y1。
再来解决第二个问题,换算比例的问题。
在游戏地图上找2个相对较远的点,算出两个点的坐标距离,然后在用抓抓看看这两个点的像素距离。
坐标距离是游戏上的数字距离,比如(40,50)到(140,50)那么游戏距离就是150-50=100
像素距离是用抓抓获取的坐标点,还是那两个点,坐标(190,80)到(190,280),像素距离就是280-80=200
那么换算比例是 200/100=2,也就是说游戏地图移动1单位,实际是移动2个像素点。
当然这里的换算数字是假设值,实际比例按照你的游戏测算。
这里用n表示换算比例,那么
x1=x0-y*n
y1=x*n
注意,有些游戏的宽高比例是不一样的,所以宽高比例都需要单独测试。
最后一个问题是边框的相对位置问题,假设边框的宽高是kx,ky,看图:

先不考虑换算比例问题,实际坐标如图

x1=x0-kx-y
y1=ky+x
加上换算比例,最终的结果是:
x1=x0-kx-y*n
y1=ky+x*n
这个其实就是一个相对坐标,相对位置的差值是kx,ky。
本期是一个数学坐标题,对数学敏感的朋友请谨慎观看。。。
原文地址:http://bbs.anjian.com/showtopic-701532-1.aspx
相关推荐
2.5D 地图Staggered, Diamond, Slide 坐标换算及A星寻路的实现
本项目使用了CocosCreator 2.2.0版本实现,项目语言为TypeScript(容易理解),寻路为A*寻路。 内有Readme.pdf 解释Staggered,Diamond,Slide 三种地图的坐标换算公式 如果没有安装CocosCreator, 可以把Example资料夹放到Apache/nginx/NodeJs 等web server即可运行预覧效果!
游戏自动化脚本开发实战:从坐标寻路到图像识别的完整解决方案
自动化脚本开发是提升重复性操作效率的关键技术,其核心原理是通过程序模拟用户输入与界面交互。在游戏或软件自动化场景中,这项技术能显著节省人力,适用于资源采集、数据录入、流程测试等重复性任务。实现稳定自动化的关键技术挑战包括精准的窗口定位、坐标映射转换以及动态环境下的目标识别。其中,图像识别与坐标映射是确保操作准确性的基础,需要处理游戏坐标到屏幕像素的转换,并应对界面缩放、遮挡等复杂情况。通过模块化设计,将环境初始化、坐标解析、智能寻路和状态监控等功能分离,可以构建出健壮且易于维护的脚本框架。本文以一款MMOR
易语言源码易语言传奇寻路源码
易语言源码易语言传奇寻路源码
idea2025-free.zip
idea2025-free.zip
机械三维3D设计图-铆接工位.zip
机械三维3D设计图-铆接工位.zip


