大家好,我是公众号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。
本期是一个数学坐标题,对数学敏感的朋友请谨慎观看。。。
内容就这些,觉得还行帮忙点个赞~