Package pi

Class Camera

java.lang.Object
pi.Camera

public final class Camera extends Object
Die Kamera steuert, welcher Ausschnitt der Spielfläche angezeigt wird.

Sie kann ein Objekt fokussieren und ihm so folgen. Hierbei besteht auch die Möglichkeit, diesen Fokus in Grenzen zu halten. Und zwar durch die Fokus-Bounds. Diese 4 Grenzwerte können individuell verstellt und aktiviert werden. auch kann man den von der Kamera darzustellenden Bereich durch eine einzige Methode definieren, in dem man den Bereich als Bounds beschreibt.


 Bounds bounds = new Bounds(0, 0, 1500, 1000);
 camera.bounds(bounds);
 

Hierdurch wird der gesamte Fokus auf den Bereich zwischen den Punkten (0|0) und (1500|1000) eingestellt.

Achtung!

Bei den Fokus-Einstellungen sollte immer ein Bereich gewählt werden, der die Größe des Anzeigefensters (oder Vollbildes) bei weitem übersteigt.
Allgemein wirken diese Bounds auch ohne aktivierten Fokus, jedoch ist dies meist weniger sinnvoll.

Author:
Michael Andonie, Josef Friedrich
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final double
    Der Standardwert für die Anzahl an Pixel eines Meters.
    static final double
     
  • Method Summary

    Modifier and Type
    Method
    Description
    bounds(Bounds bounds)
    Mit dieser Methode kann die Kamerabewegung eingeschränkt werden.
    Gibt die aktuelle Position des Kamerafokus zurück.
    focus(double x, double y)
    Verschiebt das Zentrum der Kamera zur angegebenen Position (absolute Verschiebung).
    focus(Actor actor)
    Setzt den Fokus der Kamera auf eine Figur.
    focus(Vector focus)
    Verschiebt das Zentrum der Kamera zur angegebenen Position (absolute Verschiebung).
    boolean
    Gibt an, ob die Kamera durch Bounds in ihrer Bewegung beschränkt ist.
    boolean
    Gibt an, ob die Kamera ein Fokus-Objekt verfolgt oder „steif“ ist.
    double
    Gibt die Anzahl an Pixel aus, die einem Meter entsprechen.
    meter(double pixelCount)
    Setzt die Anzahl an Pixel, die einem Meter entsprechen und setzt somit den „Zoom“ der Kamera.
    moveFocus(double deltaX, double deltaY)
    Verschiebt die Kamera um einen bestimmten Wert in x- und y-Richtung (relativ).
    Verschiebt die Kamera um einen bestimmten Vektor (relativ).
    Gibt den Verzug der Kamera aus.
    offset(Vector offset)
    Setzt einen Kameraverzug.
    Entfernt die fokussierte Figur von der Kamera.
    rotateBy(double angle)
    Rotiert die Kamera um den angegebenen Winkel.
    rotateTo(double angle)
    Setzt den Rotationswert der Kamera.
    double
    Gibt die aktuelle Drehung zurück.
    Die Kamera bewegt sich um den Standard-Zoomfaktor näher an das Spielfeld.
    zoomIn(double factor)
    Die Kamera bewegt sich näher an das Spielfeld.
    Die Kamera entfernt sich um den Standard-Zoomfaktor vom Spielfeld.
    zoomOut(double factor)
    Die Kamera entfernt sich vom Spielfeld.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • DEFAULT_METER

      public static final double DEFAULT_METER
      Der Standardwert für die Anzahl an Pixel eines Meters.
      See Also:
    • DEFAULT_ZOOM_FACTOR

      public static final double DEFAULT_ZOOM_FACTOR
      See Also:
  • Method Details

    • focus

      @API @Getter public Vector focus()
      Gibt die aktuelle Position des Kamerafokus zurück.
      Returns:
      Die aktuelle Position des Kamerafokus.
    • focus

      @API @Setter public Camera focus(Vector focus)
      Verschiebt das Zentrum der Kamera zur angegebenen Position (absolute Verschiebung). Von nun an ist der Punkt mit den eingegebenen Koordinaten im Zentrum des Bildes.
      Parameters:
      focus - Das neue Zentrum der Kamera.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • focus

      @API public Camera focus(double x, double y)
      Verschiebt das Zentrum der Kamera zur angegebenen Position (absolute Verschiebung). Von nun an ist der Punkt mit den eingegebenen Koordinaten im Zentrum des Bildes.
      Parameters:
      x - Die x-Koordinate des Zentrums des Bildes.
      y - Die y-Koordinate des Zentrums des Bildes.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • focus

      @API @Setter public Camera focus(Actor actor)
      Setzt den Fokus der Kamera auf eine Figur.

      Dieses Objekt ist ab dann im „Zentrum“ der Kamera. Die Art des Fokus (rechts, links, oben, unten, mittig, etc.) kann über die Methode offset(Vector) geändert werden. Soll das Fokusverhalten beendet werden, kann einfach null übergeben werden, dann bleibt die Kamera bis auf Weiteres in der aktuellen Position.

      Parameters:
      actor - Die Figur, die fokussiert werden soll.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • removeFocus

      @API public Camera removeFocus()
      Entfernt die fokussierte Figur von der Kamera.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      Since:
      0.28.0
    • moveFocus

      @API public Camera moveFocus(Vector delta)
      Verschiebt die Kamera um einen bestimmten Vektor (relativ).
      Parameters:
      delta - Die Verschiebung als Vektor.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • moveFocus

      @API public Camera moveFocus(double deltaX, double deltaY)
      Verschiebt die Kamera um einen bestimmten Wert in x- und y-Richtung (relativ).
      Parameters:
      deltaX - Die Verschiebung in x-Richtung.
      deltaY - Die Verschiebung in y-Richtung.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • hasFocus

      @API public boolean hasFocus()
      Gibt an, ob die Kamera ein Fokus-Objekt verfolgt oder „steif“ ist.
      Returns:
      true, wenn die Kamera ein Fokus-Objekt hat, sonst false.
      See Also:
    • offset

      @API @Setter public Camera offset(Vector offset)
      Setzt einen Kameraverzug. Der Standardwert hierfür ist (0, 0).

      Der Verzug ist ein Vektor, um den der Fokus verschoben wird. Das heißt, dass eine Figur im Fokus um 100 Pixel tiefer als im absoluten Bildzentrum liegt, wenn der Fokus-Verzug mit folgender Methode gesetzt wurde: camera.offset(new Vector(0, -100));

      Parameters:
      offset - Der Vektor, um den ab sofort die Kamera vom Zentrum des Fokus verschoben wird.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • offset

      @API @Getter public Vector offset()
      Gibt den Verzug der Kamera aus.
      Returns:
      Der aktuelle Verzug der Kamera.
      See Also:
    • bounds

      @API @Setter public Camera bounds(Bounds bounds)
      Mit dieser Methode kann die Kamerabewegung eingeschränkt werden.

      Ein Rechteck gibt die Begrenzung an, die die Kameraperspektive niemals übertreten wird.

      Parameters:
      bounds - Das Rechteck, das die Grenzen der Kamera angibt.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      See Also:
    • hasBounds

      @API public boolean hasBounds()
      Gibt an, ob die Kamera durch Bounds in ihrer Bewegung beschränkt ist.
      Returns:
      true falls ja, sonst false.
      See Also:
    • meter

      @API @Setter public Camera meter(double pixelCount)
      Setzt die Anzahl an Pixel, die einem Meter entsprechen und setzt somit den „Zoom“ der Kamera.

      Die Anzahl an Pixel eines Meters bestimmt wie „nah“ oder „fern“ die Kamera an der Zeichenebene ist. Der Standardwert eines Meters ist 32 Pixel. Größere Werte zoomen näher an die Spielfläche heran, kleine Werte weiter von der Spielfläche weg.

      Parameters:
      pixelCount - Die neue Anzahl an Pixel, die einem Meter entsprechen.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      See Also:
    • meter

      @API @Getter public double meter()
      Gibt die Anzahl an Pixel aus, die einem Meter entsprechen.

      Ist die Pixelvervielfältigung aktiviert, wird der Faktor der Pixelvervielfältigung mit der Pixelanzahl multipliziert

      Returns:
      Die Anzahl an Pixel aus, die einem Meter entsprechen.
    • zoomIn

      @API public Camera zoomIn(double factor)
      Die Kamera bewegt sich näher an das Spielfeld. Die Ansicht wird vergrößert.
      Parameters:
      factor - 1 verdoppelt die Pixelanzahl eines Meters, 0 keine Veränderung.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      Since:
      0.28.0
    • zoomIn

      @API public Camera zoomIn()
      Die Kamera bewegt sich um den Standard-Zoomfaktor näher an das Spielfeld. Die Ansicht wird vergrößert.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      Since:
      0.28.0
    • zoomOut

      @API public Camera zoomOut(double factor)
      Die Kamera entfernt sich vom Spielfeld. Die Ansicht wird verkleinert.
      Parameters:
      factor - 0.5 halbiert die Pixelanzahl eines Meters, 0 keine Veränderung.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      Since:
      0.28.0
    • zoomOut

      @API public Camera zoomOut()
      Die Kamera entfernt sich um den Standard-Zoomfaktor vom Spielfeld. Die Ansicht wird verkleinert.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
      Since:
      0.28.0
    • rotateBy

      @API public Camera rotateBy(double angle)
      Rotiert die Kamera um den angegebenen Winkel.

      Positive Werte drehen die Kamera gegen den Uhrzeigersinn, negative im Uhrzeigersinn.

      Parameters:
      angle - Der Winkel (in Grad), um den die Kamera rotiert werden soll.
      • Werte > 0: Drehung gegen Uhrzeigersinn
      • Werte < 0: Drehung im Uhrzeigersinn
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • rotateTo

      @API public Camera rotateTo(double angle)
      Setzt den Rotationswert der Kamera. rotateTo(90) dreht die Kamera beispiels um 90 Grad gegen den Uhrzeigersinn, rotateTo(-90) um 90 Grad im Uhrzeigersinn.
      Parameters:
      angle - Der Winkel (in Grad), um die Kamera von seiner Ausgangsposition bei Initialisierung rotiert werden soll.
      Returns:
      Eine Referenz auf die eigene Instanz der Kamera, damit nach dem Erbauer/Builder-Entwurfsmuster die Eigenschaften der Kamera durch aneinander gekettete Setter festgelegt werden können, z. B. camera.offset(..).focus(..).
    • rotation

      @Getter @API public double rotation()
      Gibt die aktuelle Drehung zurück.
      Returns:
      Die aktuelle Drehung.