Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [Andorra2D]: Wie bekomme ich raus wo die Kollision stattfand (https://www.delphipraxis.net/113659-%5Bandorra2d%5D-wie-bekomme-ich-raus-wo-die-kollision-stattfand.html)

Spiderpig_GER_15 12. Mai 2008 16:37


[Andorra2D]: Wie bekomme ich raus wo die Kollision stattfand
 
Hi,

Ich habe 2 Männchen, die man über den Bildschirm steuern kann, und Einige Hindernisse.
Wie mache ich es am besten das man, wenn man gegen ein Hinderniss stößt nicht weiter(dagegen) laufen kann?

Meine Kenntnisse reichen aus um bei einer Kollision das Männchen an einen bestimmten Punkt zu setzten, aber ich
weiß nicht, wie ich es machen soll, dass man ncith weiter durch das hinderniss durchlaufen kann.

Ich hoffe ihr versteht was ich meine,

MfG Spiderpig

.chicken 12. Mai 2008 20:32

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
 
Prüf doch einfach jedes mal bevor du die Figur bewegst ob sie gerade kollidiert. Tut sie das, dann brich die Bewegung einfach ab.
Dabei musst du natürlich überprüfen ob die Richtung der Kollision mit der der Bewegung übereinstimmt, damit man die Figur auch wieder von einem Hinderniss weg bewegen kann ;-)

Nuclear-Ping 12. Mai 2008 20:39

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
 
Du musst halt einfach die X- und Y-Koordinaten des kollidierenden Sprites mit deiner Figur vergleichen. Stell dir das einfach bildlich vor, in Form zweier Boxen.

Wenn Figur.X > Sprite.X, ist die Kollision von rechts passiert.
Wenn Figur.X < Sprite.X, ist die Kollision von links passiert.
Wenn Figur.Y > Sprite.Y, ist die Kollision von unten passiert.
Wenn Figur.Y < Sprite.Y, ist die Kollision von oben passiert.

Dazu kannst du ein Set definieren: TCollisionEdges = set of (ceTop, ceBottom, ceLeft, ceRight). Und jenachdem, welche Bedingung von da oben zutrifft, fügst du das Teil zum Set hinzu (CollisionEdges := CollisionEdges + [ceTop]; ...).

Spiderpig_GER_15 12. Mai 2008 22:42

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
 
Zitat:

Zitat von Nuclear-Ping

Dazu kannst du ein Set definieren: TCollisionEdges = set of (ceTop, ceBottom, ceLeft, ceRight). Und jenachdem, welche Bedingung von da oben zutrifft, fügst du das Teil zum Set hinzu (CollisionEdges := CollisionEdges + [ceTop]; ...).

Ich verstehe alles bis auf das.
Ist ja eigentlich logisch :mrgreen:

Ich kenne mich mit Sets leider garnicht aus, was passiert denn da, und was bringt mir das?

mfG
Spiderpig

Nuclear-Ping 13. Mai 2008 07:22

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
 
Ein Set ist - wie der Name schon sagt - ein Set von mehreren Zuständen. Die Delphi-Referenz durchsuchenDelphi-Hilfe sollte auch was dazu sagen.
Delphi-Quellcode:
type
  TMeinSet = set of (msIrgendwas, msBlabla, msHallo, msEgal);

var
  MeinSet: TMeinSet;

begin
  MeinSet := []; // leeres Set
  MeinSet := MeinSet + [msBlabla]; // msBlabla hinzufügen
  MeinSet := MeinSet + [msEgal];   // msEgal hinzufügen
  MeinSet := MeinSet - [msBlabla]; // msBlabla entfernen

  if [msBlabla] in MeinSet then
    // ...
  if [msEgal, msHallo] in MeinSet then
    // ...  
end;

Spiderpig_GER_15 14. Mai 2008 21:10

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
 
danke,

gut zu wissen was set's sind,
wird noch hilfreich sein!

Dankeschööööhn :dp:

Spiderpig


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz