创建游戏的X与Y轴

最近我在考虑创建自己的坐标系,特别是'X'轴,在我想要创建它的游戏中,没有低于0的值,因为点X = 0在屏幕左边框上。

我想创建一个函数,它将平滑地计算所有值,这取决于我们的游戏分辨率X。

例如:

参数:最小值,最大值,屏幕X,光标位置

如果(光标位置==屏幕宽度/ 2),则
 返回0
end

当光标位置在屏幕宽度/ 2以下时,函数将平滑地计算-0和最小值之间的值(当光标位置= 0时,最小值将是)

当光标位置在屏幕宽度/ 2以上时,函数将平滑地计算0和最大值之间的值(当光标位置= 我们的屏幕X时,最大值将是)

有人可以向我解释一下,我如何达到这种效果?:)

问候

点赞
用户2521214
用户2521214

使用线性插值来改变动态范围。假设您的视图具有分辨率 xs,ys,点 (0,0) 位于左上角,则每个轴的动态范围为:

x = <0,xs-1>
y = <0,ys-1>

而您希望将其更改为:

x' = <minx,maxx>
y' = <miny,maxy>

所以这样做:

x' = minx + x*(maxx-minx)/(xs-1)
y' = miny + y*(maxy-miny)/(ys-1)

如果您需要出于任何原因返回:

x = (x'-minx)*(xs-1)/(maxx-minx)
y = (y'-miny)*(ys-1)/(maxy-miny)

其中 (minx,miny) 是左上角,(maxx,maxy) 是右下角。如果您还要改变任何轴的符号,则可以将 minx<maxx 更改为不需要,因此只需交换初始值,使 minx>maxx

虽然没有在 lua 中编码,但如果您的值是浮动的,请注意在混合整数和浮动值时进行整数舍入。

2017-01-08 10:15:40