为游戏创建X和Y轴

时间:2017-01-07 18:40:04

标签: math lua counting

最近我考虑创建我自己的轴x / y,尤其是'x',但是在我想要创建它的游戏中,没有低于0的值,因为pointX = 0在左边的屏幕边框上。

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

例如:

参数:最小值,最大值,screenX,cursorPosition

if(cursorPosition == screenWidth/2) then
  return 0
end

当光标位置低于screenWidth / 2时,功能将平滑计数-0和最小值之间的值(当光标位置= 0时最小值)

并且当光标位于screenWidth / 2之上时,函数将平滑计数0到最大值之间的值(当光标位置=我们的屏幕X时最大值)

任何人都可以向我解释,我怎样才能达到这样的效果? :)

此致

1 个答案:

答案 0 :(得分:0)

使用线性插值来改变动态范围。假设您的视图的分辨率为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 编码,但如果您的值是浮动的,那么请注意整数舍入,同时将整数和浮点放在一起。