Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

28.06.2011, 21:31

Leben nach Kollision abziehen funktioniert nicht.

Halli Hallo,
Ich habe nun vor nach der Kollisionsabfrage zwischen Spieler und Asteroid, der Variable Lives; einen Abzuziehen (Die Variable Lives ist in der Klasse CLives unter public). So sieht das bei mir nach der Kollisionsabfrage aus:


// Ist Asteroid mit Player kollidiert?

if (RectPlayer.y < RectAsteroid.y + RectAsteroid.h &&
RectPlayer.y + RectPlayer.h > RectAsteroid.y &&

RectPlayer.x < RectAsteroid.x + RectAsteroid.w &&

RectPlayer.x + RectPlayer.w > RectAsteroid.x)

{

// Ja, also gab es eine Kollision. Somit Schuss und

// Asteroid deaktivieren

ItAsteroid->SetAlive (
false);
m_pLives->Lives--;

m_pPlayer->Reset(376.0f, 520.0f);


}

m_pLives->Check ();

// Asteroid lschen, falls deaktiviert

if (ItAsteroid->IsAlive () )
ItAsteroid++;

else

ItAsteroid = m_AsteroidList.erase (ItAsteroid);

}

}
// CheckCollision




Nur leider funktioniert das Abziehen hier nicht richtig. Der Compiler gibt aber auch keine Fehlermeldung aus!?

Hoffe ihr könnt mir helfen.

LG - Lardos

2

28.06.2011, 21:34

Ist lives denn initialisiert? Hat es einen anfangswert?
Metal ist keine Musik sondern eine Religion.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

3

28.06.2011, 21:37

Oh, hab ich vergessen zu erwähnen. Ja, klar und zwar in der Init. Da setze ich Lives = 3;

PS: Danke für die schnelle Reaktion auf die Frage ;)

Lares

1x Contest-Sieger

  • Private Nachricht senden

4

28.06.2011, 21:38

Für wen sind den die Leben? Ich nehme mal an den Spieler?
Was genau funktioniert denn nicht? Wird das Leben nicht abgezogen? Oder stirbt der Spieler sofort?

5

28.06.2011, 21:41

überprüf bitte mal die Stelle mit dem debugger nachdem der asteroid getroffen hat.
Metal ist keine Musik sondern eine Religion.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

6

28.06.2011, 21:50

okay ich werde mal debuggen ;) Ja, die Leben sind für den Spieler. Und ja, das Leben wird eben NICHT abgezogen

7

28.06.2011, 21:51

rufst du die init vielleicht in einer schleife auf, so dass lives immer auf 3 gesetzt wird?
Metal ist keine Musik sondern eine Religion.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

8

28.06.2011, 21:52

nein. Nur einmal am Anfang

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

9

28.06.2011, 21:54

m_pLives->Init (m_pSpriteLives, 0, 0, 3);

Ligt es vielleicht an der 3, die Ich übergebe? Ich übergebe die, und dann setze ich in der init Lives = 3; (0, 0 ist die Position)

Lares

1x Contest-Sieger

  • Private Nachricht senden

10

28.06.2011, 21:56

Rufst du die Init zufällig bei dem Reset vom Player auf?
Ansonsten gib ma bitte die Stelle wo du das Init benutzt.

Werbeanzeige