v4.x/Physics: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „{{DISPLAYTITLE:EA 4.x Tutorial: Physics}} {{4.xTutorialHeader}} == Inhalt == In diesem Tutorial: * Manipulierst du die (simulierten) physikalischen Eigensc…“) |
(→Setup ohne Physics) |
||
Zeile 28: | Zeile 28: | ||
<source lang="java"> | <source lang="java"> | ||
− | + | import ea.*; | |
− | + | import ea.actor.*; | |
− | |||
− | import ea. | ||
− | |||
− | |||
− | import ea.actor. | ||
− | |||
− | |||
− | |||
− | |||
import java.awt.Color; | import java.awt.Color; | ||
Zeile 74: | Zeile 65: | ||
angle = new Rectangle(1, 0.5f); | angle = new Rectangle(1, 0.5f); | ||
− | angle.setColor(Color. | + | angle.setColor(Color.GRAY); |
add(angle); | add(angle); | ||
} | } | ||
Zeile 87: | Zeile 78: | ||
} | } | ||
} | } | ||
− | |||
</source> | </source> |
Version vom 9. Juni 2023, 00:36 Uhr
Dies ist ein Tutorial für die Engine Alpha 4.x. Diese funktioniert anders als die EDU-Version. Du findest eine Übersicht über alle Tutorials hier.
Inhaltsverzeichnis
Inhalt
In diesem Tutorial:
- Manipulierst du die (simulierten) physikalischen Eigenschaften von verschiedenen Actors in der Engine.
- Lernst
Physik in der Engine
Seit Version 4.0 nutzt Engine Alpha eine Java-Version von Box2D. Diese mächtige und effiziente Physics-Engine ist in der Engine leicht zu bedienen und ermöglicht es, mit wenig Aufwand mechanische Phänomene in Deine Spiele zu bringen: von Platforming und Billiard bis zu Hängebrücken und Autos.
Die Physics Engine basiert auf den Prinzipien der Klassischen Mechanik. Ein Grundverständnis hierüber ist nötig: Begriffe wie Masse, Dichte, Impuls und Kraft sollten dir zumindest grob geläufig sein, um diese auf deine Spielobjekte anzuwenden.
Beispiel 1: Dominos
Um die Grundlagen der Engine Alpha Physics zu testen, bauen wir eine einfache Kettenreaktion: Ein Ball wird gegen eine Reihe von Dominos geworfen.
Setup ohne Physics
Bevor wir die Physik einschalten, bauen wir das Spielfeld mit allen Objekten auf:
import ea.*;
import ea.actor.*;
import java.awt.Color;
public class Dominoes extends Scene {
private Rectangle ground;
private Rectangle wall;
private Circle ball;
private Rectangle angle;
public Dominoes() {
setupBasicObjects();
makeDominoes(20, 1, 8);
getCamera().setPostion(10, 6);
getCamera().setZoom(15f);
}
private void setupBasicObjects() {
ground = new Rectangle(200, 2);
ground.setCenter(0, -1);
ground.setColor(Color.WHITE);
add(ground);
ball = new Circle(1);
ball.setColor(Color.RED);
ball.setPosition(-10, 1);
add(ball);
wall = new Rectangle(1, 40);
wall.setPosition(-15, 0);
wall.setColor(Color.WHITE);
add(wall);
angle = new Rectangle(1, 0.5f);
angle.setColor(Color.GRAY);
add(angle);
}
private void makeDominoes(int numX, float beamWidth, float beamHeight) {
for(int i=0; i<numX; i++) {
Rectangle beam = new Rectangle(beamWidth, beamHeight);
beam.setPosition(i*2*(beamWidth), 0);
beam.setColor(Color.BLUE);
add(beam);
}
}
}