movement sync

This commit is contained in:
Rendo 2025-12-03 16:05:52 +05:00
commit bb3a14ece7
13 changed files with 46 additions and 35 deletions

View file

@ -7,17 +7,10 @@ extends Node
const ATTACK_LAYER: int = 0b10000
const DEFENCE_LAYER: int = 0b100000
func on_spawned() -> void:
func _ready() -> void:
if is_multiplayer_authority() == false: return
var mask = (ATTACK_LAYER if (player.team == Session.TEAMS.DEFENCE != inverse) else DEFENCE_LAYER)
if layer:
get_parent().collision_layer |= mask
else:
get_parent().collision_mask |= mask
global_update.rpc(layer,mask)
@rpc
func global_update(new_layer,mask) -> void:
if new_layer:
get_parent().collision_layer |= mask
else:
get_parent().collision_mask |= mask

View file

@ -4,9 +4,8 @@ extends Camera3D
var active: bool
func _ready() -> void:
if not is_multiplayer_authority():
return
func _enter_tree() -> void:
set_multiplayer_authority(int(get_parent().get_parent().name))
func set_active() -> void:
if not is_multiplayer_authority():

View file

@ -4,10 +4,13 @@ class_name Player
@export var team: Session.TEAMS
@export var weapon_models: Dictionary[StringName,Node3D]
@export var player_id: int = 1:
set(id):
player_id = id
$PlayerInput.set_multiplayer_authority(id)
var passived: bool = false
signal spawned
signal health_changed(to: int)
signal died

View file

@ -3,6 +3,7 @@ extends Node
class_name PlayerMovement
@export var player: Player
@export var player_input: PlayerInput
var disabled: bool
func disable() -> void:
@ -15,7 +16,7 @@ func process_movement(max_speed: float,acceleration: float,deceleration: float,d
player.velocity.x = 0
player.velocity.z = 0
return
var input_dir := Input.get_vector("plr_strafe_r","plr_strafe_l", "plr_back","plr_forward")
var input_dir := player_input.direction
var direction := (player.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
player.velocity.x = clamp(player.velocity.x + direction.x * acceleration * delta,-max_speed*abs(direction.x),max_speed*abs(direction.x))

View file

@ -5,8 +5,5 @@ extends Node
@export var blue_team_texture: Texture2D
func _ready() -> void:
get_tree().create_timer(1).timeout.connect(on_player_spawned)
func on_player_spawned() -> void:
if player.team == Session.TEAMS.DEFENCE:
material.albedo_texture = blue_team_texture