35 lines
815 B
GDScript
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
|