Für Experten in Python?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der Code bestimmt einen viereckigen oder runden Bereich, den das Objekt physikalisch betrachtet einnimmt. Kollisionen in Videospielen werden nicht anhand der Pixel berechnet, sondern benutzen sogenannte Hitboxen - Eine viereckige oder runde Form, in der sich das Objekt befindet.

Beim ersten: Point(0,20) ist die x/y-Position des Mittelpunkts, 100 die Breite der Hitbox, 2 die Höhe der Hitbox. Kannst dir also ein 100x2 großes Viereck um den Punkt 0,20 vorstellen.

Beim unteren: Point(0,20) ebenfalls wieder der Mittelpunkt der Hitbox (und vermutlich auch der Mittelpunkt des Objekts), diesmal aber mit einer runden Hitbox mit Radius 100. Wofür die 2 hier stehen soll weiß ich nicht.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Niki11111 
Fragesteller
 19.09.2021, 14:55

Vielen Dank! Der Punk 0, 20, ist da x = 0 und y = 20? Und sind das die Werte, die von dem Objekt aus gesetzr werden oder von dem Feld in Gamegrid? Ansonsten vielen, vielen Dank!

0
Niki11111 
Fragesteller
 19.09.2021, 14:58
@Niki11111

Oder vielleicht auch anders Formuliert : woher weißt du, dass 0,20 der Mittelpunkt ist? Oder setzt das Point fest?

0
MrAmazing2  19.09.2021, 15:41
@Niki11111

x wird immer zuerst genannt, ja. Punkt 0,20 heißt also x=0, y=20, ja.

Ob das vom Objekt aus ist oder auf das Gamegrid bezogen bin ich mir leider nicht sicher. Kannst du ja leicht ausprobieren.

Die Funktion verlangt einen Parameter namens „center“. Steht in der Doku, und falls du eine gute Entwicklungsumgebung nutzt sollte sie dir das auch anzeigen. Daher weiß ich, dass das der Mittelpunkt der Hitbox ist, den man da übergibt. Und du übergibst da nunmal Point(0,20).

1
Niki11111 
Fragesteller
 19.09.2021, 16:10
@MrAmazing2

Gut, ich denke dass es von dem Objekt aus ist, weil man es ja bewegen kann. Wäre Point(16,288) auch ein Mittelpunkt wenn man das so eingeben würde?

1
Niki11111 
Fragesteller
 19.09.2021, 16:18
@MrAmazing2

Die Hitbox wäre dann außerhalb des Objektes, richtig?

0
Niki11111 
Fragesteller
 19.09.2021, 21:07
@MrAmazing2

Ich stehe jetzt vor einem weiteren Problem: Weißt du, wie man feststellen kann ob das Objekt - oder die Hitbox von rechts oder links getroffen wurde? (Also ein Ball,der den Block von rechts oder links, unten oder oben trifft, soll wieder richtig abprallen, dafür ist dir Frage)

0
MrAmazing2  19.09.2021, 21:20
@Niki11111

Vielleicht irgendwo speichern wo er beim letzten mal war,

und dann, wenn eine kollision vorliegt, schauen, wo (rechts/links/oben/unten) der ball vorher war.

Aber not sure ob das die beste Lösung ist

0
Niki11111 
Fragesteller
 20.09.2021, 14:54
@MrAmazing2

Nunja, es sind aber ziemlich viele Blöcke (17 Blöcke in 3 Reihen untereinander) also glaubr ich nicht das das funktioniert. Aber trotzdem Danke (Das Spiel ist das selbe wie Breakball nur in schlecht, also nachprogrammiert)

0

Laut dieser Dokumentation werden mit den Funktionen Formen (Kreis und Rechteck) um die entsprechenden Objekte gelegt, die dann bei Kollisionen verwendet werden.

Woher ich das weiß:Hobby – Programmiere seit eineinhalb Jahren

Das setzt offensichtlich die HitBox eines Objekts.

Woher ich das weiß:Berufserfahrung