TowerDefense/Levels/Scripts/Camera.gd

39 lines
943 B
GDScript3
Raw Normal View History

2025-09-06 00:05:22 +02:00
extends Camera3D
const SCREEN_MARGIN : int = 150
2025-09-06 04:01:33 +02:00
@export var curve : Curve
func _ready() -> void:
curve.bake()
2025-09-06 00:05:22 +02:00
func _process(_delta: float) -> void:
var windowSize : Vector2i = get_window().size
var mousePosition : Vector2 = get_viewport().get_mouse_position()
if mousePosition.x < SCREEN_MARGIN:
2025-09-06 04:01:33 +02:00
position.x += -0.05
2025-09-06 00:05:22 +02:00
if mousePosition.y < SCREEN_MARGIN:
2025-09-06 04:01:33 +02:00
position.z += -0.05
if mousePosition.x > windowSize.x - SCREEN_MARGIN:
position.x += 0.05
if mousePosition.y > windowSize.y - SCREEN_MARGIN:
position.z += 0.05
func _input(event: InputEvent) -> void:
if not event is InputEventMouseButton:
return
var newPosition : float = position.y
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
newPosition = clampf(newPosition - .2, 2, 10)
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
newPosition = clampf(newPosition + .2, 2, 10)
rotation.x = deg_to_rad(curve.sample(newPosition))
position.y = newPosition