[XNA C#] Schüsse mit offset richtig positionieren?

BlackPsycho

Mitglied
Hallo, in meinem top down space shooter spiel kann man sich drehen und bewegt sich in die gedrehte richtung.

Nun kommt das problem:
Wenn ich 2 schüsse gleichzeitig abfeuern will also mit einem abstand dazwischen das sieht dann ca. so aus

Ungedreht:
ungedreht.jpg

Stück Gedreht:
stückgedreht.jpg

Rechts:
rechts.jpg

Wie ihr seht bewegen sich die schüsse immer mehr zusammen richtung mittelpunkt bis sie sich komplett überschneiden sobald das schiff nach rechts zeigt, aber wenn ich es weiter richtung unten drehe normalisiert es sich wieder.

und ich wollte fragen ob jemand weis wie man das problem beseitigen kann.

Die GunOffsets:

Code:
private Vector2 gunOffset = new Vector2(2, 8);
private Vector2 gunOffset2 = new Vector2(20, 8);

hier ist die funktion die die schüsse abfeuert im player manager:

Code:
private void FireShot()
        {
            if (shotTimer >= minShotTimer)
            {
                
                PlayerShotManager.FireShot(
                    playerSprite.Location + gunOffset,
                    new Vector2((float)Math.Sin(playerSprite.Rotation),
                        -(float)Math.Cos(playerSprite.Rotation)),
                        true, speedMod);

                PlayerShotManager.FireShot(
                    playerSprite.Location + gunOffset2,
                    new Vector2((float)Math.Sin(playerSprite.Rotation),
                        -(float)Math.Cos(playerSprite.Rotation)),
                        true, speedMod);

                shotTimer = 0.0f;
            }
        }

Und die Shotmanager Fire Shot funktion:

Code:
public void FireShot(
            Vector2 location,
            Vector2 velocity,
            bool playerFired,
            float speedMod)
        {
            Sprite thisShot = new Sprite(
                location,
                Texture,
                InitialFrame,
                velocity);

            thisShot.Velocity *= shotSpeed + speedMod;

            for (int x = 1; x < FrameCount; x++)
            {
                thisShot.AddFrame(new Rectangle(
                    InitialFrame.X + (InitialFrame.Width * x),
                    InitialFrame.Y,
                    InitialFrame.Width,
                    InitialFrame.Height));
            }
            thisShot.CollisionRadius = CollisionRadius;
            Shots.Add(thisShot);
        }

danke im vorraus
 
Zuletzt bearbeitet:
Zurück