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 |
Re: Simple(?) Kollisionsabfrage in DelphiX
IF x+1 in der kiste then
kollision x=x else normal bewegen |
Re: Simple(?) Kollisionsabfrage in DelphiX
MIt delphix kenn ich mich net so asu , zeig mal die source von move!
|
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; |
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. |
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 :?
|
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. |
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 |
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...
|
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. |
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