Class Camera

java.lang.Object
de.pirckheimer_gymnasium.engine_pi.Camera

public final class Camera extends Object
Die Kamera steuert welchen 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.setBounds(bounds);
 

Hierdurch wird automatisch der gesamte Fokusapparat (auf den Bereich zwischen den Punkten (0|0) und (1500|1000)) eingestellt. Bei spezielleren Fokuswünschen lässt sich dies ebenfalls arrangieren durch die einzelnen Methoden, mit denen alle vier Bounds (N, S, O, W) einzeln verstellt und (de)aktiviert werden können.

!!Achtung!!

Bei den Fokuseinstellungen 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
  • Field Summary

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

    Constructors
    Constructor
    Description
    Konstruktor erstellt eine neue Kamera mit Fokus auf (0, 0).
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    Gibt die Anzahl an Pixel aus, die einem Meter entsprechen.
    Gibt den Verzug der Kamera aus.
    Die aktuelle Position der Kamera.
    double
    Gibt die aktuelle Drehung zurück.
    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.
    void
    moveBy(double x, double y)
    Verschiebt die Kamera um einen bestimmten Wert in x- und y-Richtung (relativ).
    void
    moveBy(Vector vector)
     
    void
    moveTo(int x, int y)
    Verschiebt das Zentrum der Kamera zur angegebenen Position (absolute Verschiebung).
    void
    moveTo(Vector vector)
     
    void
    Implementiert den FrameUpdateListener nicht, da die Kamera an einem anderen Zeitpunkt aktualisiert wird.
    void
    rotateBy(double degree)
     
    void
    rotateTo(double degree)
     
    void
    setBounds(Bounds bounds)
    Mit dieser Methode kann die Kamerabewegung eingeschränkt werden.
    void
    setFocus(Actor focus)
    Setzt den Fokus der Kamera auf ein Objekt.
    void
    setMeter(double pixelCount)
    Setzt die Anzahl an Pixel, die einem Meter entsprechen und setzt somit den „Zoom“ der Kamera.
    void
    setOffset(Vector offset)
    Setzt einen Kameraverzug.
    void
    setPosition(Vector position)
    Setzt die aktuelle Position der Kamera.
    void
    setPostion(double x, double y)
    Setzt die aktuelle Position der Kamera.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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:
  • Constructor Details

    • Camera

      @Internal public Camera()
      Konstruktor erstellt eine neue Kamera mit Fokus auf (0, 0).
  • Method Details

    • setFocus

      @API public void setFocus(Actor focus)
      Setzt den Fokus der Kamera auf ein Objekt.

      Dieses Objekt ist ab dann im „Zentrum“ der Kamera. Die Art des Fokus (rechts, links, oben, unten, mittig, etc.) kann über die Methode setOffset(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:
      focus - Der Fokus.
    • 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:
    • setOffset

      @API public void setOffset(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 Fokusverzug mit folgender Methode gesetzt wurde: camera.setOffset(new Vector(0, -100));

      Parameters:
      offset - Der Vektor, um den ab sofort die Kamera vom Zentrum des Fokus verschoben wird.
    • getOffset

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

      @API public void setBounds(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.
    • hasBounds

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

      @API public void setMeter(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 30 Pixel. Große Werte zoomen rein, kleine Werte raus.

      Parameters:
      pixelCount - Die neue Anzahl an Pixel, die einem Meter entsprechen.
    • getMeter

      @API public double getMeter()
      Gibt die Anzahl an Pixel aus, die einem Meter entsprechen.
      Returns:
      Die Anzahl an Pixel aus, die einem Meter entsprechen.
    • moveBy

      @API public void moveBy(double x, double y)
      Verschiebt die Kamera um einen bestimmten Wert in x- und y-Richtung (relativ).
      Parameters:
      x - Die Verschiebung in x-Richtung.
      y - Die Verschiebung in y-Richtung.
    • moveBy

      @API public void moveBy(Vector vector)
    • moveTo

      @API public void moveTo(int x, int 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.
    • moveTo

      @API public void moveTo(Vector vector)
    • rotateBy

      @API public void rotateBy(double degree)
    • rotateTo

      @API public void rotateTo(double degree)
    • setPosition

      @API public void setPosition(Vector position)
      Setzt die aktuelle Position der Kamera.
      Parameters:
      position - Die neue Position der Kamera.
    • setPostion

      @API public void setPostion(double x, double y)
      Setzt die aktuelle Position der Kamera.
      Parameters:
      x - Die neue X-Koordinate des Kamerazentrums.
      y - Die neue Y-Koordinate des Kamerazentrums.
    • getPosition

      @API public Vector getPosition()
      Die aktuelle Position der Kamera.
      Returns:
      Die aktuelle Position der Kamera.
    • onFrameUpdate

      public void onFrameUpdate()
      Implementiert den FrameUpdateListener nicht, da die Kamera an einem anderen Zeitpunkt aktualisiert wird.
    • getRotation

      public double getRotation()
      Gibt die aktuelle Drehung zurück.
      Returns:
      Die aktuelle Drehung.