Skip to content

hackergrrl/game-camera-2d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

game-camera-2d

A simple 2D camera suited for games.

Install

$ npm install game-camera-2d

Usage

var camera = createCamera({
  left: 0,
  right: 640,
  top: 0,
  bottom: 480
})

camera.setTranslation(64, 64)
camera.setRotation(Math.PI / 4)
camera.setScale(0.5)

var matrix = camera.getMatrix()
console.dir(matrix)

outputs a 3x3 matrix compatible with gl-mat3:

Float32Array {
  '0': 0.0011048543965443969,
  '1': -0.001473139156587422,
  '2': 0,
  '3': -0.0011048543965443969,
  '4': -0.001473139156587422,
  '5': 0,
  '6': 0,
  '7': 0.18856181204319,
  '8': 1 }

API

var camera = require('game-camera-2d')(options)

Creates a new camera object. The options object contains the following optional parameters:

  • left - the coordinate of the left side of the screen.
  • right - the coordinate of the right side of the screen.
  • top - the coordinate of the top of the screen.
  • bottom - the coordinate of the bottom of the screen.
  • x - the X coordinate to centre the camera on.
  • y - the Y coordinate to centre the camera on.
  • angle - the rotation to apply around the screen centre.
  • scale - the scaling factor to apply.

Properties

camera.width, camera.height

Width and height of the camera viewport, in units.

camera.x, camera.y

The camera's current X/Y offset from the origin.

camera.rotation

The rotation of the camera viewport, in radians.

camera.scale

The scaling factor of the camera.

Methods

camera.getMatrix([out])

Retrieves the current state of the camera matrix.

out is a length 9 array which receives the result of the computation if not otherwise specified.

Returns The resulting camera matrix

camera.setTranslation(x, y)

Sets the X/Y offset from the origin for the camera to be centred on.

camera.setRotation(angle)

Sets the rotation around the translation coordinates, in radians.

camera.setScale(scale)

Sets the scaling factor of the camera at the translation coordinates.

Additional Credit

Heavily inspired by Mikola Lysenko's camera-2d module.

I really liked the idea of a lightweight 2D camera that spits out a 3x3 transformation matrix, but wanted an API that made both absolute and relative operations easy.

About

🎥 A simple 2D camera that's suited for games.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published