Entwickler-Ecke

C# - Die Sprache - Frage zu rectangle


Stratego - Sa 10.09.11 01:08
Titel: Frage zu rectangle
Hallo ich habe zwei rectangles, wenn sie sich berühren soll ein leben abgezogen werden, aber da sie beide nicht nr 1 px groß sind ( oder warum auch immer das so ist) werden die leben ganz abgezogen.
Die boolesche Variable verloren ist auf false gesetzt und wird true wenn sie sich berühren. Hat jemand eine Idee wie ich das hinbekomme, das ich nur 1 Leben verliere...



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  if (player_rect.Intersects(enemy_rect2))
                    {



                        verloren = true;
                    }



                    if (verloren == true)
                    {
                        life -= 1;
                    }


jaenicke - Sa 10.09.11 01:57

Du kannst dir merken, dass die Berührung da ist. Und bei folgenden Prüfungen ignorierst du das, setzt aber die Variable zurück, wenn die Berührung nicht mehr da ist. Berühren sich die Objekte erneut wird so auch wieder ein Punkt abgezogen.


Stratego - Sa 10.09.11 11:07

Habe ich mir auch schon überlegt, wie prüfe ich wenn sich die beiden rectangles nicht mehr berühren?


stes - Sa 10.09.11 11:15

Hi,

du kannst doch einfach eine Variable entsprechend belegen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
bool habenSichBeruehrt = false;

//Programmschleife etc.:
bool beruehrenSich= player_rect.Intersects(enemy_rect2);

if (!habenSichBeruehrt && beruehrenSich)
{
   habenSichBerueht = true;
   //verloren
}
else if (habenSichBeruehrt && !beruehrenSich)
{
   // keine Berührung mehr
   habenSichBeruehrt = false;
}


Gruß
stes


Stratego - Sa 10.09.11 11:40

Stimmt, vielen Dank!