Bewegung zur Kamera

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Bewegung zur Kamera

    Hi,
    ich bastle gerade an einem XNA 3D Game rum. Nun habe ich die Kamera so weit, das ich diese Bewegen kann (vorwärts, rückwärts, links, rechts). Sie Kamera schwenken hab ich auch hin bekommen, nun weiß ich nicht, wie ich es schaffe, das die Kamera dort hingeht wo die Kamera hin zeigt. Wisst ihr da eine Möglichkeit und wenn ja könnt ihr mir ein paar Tipps geben?
    Statt einen einfachen Richtungsvektor anzugeben, rotierst du diesen Richtungsvektor um die Rotation, welche du bei der View-Matrix setzt/gesetzt hast, dadurch erhälst du einen Richtungsvektor, der in die Richtung zeigt, in welche die Kamera schaut, dann diesen einfach zur Kameraposition(Transformation) addieren und fertig ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    dann müsstest du ja nur noch von diesem Vektor die Kameraposition abziehen und schon hast du einen Richtungsvektor...
    Wenn ich jetzt da nicht falsch gedacht hab ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Also wenn ich von dem Vector die Position der Kamera abziehe funktioniert gar nichts mehr

    VB.NET-Quellcode

    1. iint x = 0;
    2. int z = -100;
    3. protected override void Update(GameTime gameTime)
    4. {
    5. KeyboardState keyState = Keyboard.GetState();
    6. MouseState maus = Mouse.GetState();
    7. if (keyState.IsKeyDown(Keys.Escape))
    8. {
    9. Exit();
    10. }
    11. if (keyState.IsKeyDown(Keys.Left))
    12. {
    13. x += 1;
    14. }
    15. if (keyState.IsKeyDown(Keys.Right))
    16. {
    17. x -= 1;
    18. }
    19. if (keyState.IsKeyDown(Keys.Up))
    20. {
    21. z += 1;
    22. }
    23. if (keyState.IsKeyDown(Keys.Down))
    24. {
    25. z -= 1;
    26. }
    27. int look_x = screen_x / 2 - maus.X;
    28. int look_y = screen_y / 2 - maus.Y;
    29. Vector3 sehen = new Vector3(look_x, look_y, z + 100);
    30. Vector3 pos1 = new Vector3(x, 30, z);
    31. viewMatrix = Matrix.CreateLookAt(pos1 ,sehen , new Vector3(0, 1, 0)) ;
    32. base.Update(gameTime);
    33. }


    Du hast jetzt das so gemeint, dass ich sehen - pos1 rechne oder?
    pos1 - sehen dürfte dir den Richungsvektor geben, nicht aber die neue Position...
    somit wäre wohl pos1 += pos1 - sehen eher richtig, ebenso solltest du zur Objektposition (position-sehen) addieren können...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---