Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 为游戏创建X轴和Y轴_Math_Lua_Counting - Fatal编程技术网

Math 为游戏创建X轴和Y轴

Math 为游戏创建X轴和Y轴,math,lua,counting,Math,Lua,Counting,最近我在考虑创建自己的x/y轴,特别是“x”,但在我想要创建它的游戏中,没有低于0的值,因为pointX=0位于屏幕左边框上 我想创建一个函数,它将根据我们的游戏分辨率X平滑地计算所有值 例如: 参数:最小值、最大值、屏幕X、光标位置 if(cursorPosition == screenWidth/2) then return 0 end 当光标位置低于screenWidth/2时,函数将平滑地计算介于-0和最小值之间的值(当光标位置=0时,最小值将为) 当光标位置高于screenWid

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

我想创建一个函数,它将根据我们的游戏分辨率X平滑地计算所有值

例如:

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

if(cursorPosition == screenWidth/2) then
  return 0
end
当光标位置低于screenWidth/2时,函数将平滑地计算介于-0和最小值之间的值(当光标位置=0时,最小值将为)

当光标位置高于screenWidth/2时,函数将平滑地计算0和最大值之间的值(当光标位置=我们的screenX时,最大值将为)

谁能向我解释一下,我怎样才能达到这样的效果


关于

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

x=
y=
您想将其更改为:

x'=
y'=
这样做:

x'=minx+x*(maxx-minx)/(xs-1)
y'=miny+y*(maxy-miny)/(ys-1)
如果你出于任何原因需要回去:

x=(x'-minx)*(xs-1)/(maxx-minx)
y=(y'-miny)*(y-1)/(maxy-miny)
其中,
(minx,miny)
是左上角,
(maxx,maxy)
是右下角。如果您还想更改任何轴的符号,则可以将其设置为
minxmaxx


不使用lua进行编码,但是如果你的值是浮动的,那么在混合整数和浮动时要小心整数舍入。

你需要某种二维lua游戏引擎。尝试一下LÖVE。实际上我正在为名为Multi-Theft Auto San Andreas的游戏编写代码,我已经有了screenX或光标位置等变量,但我不知道如何创建正确的模式来计算这些值/好的,我成功了,谢谢你的帮助现在你知道为什么你不应该在数学课上睡觉了。。。