extends CharacterBody3D const SPEED = 5.0 const JUMP_VELOCITY = 4.5 var zoom = 0 var player_no var enabled = false var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") func _ready(): player_no = Game.players Game.players += 1 print(Server.players) print(Server.players_numbered[player_no]) print(multiplayer.get_unique_id()) if Server.players_numbered[player_no] == multiplayer.get_unique_id(): enabled = true $cam_y/Camera3D.current = true func _physics_process(delta): if enabled: if not is_on_floor(): velocity.y -= gravity * delta if Input.is_action_just_pressed("jump") and is_on_floor(): velocity.y = JUMP_VELOCITY var input_dir = Input.get_vector("left", "right", "forwards", "backwards") var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() if direction: velocity.x = direction.x * SPEED velocity.z = direction.z * SPEED else: velocity.x = move_toward(velocity.x, 0, SPEED) velocity.z = move_toward(velocity.z, 0, SPEED) move_and_slide() Server.sync_player.rpc(name, position, rotation) func _input(event): if enabled: if event is InputEventMouseMotion and (Input.is_action_pressed("cam_look") or $cam_y/Camera3D.position.z == 0): var camera_rotation = event.relative * 0.01 if $cam_y.rotation.x <= 1.6 && camera_rotation.y <= 0: $cam_y.rotate(Vector3.RIGHT, -camera_rotation.y) elif $cam_y.rotation.x >= -1.6 && camera_rotation.y >= 0: $cam_y.rotate(Vector3.RIGHT, -camera_rotation.y) if $cam_y.rotation.x >= 1.6: $cam_y.rotation.x = 1.6 elif $cam_y.rotation.x <= -1.6: $cam_y.rotation.x = -1.6 rotate(Vector3.DOWN, camera_rotation.x) func _unhandled_input(event): if enabled: if event.is_action_pressed("zoom_in") && $cam_y/Camera3D.position.z > 0: zoom = -1 $cam_y/Camera3D.position.z += zoom elif event.is_action_pressed("zoom_out") && $cam_y/Camera3D.position.z <= 20: zoom = 1 $cam_y/Camera3D.position.z += zoom else: zoom = 0