Physic engine von Game Maker Studio (Übersetzung der Hilfe)

    • Studio

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Physic engine von Game Maker Studio (Übersetzung der Hilfe)

      Durch die Integration der Physik engine, hat man nun die Kontrolle über alle Aspekte des physikalischen Verhaltens von Objekten in der Spielwelt, insbesondere Kollisionen und Objekt-Interaktion. Das "traditionelle" Kollisions-System ist ein "reaktives"-System, welches auf Kollisionen überprüft und dann entsprechend reagiert. Bei einfachen Spielen möge es vieleicht gut funktionieren, aber sobalt man sehr viele Objekte hat, die auf all möglichen Situationen reagieren sollen, wird schnell klar, dass es nicht gut genug ist. Dies ist der Zeitpunkt wo man sich an die Physik engine wenden kann.

      Die Physik-engine arbeitet komplett anders. Es ist eher ein "passives" System, wo man eine Reihe von Eigenschaften für die Objekte in der Spielwelt sowie die Eigenschaften der Spielwelt selbst definiert, bevor irgendwelche Kollisionen oder Wechselwirkungen auftreten. Diese codierten "Regeln" bestimmen die Art und Weise wie alles in der Spielwelt interagiert. Auf diese Weise, kann man mit ein paar Zeilen einfachem Code und einer richtigen Raumausstattung, komplexe Interaktionen zwischen Objekten und der Welt, die auftreten können, lösen, ohne dass man für jedes einzelne mögliche Ergebnis Code schreiben muss.



      Die Physik Welt:

      Bevor irgendwelche physikalischen Reaktionen auftreten können, muss man zuerst die Physik Welt definieren, in denen sie passieren werden. Wenn man dies nicht tut, werden die herkömmlichen Kollisionen verwendet, und der komplette Physikalische Code, sowie die Objekteinstellungen werden ignoriert.

      [hide='physics_world_create']physics_world_create(pixeltometrescale)

      Argumente:
      • pixeltometrescale: Definiert das Verhältnis der Pixel auf dem Bildschirm in Metern in der realen Welt. Ein Verhältnis von 32:1 wird als 1/32 (oder 0,03125) angegeben.
      Rückgabewert: N/A[/hide][hide='physics_world_gravity']physics_world_gravity(gx, gy)

      Argumente:
      • gx: Die x-Komponente des Schwerkraftvektors.
      • gy: Die y-Komponente des Schwerkraftvektors.
      Rückgabewert: N/A[/hide][hide='physics_world_update_iterations']physics_world_update_iterations(iterations)

      Argumente:
      • iterations: Die Iterationen (pro Step), die das Physik-System ausführt.
      Rückgabewert: N/A[/hide][hide='physics_world_update_speed']physics_world_update_speed(speed)

      Argumente:
      • speed: Die Physik-Updates pro Sekunde.
      Rückgabewert: N/A[/hide][hide='physics_world_draw_debug']physics_world_draw_debug(flag)

      Argumente:
      • flag: Der Flag-Wert für die verschiedenen Debug-Funktionen.
      Flags:
      • phy_debug_render_aabb: Dies zeigt die absolute Begrenzungsbox jeder Armatur in Bezug auf die Raumachse.
      • phy_debug_render_collision_pairs: Dies zeigt alle Armaturen, die derzeit eine Kollision auslösen.
      • phy_debug_render_coms: Dies markiert das Zentrum der Masse jeder Armatur im Raum.
      • phy_debug_render_core_shapes: Zeigt die Grundformen der Armaturen im Raum.
      • phy_debug_render_joints: Dies zeigt jedes Gelenk aller Armaturen im Raum.
      • phy_debug_render_obb: Dies zeigt die relativen Boundingboxen der Armaturen.
      • phy_debug_render_shapes: Dies zeigt die tatsächlichen Formen, der Armaturen im Raum.
      Rückgabewert: N/A[/hide][hide='physics_draw_debug']physics_draw_debug()

      Rückgabewert: N/A[/hide][hide='physics_pause_enable']physics_pause_enable(flag)

      Argumente:
      • flag: Dies kann auf true gesetzt werden, um die Simulation zu pausieren, oder false, um sie erneut zu starten.
      Rückgabewert: N/A[/hide]

      Kräfte:

      In der Physik Welt von Game Maker Studio, sind die Instancen nicht nur von Schwerkraft und Kollisionen beeinflusst, sondern auch von den Kräften die man definiert hat. Es ist sehr wichtig, dass man weiß wie man die Kräfte anwenden muss, um eine korrekte Physiksimulation zu erstellen.

      [hide='physics_apply_force']physics_apply_force(xpos, ypos, xforce, yforce)

      Argumente:
      • xpos: Die x-Koordinate, wo die Kraft im Raum angewendet wird.
      • ypos: Die y-Koordinate, wo die Kraft im Raum angewendet wird.
      • xforce: Die x-Komponente des Kraftvektors.
      • yforce: Die y-Komponente des Kraftvektors.
      Rückgabewert: N/A[/hide][hide='physics_apply_impulse']physics_apply_impulse(xpos, ypos, ximpulse, yimpulse)

      Argumente:

      • xpos: Die x-Koordinate, wo der Impuls Raum angewendet wird.
      • ypos: Die y-Koordinate, wo der Impuls Kraft im Raum angewendet wird.
      • xforce: Die x-Komponente des Impulsvektors.
      • yforce: Die y-Komponente des Impulsvektors.
      Rückgabewert: N/A[/hide][hide='physics_apply_local_force']physics_apply_local_force(xpos, ypos, xforce, yforce)

      Argumente:
      • xpos: Die x-Koordinate, wo die Kraft relativ zum Ursprungspunkt angewendet wird.
      • ypos: Die y-Koordinate, wo die Kraft relativ zum Ursprungspunkt angewendet wird.
      • xforce: Die x-Komponente des Kraftvektors.
      • yforce: Die y-Komponente des Kraftvektors.
      Rückgabewert: N/A[/hide][hide='physics_apply_local_impulse']physics_apply_local_impulse(xpos, ypos, ximpulse, yimpulse)

      Argumente:
      • xpos: Die x-Koordinate, wo der Impuls relativ zum Ursprungspunkt angewendet wird.
      • ypos: Die y-Koordinate, wo die Impuls relativ zum Ursprungspunkt angewendet wird.
      • ximpulse: Die x-Komponente des Impulsvektors.
      • yimpulse: Die y-Komponente des Impulsvektors.
      Rückgabewert: N/A[/hide][hide='physics_apply_torque']physics_apply_torque(torque)

      Argumente:
      • torque: Der Drehmoment(in Newton) die angewendet wird.
      Rückgabewert: N/A[/hide]

      Fixierungen:

      Bevor eine Instance physikalische Eigenschaften haben kann, muss ihr eine Fixierung zugeordnet werden. Eine Fixierung beinhaltet eine Form die einer Instance zugeordnet ist, welche zusätzlich Materialeigenschaften wie Dichte, Reibung und Restitution. Fixierungen können Boxen, Kreise, Polygone oder jede andere einfache Formen die man sich wünscht. Es gibt Funktionen mit denen man Punkt für Punkt seine eigenen Form definieren kann und sobalt man seine Form hat, kann man die physikalischen Eigenschaften definieren. Diese Einstellungen geben an wie sich die Instance mit der dazugehörigen Fixierung mit den Anderen reagiert.

      • Dichte: Die Dichte eines Materials, welche als Masse pro Volumen definiert wird. Es ist im Wesentlichen ein Maß dafür, wie eng Materie zusammen gepfercht ist. Wenn die Fixierung statisch sein soll (zB: unbeweglichen), dann sollte die Dichte auf 0 gesetzt werden, die im Wesentlichen sie unendlich dicht macht. Kinematische Objekte, die sich mit konstanter Geschwindigkeit bewegen und physisch nicht durch Kollisionen betroffen sind, sind ebenfalls definiert mit einer Dichte von 0.

      • Reibung: Reibung ist die Kraft des Widerstandes gegen einer relativen Bewegung von festen Oberflächen, Fluidschichten und materiellen Elementen die sich gegeneinander verschieben.

      • Lineare Dämpfung: Dies ist die verallgemeinerte Kraft, wo sich ein bewegendes Objekt an Schwung verliert. In der "realen Welt" sind es Dinge die in der Regel nicht immer passieren. Zum Beispiel wird ein Papier Flugzeug für kurze Zeit fliegen, aber schließlich wird es fallen, aufgrund der Luftreibung, die auf ihn wirkt, wodurch es verlangsamt. In der Physik Welt, ist es schwer solche Dinge zu modellieren und somit ist es einfacher wenn jede Fixierung eine eigene lineare Dämpfung hat, um diese Art von "generalisierte Reibung" zu simulieren.

      • Winkel Dämpfung: Wie erwähnt, ist dies eine generalisierte Kraft, die auf ein Objekt angewendet wird, um in diesem Fall das ewige Drehen zu stoppen.

      • Restitution: In der Physik wird Restitution als "die Rückkehr von einem Objekt oder System in seinen ursprünglichen Zustand nach elastischer Verformung" definiert. In Game Maker Studio sind es wirklich starre Körper und können nicht deformiert werden. Es soll daran erinnern wie grundsätzlich "bouncy" das Gerät ist.

      Fixierungen erstellen:
      [hide='physics_fixture_create']physics_fixture_create()

      Rückgabewert: Index von der Fixierung

      Beschreibung: Der erste Schritt zum Einrichten einer Fixierung ist diese zu erstellen. Der Rückgabewert sollte in einer Variable gespeichert werden, da dieser Index für alle folgenden Funktionen benötigt wird.[/hide][hide='physics_fixture_bind']physics_fixture_bind(fixture, target)

      Argumente:
      • fixture: Die Fixierung die gebunden werden soll.
      • target: Die Ziel-Instance, die die Fixierung erhalten soll (Kann eine Instance ID, Objekt ID, other oder all sein).
      Rückgabewert: N/A

      Beschreibung: Nachdem man die Fixierung erstellt hat, muss man diese an eine Instance binden. Das Bedeutet, dass alle Einstellungen an die ausgewählte Instance übertragen werden und nicht die Fixierung selbst, sodass eine Fixierung an mehrere Instancen gebunden werden kann, wenn alle die selben Einstellungen haben sollen. Man kann eine Objekt ID angeben, wodurch alle momentan vorhandenen Instancen dieses Objektes diese Einstellungen erhalten (Aber nicht solche Instancen, die später erstellt werden), oder man verwendet die speziellen Schlüsselwörter other und all. Man kann auch ein Eltern Objekt angeben und alle untergeordneten Instancen dieses Eltern Objektes, erhalten ebenso die Einstellungen dieser Fixierung. Nachdem die Fixierung mit allen benötigten Instancen gebunden wurde, kann sie gelöscht werden wenn sie nicht mehr benötigt wird. Die Einstellungen von allen Instancen werden dadurch nicht beeinflusst und bleiben erhalten.[/hide][hide='physics_fixture_set_collision_group']physics_fixture_set_collision_group(fixture, group)

      Argumente:
      • fixture: Die Fixierung die gebunden werden soll.
      • group: Die Gruppe welcher die Fixierung angehören soll(Entweder ein positiver Wert, 0, oder ein negativer Wert).
      Rückgabewert: N/A

      Beschreibung: Sobald man die Fixierung erstellt hat, kann man es als Teil einer Kollisionsgruppe definieren. Das Bedeutet, dass man der Fixierung sagen kann, ob es immer oder nie mit einer Instance der selben Kollisionsgruppe kollidieren soll. Die Werte sind basiert auf positive und negative Werte. Standard ist hierbei 0, bedeutet dass die Instance mit dieser Fixierung solange ignoriert wird, bis ein Kollisionsevent für die entsprechenden Instancen erstellt wurde. Eine Instance mit einer negativen Kollisionsgruppe wird niemals kollidieren. Zwei Instancen mit der gleichen positiven Kollisionsgruppe werden immer miteinander kollidieren. Zwei Instancen mit verschiedenen Kollisionsgruppen werden basiert auf deren Kollisionsevent :event_collision: kollidieren, sofern nicht eine oder beide Kollsionsgruppen negativ sind.[/hide][hide='physics_fixture_delete']physics_fixture_delete(fixture)

      Argumente:
      • fixture: Die Fixierung die vom Speicher gelöscht werden soll
      Rückgabewert: N/A[/hide]

      Fixierungen Formen definieren:
      [hide='physics_fixture_set_box_shape']physics_fixture_set_box_shape(fixture, halfWidth, halfHight)

      Argumente:
      • fixture: Der Index der Fixierung.
      • halfWidth: Die halbe Breite der Box.
      • halfHight: Die halbe Höhe der Box.
      Rückgabewert: N/A

      Beschreibung: Diese Funktion definiert eine Box-Form für die Fixierung.
      [/hide][hide='physics_fixture_set_circle_shape']physics_fixture_set_circle_shape(fixture, rad)

      Argumente:
      • fixture: Der Index der Fixierung.
      • rad: Radius des Kreises.Rückgabewert: N/A

        Beschreibung: Diese Funktion definiert eine Kreis-Form für die Fixierung.
        [/hide][hide='physics_fixture_set_polygon_shape']physics_fixture_set_polygon_shape(fixture)

        Argumente:
        • fixture: Der Index der Fixierung.Rückgabewert: N/A

          Beschreibung: Diese Funktion definiert eine Polygon-Form für die Fixierung, aber man braucht die Funktion physics_fixture_add_point um die Form relativ zum Ursprungspunkt der Fixierung zu erstellen. Dabei wird die Form geschlossen sobald die Fixierung an einer Instance gebunden wird. Es werden drei Punkte benötigt um eine Form zu erstellen.
          [/hide][hide='physics_fixture_add_point']
          [/hide]

          Fixierungen Einstellungen:
          [hide='physics_fixture_set_density']
          [/hide][hide='physics_set_friction']
          [/hide][hide='physics_set_linear_damping']
          [/hide][hide='physics_set_angular_damping']
          [/hide][hide='physics_set_restitution']
          [/hide][hide='physics_set_sensor']
          [/hide][hide='physics_set_kinematic']
          [/hide][hide='physics_set_awake']
          [/hide]

          Physik Variablen:

          Das Physik System hat auch eine Reihe an Variablen. Manche Variablen kann der Benutzer ändern, aber die meisten sind "read-only"-Variablen.

          Variablen:
          • phy_active
          • phy_angular_velocity
          • phy_linear_velocity_x
          • phy_linear_velocity_y
          • phy_speed_x
          • phy_speed_y
          • phy_position_x
          • phy_position_y
          • phy_rotation
          • phy_fixed_rotation
          • phy_bullet
          Read Only Variablen:
          • phy_com_x
          • phy_com_y
          • phy_dynamic
          • phy_kinematic
          • phy_inertia
          • phy_mass
          • phy_sleeping
          Collision Only Variablen:
          • phy_collision_points
          • phy_collision_x
          • phy_collision_y
          • phy_col_normal_x
          • phy_col_normal_y

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Chris987 ()