Files
godot-multiplayer-demo/player.gd
2026-02-16 14:25:33 +01:00

46 lines
1.3 KiB
GDScript

extends CharacterBody3D
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
var speed = 5
var jump_speed = 5
var mouse_sensitivity = 0.002
@onready var camera_3d: Camera3D = $"Camera3D"
func _enter_tree():
set_multiplayer_authority(name.to_int())
func _ready():
if !is_multiplayer_authority():
return;
camera_3d.make_current()
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func _input(event):
if !is_multiplayer_authority():
return;
if event.is_action_pressed("ui_cancel"):
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
rotate_y(-event.relative.x * mouse_sensitivity)
camera_3d.rotate_x(-event.relative.y * mouse_sensitivity)
camera_3d.rotation.x = clampf(camera_3d.rotation.x, -deg_to_rad(70), deg_to_rad(70))
func _physics_process(delta):
if !is_multiplayer_authority():
get_multiplayer_authority()
return;
velocity.y += -gravity * delta
var input = Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var movement_dir = transform.basis * Vector3(input.x, 0, input.y)
velocity.x = movement_dir.x * speed
velocity.z = movement_dir.z * speed
move_and_slide()