36 lines
900 B
GDScript
36 lines
900 B
GDScript
extends Camera3D
|
|
|
|
class_name CameraController
|
|
|
|
@export var PlayerNode: Node3D;
|
|
|
|
@export var turnSpeed: float = 0.25;
|
|
@export var XRotationClamp: Vector2 = Vector2(-90, 90)
|
|
|
|
var currentRotation: Vector2 = Vector2(0,0);
|
|
var enabled: bool = true
|
|
|
|
func _ready() -> void:
|
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED;
|
|
|
|
func disableInput():
|
|
enabled = false
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if not enabled:
|
|
return
|
|
|
|
if event is InputEventKey && event.key_label == KEY_ESCAPE:
|
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
|
|
if event is not InputEventMouseMotion:
|
|
return
|
|
|
|
var inputRotation = event.relative
|
|
|
|
self.currentRotation += Vector2(inputRotation.y, inputRotation.x) * self.turnSpeed * -1;
|
|
|
|
self.currentRotation.x = clamp(currentRotation.x, XRotationClamp.x, XRotationClamp.y);
|
|
|
|
self.rotation_degrees.x = currentRotation.x;
|
|
self.PlayerNode.rotation_degrees.y = currentRotation.y
|