我正在尝试在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
是摄影机正在从中查看目标的点。
您正在分配LocalCamera。定位两次。你是想分配LocalCamera吗。改为目标?