Für Experten in Python?
Was bedeutet der Code in Python? (Ich arbeite im Code mit Gamegrid und der Entwicklungsumgebung TigerJython, falls das wichtig ist) : xobjekt.setCollisionRectangle(Point(0,20),100,2) oder auch: yobjekt.setCollisionCircle(Point(0,20),100,2)
?
XObjekt und yobjekt stehen hierbei für irgendwelche angelegten Objekte, in meinem Fall waren es Blöcke und ein Ball.
Und schön wäre auch zu wissen, wofür die Zahlen stehen um meinen Code verbessern zu können.
Dankeschön
3 Antworten
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.
Oder vielleicht auch anders Formuliert : woher weißt du, dass 0,20 der Mittelpunkt ist? Oder setzt das Point fest?
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).
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?
Die Hitbox wäre dann außerhalb des Objektes, richtig?
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)
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
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)
Laut dieser Dokumentation werden mit den Funktionen Formen (Kreis und Rechteck) um die entsprechenden Objekte gelegt, die dann bei Kollisionen verwendet werden.
Das setzt offensichtlich die HitBox eines Objekts.
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!