最近我考虑创建我自己的轴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时最大值)
任何人都可以向我解释,我怎样才能达到这样的效果? :)
此致
答案 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 编码,但如果您的值是浮动的,那么请注意整数舍入,同时将整数和浮点放在一起。