Autor Beitrag
Stratego
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 10.09.11 01:08 
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...


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 36
Erhaltene Danke: 6

Win 95, Win XP, Win 7 64-bit
C# (VS 2010, #Develop), Java (eclipse)
BeitragVerfasst: Sa 10.09.11 11:15 
Hi,

du kannst doch einfach eine Variable entsprechend belegen:

ausblenden 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

_________________
"Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann." Joseph Weizenbaum
Stratego Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 10.09.11 11:40 
Stimmt, vielen Dank!