Menu
CoddyTech

Bewegliche Plattformen

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 49 von 56.

challenge icon

Aufgabe

Mittel

Die blaue Plattform sollte über die Lücke hin und her gleiten. Behalte alles aus der letzten Lektion bei.

Vervollständige MovingPlatform:

  • Zwei Felder, die im Inspector festgelegt werden: distance (3) und speed (1.5), sowie ein public Vector3 delta.
  • Sie gleitet von ihrer Startposition distance Einheiten entlang +x mit speed Einheiten pro Sekunde und dann wieder zurück zum Startpunkt, und so für immer weiter.
  • Bei jedem Frame gibt delta an, wie weit sie sich in diesem Frame bewegt hat: ihre Position nach der Bewegung minus ihre Position davor.

Ein CharacterController wird nicht von dem mitgenommen, worauf er steht: Auf einer beweglichen Plattform bleibt er an seiner Position, während die Plattform unter ihm weggleitet. Auch seine transform.position entlang der Bewegung zu verschieben, funktioniert nicht: Der nächste Aufruf von Move des Controllers beginnt dort, wo die Physik ihn zuletzt gesehen hat, und macht die Änderung rückgängig. Sorge dafür, dass Player mitfährt:

  • Füge OnControllerColliderHit hinzu. Wenn die Normale des Treffers nach oben zeigt (hit.normal.y ist größer als 0.5: der Spieler steht darauf) und das Objekt eine MovingPlatform hat, speichere diese Plattform in einem Feld.
  • Addiere in Update das delta dieser Plattform zu der Bewegung, die an controller.Move übergeben wird, und vergiss dann die Plattform (setze das Feld auf null). Der Aufruf von Move findet sie erneut, solange der Spieler darauf steht.

Drücke Play, springe auf die Plattform und fahre mit ihr, dann Check.

Probier es selbst

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // In einer späteren Lektion wird dies ergänzt: eine Plattform, die hin und her gleitet.
}

Alle Lektionen in Echte Spiele entwickeln