online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon breznica vom 25.12.2019, 15:53 Options

Wenn sich zwei Objekte berühren...

Guten Tag liebe Supportnetlers!

Ich arbeite gerade zusammen mit zwei Freunden an einem Projekt, ein 2D Jump'n'Run Game.

Nun haben wir leider ein Problem, nämlich sobald die Figur (als PictureBox-Control) ein Hinderniss (als Shape-Control) berührt, sollte die Figur nicht mehr weitergehen können.

mfG

breznica :>


Antwort schreiben

Antwort 1 von Proggi vom 25.12.2019, 17:45 Options

nun - wenn du ein array hast in dem alle (rechteckigen) Shapecontrolls sind, dann kannst du per Schleife die das Array durchlaufen (beim erstellen und auch beim prüfen auf kollision).

wenn du MyShapeArray[4]
als Array hast, die erste Dimension ist die nummer des Shapecontrolls, die 2. die Dimensionen, also
xPos = 1
yPos = 2
xWidth = 3
yHeight = 4

Du kannst beim zeichnen der Shapes das Array durchlaufen zum zeichnen, beim bewegen der Figur must du bevor die figur bewegt wird die neue Position auf kollision prüfen z.b.:

' Statische Variablen zur besseren übersicht was was ist
xPos = 1
yPos = 2
xWidth = 3
yHeight = 4

' fiktive bildgröße (kannst auch direkt vom objekt.width und objekt.height
BildxGroesse = 60;
BildyGroesse = 80;

' fiktive neue Position (kann nicht vom bild abgelesen werden da Bild noch nicht verschoben)
NeuesBildxPos = 44;
NeuesBildyPos = 44;

Collision = false
for MyShape in MyShapeArray
	if NeuesBildxPos+BildxGroesse < MyShape[xPos] and NeuesBildxPos > MyShape[xPos]+MyShape[xWidth] then
		if NeuesBildyPos+BildyGroesse < MyShape[yPos] and NeuesBildyPos > MyShape[xPos]+MyShape[yWidth] then
			Collision = true
			exit for
		end if
	end if
next
if not Collision then
	' hier neue Bildposition erst setzten
end if


die Ifabfrage bin ich mir noch nicht so ganz sicher - prüfe mal welche Eckpunkte du mit welchen vergleichen must - ich glaub das ist so ok.

Antwort 2 von Proggi vom 25.12.2019, 18:01 Options

sorry für die breite X.x

Arraydimension war zudem falsch, da [ i ] hier in italic umgesetzt wird.

j = anzahl der Shapes
4 = die 4 Maße x,y,breite,höhe
MyShapeArray[j][4]

Antwort 3 von breznica vom 25.12.2019, 22:13 Options

Vielen Dank Proggi, das Problem hat sich gelöst :]

Ähnliche Themen

Ordner gelöschte Objekte
chefe321  31.01.2007 - 174 Hits -

Outlook-Ordner
dbiene  11.10.2007 - 174 Hits - 3 Antworten

OE- neue mails landen in gelöschte Objekte
ro80  27.03.2008 - 45 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026