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を2回割り当てています。代わりにLocalCamera.Targetを割り当てるつもりでしたか?

于 2012-07-31T18:51:29.713 に答える