Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Simple(?) Kollisionsabfrage in DelphiX (https://www.delphipraxis.net/8291-simple-kollisionsabfrage-delphix.html)

logaan 1. Sep 2003 20:33


Simple(?) Kollisionsabfrage in DelphiX
 
Hi leutz,

es ist wirklich zum verrückt werden... ich bekomm keine simple Kollisionsabfrage hin... also die Kollisionsabfrage eigentlich schon..
nur ich habe folgendes Problem:

Ich habe eine Figur (Sprite) und will, dass sie bei der Kollision mit einer Kiste (oder Wand etc.) einfach stehen bleibt (also das ich die Move Funktion ausser Kraft setze). Funktioniert eigentlich super...
Hab ne Boolean Variable (moving) gemacht und die wird auf false gesetzt, wenn man ne Kiste berührt... so nun kann man sich nicht mehr bewegen... aber auch nicht mehr von der Kiste weg!! Is echt nen Teufelskreis...

Bitte helft mir!

cya
logaan

Gandalfus 1. Sep 2003 20:57

Re: Simple(?) Kollisionsabfrage in DelphiX
 
IF x+1 in der kiste then
kollision
x=x
else
normal bewegen

braingrenade 1. Sep 2003 20:57

Re: Simple(?) Kollisionsabfrage in DelphiX
 
MIt delphix kenn ich mich net so asu , zeig mal die source von move!

logaan 1. Sep 2003 21:03

Re: Simple(?) Kollisionsabfrage in DelphiX
 
Delphi-Quellcode:
     if (isUp in Form1.DXInput1.States) and (y > 0) then begin
       y := y - 1; moving := true; AnimStart := 1; Direction := 0; end;
     if isDown in Form1.DXInput1.States then begin
       y := y + 1; moving := true; AnimStart := 7; Direction := 6; end;
     if (isLeft in Form1.DXInput1.States) and (x > 0) then begin
       x := x - 1; moving := true; AnimStart := 10; Direction := 9; end;
     if isRight in Form1.DXInput1.States then begin
       x := x + 1; moving := true; AnimStart := 4; Direction := 3; end;

braingrenade 1. Sep 2003 21:07

Re: Simple(?) Kollisionsabfrage in DelphiX
 
hmm....

wenn checkst an welcher Seite die Kiste ist kannst du ja nur die eine
Richtung sperren sonst wüsst ich auch net wie.

logaan 1. Sep 2003 21:10

Re: Simple(?) Kollisionsabfrage in DelphiX
 
Hab ich auch gerade probiert... aber wenn ich mich dann in die andere Richtung der Kiste entfernen will, is der Blickwinkel ja wieder anders und dann wird die Kollisionsabfrage für diese Richtung aufgerufen und dann geht'S immer noch net :?

braingrenade 1. Sep 2003 21:14

Re: Simple(?) Kollisionsabfrage in DelphiX
 
mach um die figur herum 8 ganz kleine sprites , an jeder ecke einen und
immer in der mitte der linien , diese bewegst du mit der figur zusammen und schaust welche von denen kollidiert :
irgendeiner von der rechten seite : bewegen-nach-rechts := false
irgendeiner von der linken seite : bewegen-nach-links := false
und mit oben und unten kansst du's ähnlich machen .

S'gibt zwar sicher ne einfache delphix-lösung , aber da ich mich da nicht so auskenne kann ich dir sie nicht sagen.

logaan 1. Sep 2003 21:17

Re: Simple(?) Kollisionsabfrage in DelphiX
 
das hört sich schonmal vernünftig an (ich hoffe zwar, dass es noch ne leichtere Lösung gibt :mrgreen: ) aber ich glaub ich probier's erstmal so!!

THX to all!!

cya
logaan

logaan 2. Sep 2003 11:09

Re: Simple(?) Kollisionsabfrage in DelphiX
 
Hat denn noch niemand beispielsweise nen Pacman Clone oder so in DelphiX programmiert?? Der musste sich doch bestimmt mit dem gleichem Problem rumschlagen...

Dannyboy 2. Sep 2003 13:08

Re: Simple(?) Kollisionsabfrage in DelphiX
 
Ich mache das bei 2D-Spielen immer so:

Code:
Type TDirection = (dirNone, dirUp, dirDown, dirLeft, dirRight);

Var Dir : TDirection;
...

und frage bei einer Collision immer die aktuelle Laufrichtung und einen
Rand vom Spieler ab.

Beipiel:

Wenn der Spieler nach rechts läuft, dann wird gefragt, ob ausschließlich
der RECHTE RAND des Spielers die Kiste berührt. Ist dies der Fall,
dann wird die Laufbewegung Dir von dirRight auf dirNone gesetzt. Da beim
Laufen nach links logischerweise dementsprechend nur der linke Rand
abgefragt wird, könnte man problemlos von der Kiste abhauen.
Selbst dann, wenn man sich mit dem rechten Rand berührt. :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.
Seite 1 von 2  1 2      

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