处理 Flying 相机的 LookVector

我正在尝试在XNA中设置自由飞行相机。我在此情况下使用连接到CLR的Lua来控制相机。

到目前为止,我已经尝试了以下内容:

dkeys={}

LocalController.KeyDown:Add(function(s,e)
    dkeys[KeyboardKey.FromInt(e)]=true
    if e==KeyboardKey.W then
        local r,x=coroutine.resume(coroutine.create(function()
            while wait(.5) and dkeys['W'] do
                local LookVector=Vector3:Subtract(LocalCamera.Target,LocalCamera.Position)
                LookVector:Normalize()
                LookVector=Vector3:Multiply(LookVector,Vector3:Create(.1,.1,.1))
                LocalCamera.Position=Vector3:Add(LocalCamera.Position,LookVector)
                LocalCamera.Position=Vector3:Add(LocalCamera.Target,LookVector)
            end
        end))
    end
end)

显然我做错了什么,因为结果是相机在正负形式的同一点之间来回弹跳。

这是我在KeyUp上使用的代码:

LocalController.KeyUp:Add(function(s,e)
    dkeys[KeyboardKey.FromInt(e)]=false
end)

我是否误解了LookVector的含义?LocalCamera是当前的相机对象,Target是相机正在观察的位置,而Position是相机从目标看向位置。

点赞
用户802203
用户802203

你给 LocalCamera.Position 赋值了两次。你是不是想要赋值 LocalCamera.Target?

2012-07-31 18:51:29