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

Peter Bucher

Frischling

  • »Peter Bucher« ist der Autor dieses Themas

Beiträge: 28

Wohnort: Schweiz

Beruf: IT

  • Private Nachricht senden

11

31.01.2007, 21:10

Hallo dot

Ich habe einen Profiler, der Fehler scheint mir auch nicht ein Performanceproblem zu sein, sondern eher ein Timing Problem?
Bei der ersten hinzugefügen Einheit in die Liste, funktionier die Kollisionsabfrage immer, bei den nächsten nicht mehr bzw. nur, wenn sie mit der ersten zusammenstossen.


(Link)


Ich finde aber leider keinen Fehler in meinem Code, der sowas verursachen könnte :-/
--
Microsoft MVP - Visual Developer ASP / ASP.NET
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

Peter Bucher

Frischling

  • »Peter Bucher« ist der Autor dieses Themas

Beiträge: 28

Wohnort: Schweiz

Beruf: IT

  • Private Nachricht senden

12

31.01.2007, 21:47

Ich bin es nochmals

Ich gebe jetzt jeweils den Status der 4 Einheiten als Text aus.

C-/C++-Quelltext

1
2
3
4
                bool isCollides = this._gameObjects.IsCollides(obj);
                

                this._font.Print("Object: " + obj.ToString() + " - " + isCollides.ToString(), 600, 600 + (forCounter * 10), ArgbColors.White);


Wenn ich mit der obersten Einheit zur nächstunteren fahre, sind beide True, also kollidieren.
Fals ich eine der unteren zwei berühren, sind nur diese kollidiert, der (vorher) oberste nicht.

Echt komisches Verhalten...


(Link)
--
Microsoft MVP - Visual Developer ASP / ASP.NET
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

Peter Bucher

Frischling

  • »Peter Bucher« ist der Autor dieses Themas

Beiträge: 28

Wohnort: Schweiz

Beruf: IT

  • Private Nachricht senden

13

01.02.2007, 13:08

Hallo zusammen

Es lag an meiner Prüffunktion.
Wenn es nicht dasselbe Objekt war, gab es einfach das erste Resultat zurück und überprüfte weitere Kollisionen gar nicht mehr.

Peinlich :)

So funktionierts:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public bool IsCollides(Unit obj) {
            foreach (Unit item in this._gameObjects) {
                // Verhindern dass sich das Objekt mit sich selber vergleicht

                // Ansonsten ist die Kollision immer true

                if(!obj.Equals(item)) {
                    if (Tools.Intersect(
                        new Rectangle((int)obj.Position.X, (int)obj.Position.Y, obj.Size.Width, obj.Size.Height),
                        new Rectangle((int)item.Position.X, (int)item.Position.Y, item.Size.Width, item.Size.Height)
                        ))
                        return true;
                    }
                }
            return false;
        }



Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

14

14.03.2007, 14:51

Hi,

ich weiß nicht, wie Du die Kollisionsmethode genau benutzt, aber naürlich sollte es
insgesamt nicht darauf hinauslaufen:

C-/C++-Quelltext

1
2
3
4
5
6
7
for(i=0,..,AnzObjekte)
{
  for(j=0,..,AnzObjekte)
  {
    (Kollision?(objekt[i],objekt[j]);
  }
}


sondern besser darauf:

C-/C++-Quelltext

1
2
3
4
5
6
7
for(i=0,..,AnzObjekte)
{
  for(j=i+1,..,AnzObjekte)
  {
    (Kollision?(objekt[i],objekt[j]);
  }
}

Peter Bucher

Frischling

  • »Peter Bucher« ist der Autor dieses Themas

Beiträge: 28

Wohnort: Schweiz

Beruf: IT

  • Private Nachricht senden

15

15.03.2007, 16:56

Hallo Passwort

Ja, du hast vollkommen Recht, so prüft man nichts doppelt :)


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

16

15.03.2007, 17:19

Der Profiler sieht nett aus, kannste da den link posten?

Peter Bucher

Frischling

  • »Peter Bucher« ist der Autor dieses Themas

Beiträge: 28

Wohnort: Schweiz

Beruf: IT

  • Private Nachricht senden

17

15.03.2007, 17:29

Salute

Zitat von »"rewb0rn"«

Der Profiler sieht nett aus, kannste da den link posten?

- http://www.jetbrains.com/profiler/


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

18

15.03.2007, 17:33

ach für .net, schade. trotzdem danke

Werbeanzeige