1

我正在尝试在 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它正在查看目标的点。

4

1 回答 1

1

您分配 LocalCamera.Position 两次。您的意思是改为分配 LocalCamera.Target 吗?

于 2012-07-31T18:51:29.713 回答