Kollision von jeder Seite des Blocks

Helgon

Bekanntes Mitglied
Hey, ich hab ein kleines Problemen. Ausprobiert hab ich schon alles was mir in den Sinn kommt.

Ich wollt ne Kollision von nem Block basteln und ich wollt eben, dass die Kollision tatsächlich von jeder Seite korrekt ist, also egal von wo man kommt.



Von der Seite gehts | von oben/unten kommts eben zu diesem "durchschieben"
box.jpg


eine meiner wohl "saubersten" Lösungen war so was in etwa

Java:
if(this.intersects(s)){

	if(s instanceof Wall){
		System.out.println("Wall");
		this.x = lastX;
		return true;
	}
			
}else{
	lastX = this.x; // ansatz
		}

Das Problem ist eben, das es immer nur von 2 Seiten lösen kann.

so müsst ich
Code:
lastX = (int) this.x
machen um zu runden, damit der "Wiedereinstiegspunkt" nicht wieder in der Wand hängt.

Wenn man dann von Rechts kommt, müsste ich das gleiche machen aber nur aufrunden (und abfragen ob
Code:
s.x+s.width < this.x
ist und dann z.B.
Code:
lastX = (int) this.x +1
aber das Problem ist dann, dass wen ich das gleiche auch für die Vertikale Achse mache es zu dem Problem kommt, das man auf dem Bild sieht (es schiebt sich zwar an die richtige Position, aber schräg durch den Block hindurch)

Ist grad ein wenig kompliziert das Problem zu erklären, aber ich hoffe das ihr versteht.

Habt ihr vllt nen Ansatz wie man sowas normalerweise löst, weil meine Idee erscheint mir nicht sehr intelligent -.-

Grüße
 
Zuletzt bearbeitet:

Helgon

Bekanntes Mitglied
Ich hab jetzt ne Lösung, würd nur gern wissen ob sowas "normal" ist, weil die Kollision so kompliziert abzufragen erscheint mir recht aufwendig, oder ist das etwa doch "normal"?

Optimal ist es leider auch nicht, man sieht immer son winziges Ruckeln (durch das zurückspringen)

Java:
			if(s instanceof Wall){
				System.out.println("Wall");
				this.x = lastX;
				this.y = lastY;
				return true;
			}
			
		}else{
			
			if(parent.right && parent.left)
				lastX = (int) this.x + 2;
			else{
				if(parent.left)
					lastX = (int) this.x + 2;
				if(parent.right) 
					lastX = (int) this.x -2;
			}
			if(parent.down)
				lastY = (int) this.y - 2;
			if(parent.up)
				lastY = (int) this.y + 2;
			
		}

Grüße
 

Fu3L

Top Contributor
Ich hab für mein BlockGame da ewig lange drüber nachgedacht und auch hier ein Topic eröffnet... Es ist tatsächlich nicht einfach. Wenn deine Lösung funktioniert, ist die schon recht kurz^^
 

Helgon

Bekanntes Mitglied
Mich freuts zu hören, dass ich nicht vollkommen behindert dumm bin :D

Ich dachte schon "Das ist doch nurn Rechteck, da die Kollision kann doch nicht so schwer sein" xD

Wenn ich dazu komm muss ich mal gucken was passiert wenn man die Kollision bei 1-2K Blöcken berechnet. Da hab ich etwas "angst" vor xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Kollision Spiele- und Multimedia-Programmierung 5
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
N Kollision von zwei ImageIcons Spiele- und Multimedia-Programmierung 8
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
J Kollision (libgdx) Spiele- und Multimedia-Programmierung 2
S Kollision Spiele- und Multimedia-Programmierung 2
J Kollision genau erkennen mit intersects Spiele- und Multimedia-Programmierung 27
K a* kollision der einheiten Spiele- und Multimedia-Programmierung 3
S Probleme bei Breakout - Brick kollision Spiele- und Multimedia-Programmierung 2
F Rechteck Kollision Spiele- und Multimedia-Programmierung 10
H 2- D Kollision Spiele- und Multimedia-Programmierung 14
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
O Kollision Polygon und Rechteck Spiele- und Multimedia-Programmierung 2
S Pacman Kollision von Münzen und Mauern Spiele- und Multimedia-Programmierung 11
P Gridpane Kollision Spiele- und Multimedia-Programmierung 3
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
L Kollision soll nur an oberer Seite (Breite) möglich sein Spiele- und Multimedia-Programmierung 6
Hercules Kisten Kollision Spiele- und Multimedia-Programmierung 2
S 3D-Kollision mit zwei ArrayLists Spiele- und Multimedia-Programmierung 7
T Pixelgenaue Kollision Spiele- und Multimedia-Programmierung 5
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
S Kollision tile-based 2D Plattformer Spiele- und Multimedia-Programmierung 2
D Greenfoot Kollision Spiele- und Multimedia-Programmierung 5
D Kollision verhindern Spiele- und Multimedia-Programmierung 2
R Frage zur Kollision Spiele- und Multimedia-Programmierung 5
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Kr0e Kollision zweier Kugeln... Wo ist Newton ?? Spiele- und Multimedia-Programmierung 9
C Kollision zwischen 2 Kreisen Spiele- und Multimedia-Programmierung 3
Fab1 Kollision die 100ste Spiele- und Multimedia-Programmierung 5
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
P PingPong Spiel - Kollision Spiele- und Multimedia-Programmierung 2
C Bitmaske und Kollision Spiele- und Multimedia-Programmierung 2
J Spielprogrammierung mit bewegung und kollision Spiele- und Multimedia-Programmierung 24
S Kollision Kreis Rechteck Spiele- und Multimedia-Programmierung 8
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
baddestpoet pixelgenaue Kollision Spiele- und Multimedia-Programmierung 4
S Kollision in 2D Spiele- und Multimedia-Programmierung 12
B Gedrehte Rechtecke Kollision Spiele- und Multimedia-Programmierung 4
J Kollision mit Block (Wand) Spiele- und Multimedia-Programmierung 11
C Kollision in Java3D Spiele- und Multimedia-Programmierung 4
J Kollision von Objekten Spiele- und Multimedia-Programmierung 7
M Asteroids Clone: Kollision zwischen Schuss und Feind Spiele- und Multimedia-Programmierung 13
F Bewegung/Kollision von Objekten auf Tastendruck Spiele- und Multimedia-Programmierung 6
Z Kollision Spiele- und Multimedia-Programmierung 3
F Kollision für Arkanoid Spiele- und Multimedia-Programmierung 2
N Kollision abfragen Spiele- und Multimedia-Programmierung 3
K Sprites / Kollision Spiele- und Multimedia-Programmierung 3
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben