minijam-166/scripts/camera.gd

35 lines
815 B
GDScript

extends Camera2D
const MOVEMENT_SPEED = 200
const ZOOM_SPEED = 10
const ZOOM_WINDOW = [0.5, 2]
const BORDER_THRESHOLD = 50
var movement = Vector2()
var zoom_change = 0
func _process(delta):
movement = Vector2()
zoom_change = 0
if Input.is_action_pressed("ui_right"):
movement.x = 1
if Input.is_action_pressed("ui_left"):
movement.x = -1
if Input.is_action_pressed("ui_up"):
movement.y = -1
if Input.is_action_pressed("ui_down"):
movement.y = 1
if Input.is_action_just_pressed("zoom"):
zoom_change = 1
if Input.is_action_just_pressed("dezoom"):
zoom_change = -1
movement = movement.normalized()
var zoom_value = max(min(zoom.x + zoom_change*ZOOM_SPEED*delta, ZOOM_WINDOW[1]), ZOOM_WINDOW[0])
zoom = Vector2(zoom_value, zoom_value)
position = position+movement*MOVEMENT_SPEED*delta