人们!
我有一个名为“LookAt”的工作函数,用Lua语言编写。
此功能的代码和逻辑没有错误。
但我相信我们可以简化数学逻辑。
function LookAt(target)
local origin = Vec3.New(Engine.ClientData.Origin)
local direction = origin - target
Engine.Pitch = math.deg(math.atan(direction.Z, math.sqrt((direction.X ^ 2) + (direction.Y ^ 2))))
Engine.Yaw = math.deg(math.atan(direction.Y, direction.X)) - 180.0
end
答案 0 :(得分:0)
我不认为你可以做很多事情来简化数学逻辑。你可以利用这里很少的冗余。但你可以把它分成这样的部分:
function atan_deg(y, x)
return (math.deg(math.atan(y, x)))
end
function hypotenuse(x, y)
return (math.sqrt(x^2 + y^2))
end
function LookAt(target)
local origin = Vec3.New(Engine.ClientData.Origin)
local direction = origin - target
local X, Y, Z = direction.X, direction.Y, direction.Z
Engine.Pitch = atan_deg(Z, hypotenuse(X, Y))
Engine.Yaw = atan_deg(Y, X) - 180.0
end