![]() |
[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 |
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 ;-) |
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]; ...). |
Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt
Zitat:
Ist ja eigentlich logisch :mrgreen: Ich kenne mich mit Sets leider garnicht aus, was passiert denn da, und was bringt mir das? mfG Spiderpig |
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-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; |
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 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz