Files
boatgame/scripts/camera_rig.gd
T
2026-07-09 08:18:48 +02:00

34 lines
901 B
GDScript

class_name CameraRig
extends Node3D
@export var sensitivity := 0.005
@export var follow_speed := 5.0
@export var cam: Camera3D
var target: Node3D # Controlled by PlayerController
var _dragging := false
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
match event.button_index:
MOUSE_BUTTON_LEFT:
_dragging = event.pressed
MOUSE_BUTTON_WHEEL_UP:
cam.position.z = maxf(cam.position.z - 1.0, 3.0)
MOUSE_BUTTON_WHEEL_DOWN:
cam.position.z = minf(cam.position.z + 1.0, 30.0)
elif event is InputEventMouseMotion and _dragging:
rotation.y -= event.relative.x * sensitivity
rotation.x = clampf(
rotation.x - event.relative.y * sensitivity,
deg_to_rad(-80.0),
deg_to_rad(-10.0)
)
func _process(delta: float) -> void:
if target:
global_position = global_position.lerp(target.global_position, 1.0 - exp(-follow_speed * delta))