Files
mmo/scenes/player/camera.gd
Marek Lenczewski 73af6abeb7 update
2026-04-02 19:30:44 +02:00

31 lines
846 B
GDScript

extends Node3D
const SENSITIVITY := 0.003
const PITCH_MIN := -80.0
const PITCH_MAX := 80.0
var pitch := -0.3
var camera_yaw := 0.0
var player_yaw := -2.356
func _ready() -> void:
get_parent().rotation.y = player_yaw
rotation = Vector3(pitch, camera_yaw, 0)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
var lmb := Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT)
var rmb := Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT)
if lmb or rmb:
pitch -= event.relative.y * SENSITIVITY
pitch = clamp(pitch, deg_to_rad(PITCH_MIN), deg_to_rad(PITCH_MAX))
if rmb:
player_yaw -= event.relative.x * SENSITIVITY
get_parent().rotation.y = player_yaw
else:
camera_yaw -= event.relative.x * SENSITIVITY
rotation = Vector3(pitch, camera_yaw, 0)