# Class GameCamera

java.lang.Object
com.codename1.gaming.GameCamera

public class GameCamera extends Object

The camera a `GameView` renders through. It has two modes:

- `#MODE_ORTHO_2D` (the default) is the classic 2D mode: an orthographic camera mapping one world unit to one screen pixel, origin at the top left with y pointing down. Sprites are flat, positioned in pixels, and the camera scrolls via `Scene#setCamera(int, int)`. You never need to touch `GameCamera` for a 2D game.

- `#MODE_PERSPECTIVE` turns the same scene into a 3D world: sprites become camera-facing billboards positioned in 3D space (`Sprite#setPosition(double, double, double)`), and 3D meshes can be drawn alongside them. You drive the view with `#setPerspective(float, float, float)`, `#setPosition(float, float, float)` and `#setTarget(float, float, float)` -- e.g. an over-the-shoulder or top-down perspective camera that moves with the player.

    // switch a GameView into 3D and place the camera
    getCamera()
        .setPerspective(60, 0.1f, 500f)
        .setPosition(0, 6, 12)
        .setTarget(0, 0, 0);

In 3D mode world coordinates are right-handed with y up (the convention the `com.codename1.gpu` package uses), and sprite sizes are world units rather than pixels -- use `Sprite#setSize(float, float)` or `Sprite#setScale(float)` to pick a world-space size.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `MODE_ORTHO_2D`
  Orthographic, pixel-space 2D rendering (the default).
  `static final int`
  `MODE_PERSPECTIVE`
  Perspective 3D rendering with billboarded sprites.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GameCamera()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `float`
  `getEyeX()`
  `float`
  `getEyeY()`
  `float`
  `getEyeZ()`
  `float`
  `getFov()`
  `int`
  `getMode()`
  `float`
  `getTargetX()`
  `float`
  `getTargetY()`
  `float`
  `getTargetZ()`
  `GameCamera`
  `setOrthographic2D()`
  Switches back to the default orthographic 2D mode.
  `GameCamera`
  `setPerspective(float fovYDegrees, float near, float far)`
  Switches to perspective 3D rendering and sets the lens.
  `GameCamera`
  `setPosition(float x, float y, float z)`
  The eye position in world space (perspective mode).
  `GameCamera`
  `setTarget(float x, float y, float z)`
  The point the camera looks at, in world space (perspective mode).
  `GameCamera`
  `setUp(float x, float y, float z)`
  The camera up vector (defaults to 0,1,0).

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### MODE_ORTHO_2D

    public static final int MODE_ORTHO_2D
    Orthographic, pixel-space 2D rendering (the default).
    See Also:
      - Constant Field Values

  - ### MODE_PERSPECTIVE

    public static final int MODE_PERSPECTIVE
    Perspective 3D rendering with billboarded sprites.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### GameCamera

    public GameCamera()

- ## Method Details

  - ### getMode

    public int getMode()

  - ### setPerspective

    public GameCamera setPerspective(float fovYDegrees, float near, float far)

    Switches to perspective 3D rendering and sets the lens.

    ###### Parameters

    - `fovYDegrees`: vertical field of view in degrees (e.g. 60)

    - `near`: near clip distance (> 0)

    - `far`: far clip distance

  - ### setOrthographic2D

    public GameCamera setOrthographic2D()
    Switches back to the default orthographic 2D mode.

  - ### setPosition

    public GameCamera setPosition(float x, float y, float z)
    The eye position in world space (perspective mode).

  - ### setTarget

    public GameCamera setTarget(float x, float y, float z)
    The point the camera looks at, in world space (perspective mode).

  - ### setUp

    public GameCamera setUp(float x, float y, float z)
    The camera up vector (defaults to 0,1,0).

  - ### getEyeX

    public float getEyeX()

  - ### getEyeY

    public float getEyeY()

  - ### getEyeZ

    public float getEyeZ()

  - ### getTargetX

    public float getTargetX()

  - ### getTargetY

    public float getTargetY()

  - ### getTargetZ

    public float getTargetZ()

  - ### getFov

    public float getFov()