「按键精灵」游戏小地图寻路的坐标换算

按键精灵小Q
按键精灵官方账号
2022-09-20 15:19:17

作者:郭立员

 

大家好,我是公众号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

 

...全文
590 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-行业数字化 发布问题, 以便更快地解决您的疑问

11

社区成员

发帖
与我相关
我的任务
社区描述
按键精灵交流阵地
其他 企业社区
社区管理员
  • 按键精灵小Q
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧