Lua - 相机移动,计算 Z

我在遇到一个我无法解决的数学问题。

我正在用 Lua 制作一个模型浏览器,其中鼠标移动被钩子挂接到相机位置,相机位置有 2 种模式:固定和自由,自由模式工作得非常完美,在计算适当的 Z 坐标时,似乎固定模式有些问题。

X 和 Y 可以正确计算,并且没有任何问题,但是 Z 的值似乎随着 X、Y 的变化变化过于大,就像这里所显示的一样:http://puu.sh/oTN1v/5846343f82.webm (每当我点击右键时就会发生这些相机扭曲,即使我没有移动鼠标)

function self:RightMouseClick()
local cx, cy = mousepos()
local radius = math.sqrt( math.pow( campos.x, 2 ) + math.pow( campos.y, 2 ) )
local ang = ( camorigin - campos ):Angle()

function self:Think()
    if input.IsMouseDown( MOUSE_RIGHT ) then
        local x = camorigin.x + radius * math.cos( math.rad( 1 ) * ( 180 + ang.yaw + ( cx - mousex() ) * 0.5 ) )
        local y = camorigin.y + radius * math.sin( math.rad( 1 ) * ( 180 + ang.yaw + ( cx - mousex() ) * 0.5 ) )
        local z = camorigin.z + radius * math.sin( math.rad( 1 ) * ( ang.pitch + ( cy - mousey() ) * 0.5 ) )

        campos = Vector( x, y, z )
    end
end

end

@编辑:如果你不知道这段代码的含义,你可能最好告诉我如何正确地计算相机环绕轴的 Z 值。

点赞
用户88888888
用户88888888

Removing camorigin from calculation of x, y, z worked out.

已经将 camorigin 从计算 x、y、z 中移除成功。

2016-05-16 11:04:55