2012-07-31 38 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?