2012-07-31 67 views
1

我想在XNA中设置一个免费的飞行相机。我使用Lua主要连接到CLR来控制相机。处理LookVector飞行相机

我已经试过到目前为止以下:

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是它正在查看目标的位置。

+1

您正在分配LocalCamera.Position两次。你是不是要分配LocalCamera.Target? – Ani 2012-07-31 14:04:40

+0

@ananthonline:你是否介意将其作为答案发布?这实际上恰好是问题所在。我讨厌盯着像这样的事情几个小时,只是为了让它回到我的脸上,就像这样愚蠢。感谢您的帮助!有时它只是重新审视一下。 – FreeSnow 2012-07-31 18:16:45

+1

完成。是的,它总是那些小东西。很高兴我能够帮助! :) – Ani 2012-07-31 18:53:14

回答

1

您正在分配LocalCamera.Position两次。你是不是要分配LocalCamera.Target?