Camerafehler



  • Hallo,

    ich find den fehler nicht. Rotation klappt, aber vorwärtsbewegen
    ist teilweise als würde man einer Wand entlang laufen.
    Ich glaube der Fehler liegt irgendwo beim Transformieren der Vectoren.

    camera.cs

    public void Update()
            {
                Quat = Quaternion.CreateFromAxisAngle(Vector3.Up,MathHelper.ToRadians(RotationY));
                PlayerPosition += Vector3.Transform(PlayerSpeed, Matrix.CreateFromQuaternion(Quat));            
                View = Matrix.CreateLookAt(PlayerPosition
                            + Vector3.Transform(new Vector3(0, 2, -5), Matrix.CreateFromQuaternion(Quat))
                            , PlayerPosition
                            + Vector3.Transform(new Vector3(0, 1, 5), Matrix.CreateFromQuaternion(Quat))
                            , Vector3.Up);
                Projection = Matrix.CreatePerspectiveFieldOfView(
                            MathHelper.PiOver4, AspectRatio,
                            1.0f, 10000.0f);  
            }
    

    Draw-Method

    Matrix[] transform2 = new Matrix[model.Bones.Count];
                model.CopyAbsoluteBoneTransformsTo(transform2);
    
                foreach (ModelMesh mesh in model.Meshes)
                {
                    foreach (BasicEffect effect in mesh.Effects)
                    {
                        effect.LightingEnabled = true;
                        effect.AmbientLightColor = new Vector3(255, 255, 255);
                        effect.DirectionalLight0.Direction = new Vector3(0, 0, 0);
                        effect.World = transform2[mesh.ParentBone.Index] * Matrix.CreateFromQuaternion(camera.Quat) * Matrix.CreateTranslation(camera.PlayerPosition);
                        effect.View = camera.View;
                        effect.Projection = camera.Projection;
                    }
                    mesh.Draw();    
                }
    

    Ich sitz schon ettliche stunden dran, aber komme nicht weiter,
    ich hoffe einer von euch kann mir sagen was ich falsch mache,
    danke.


Anmelden zum Antworten