Я только начинаю изучать LUA, и у меня есть проблема, которую я не уверен, какой способ «правильно» решить.Когда я передаю Defold vmath.vector3
своей функции, он, кажется, передается по ссылке и, следовательно, изменяется.
Если я умножу его на что-либо, это будет решено, однако.
Есть ли другой более правильный способ решить эту проблему?Я не хочу изменять исходный вектор, который передаю в качестве аргумента.
function M.get_nearest_tile(x, y)
if y then -- if we've got 2 inputs, use x & y
x = math.floor(x / M.TILE_SIZE)
y = math.floor(y / M.TILE_SIZE)
return x, y
else -- if we've only got 1 input, use as vector
local vec = x * 1 -- multiplying by 1 to avoid modifying the real vector
vec.x = math.floor(vec.x / M.TILE_SIZE)
vec.y = math.floor(vec.y / M.TILE_SIZE)
return vec.x, vec.y
end
end