38 lines
1.1 KiB
GDScript
38 lines
1.1 KiB
GDScript
extends Camera3D
|
|
|
|
@export var SENSITIVITY = 0.02
|
|
@export var SPEED = 10.0
|
|
|
|
func _enter_tree() -> void:
|
|
set_multiplayer_authority(int(name))
|
|
|
|
func _ready() -> void:
|
|
if not is_multiplayer_authority():
|
|
return
|
|
# Move to level controller when possible
|
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
|
current = true
|
|
|
|
func _process(delta: float) -> void:
|
|
if not is_multiplayer_authority():
|
|
return
|
|
var xz_plane = Input.get_vector("plr_strafe_l","plr_strafe_r","plr_forward","plr_back")
|
|
var y = Input.get_axis("spc_down","spc_up")
|
|
|
|
var direction = Vector3(xz_plane.x,y,xz_plane.y)
|
|
global_position += global_basis * direction * SPEED * delta
|
|
|
|
func rotate_camera(x,y) -> void:
|
|
rotate_y(x)
|
|
rotation.x = clamp(rotation.x + y,-PI/2,PI/2)
|
|
orthonormalize()
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if not is_multiplayer_authority():
|
|
return
|
|
if event is InputEventMouseMotion:
|
|
rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY)
|
|
|
|
@rpc("any_peer","call_local","reliable")
|
|
func set_after_spawn(start_position: Vector3, _team: int):
|
|
global_position = start_position
|