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
であり、ターゲットを見ているポイントです。