如何编写一个函数将值四舍五入到最近的 16 分之一

我正在尝试制作一个游戏,其中每个瓷砖的高度和宽度都是 16。每当鼠标被点击时,我想要获取 x 和 y 值的步长为 16,而不是步长为 1。

我需要步长为 16 的原因是,我使用一个对象数组来存储所有的瓷砖。为了获取数组的索引,我需要精确的 x 和 y 值。

将步长从 1 转换为 16 的代码:

x = math.floor(math.floor(math.floor(x/(8/3))/16)*16)-32

y = math.floor(math.floor(math.floor(y/(8/3))/16)*16)-48

其中 x 和 y 是来自于函数 love.mousepressed(x,y,button)

点赞
用户107090
用户107090

尝试一下:

function round16(x)
  return 16*(math.floor(x/16+0.5))
end

或者,如果 x 是整数,可以使用下面这个 Lua 5.3+ 的函数:

function round16(x)
  return 16*((x+8)//16)
end
2021-03-07 11:35:48