diff --git a/Assets/Resources/Character/Controller/NetworkCharacter/NetworkPlayerGhost.prefab b/Assets/Resources/Character/Controller/NetworkCharacter/NetworkPlayerGhost.prefab index d23d982..52e16a3 100644 --- a/Assets/Resources/Character/Controller/NetworkCharacter/NetworkPlayerGhost.prefab +++ b/Assets/Resources/Character/Controller/NetworkCharacter/NetworkPlayerGhost.prefab @@ -137,6 +137,9 @@ MonoBehaviour: type: 3} _spectatorBodyPrefab: {fileID: 1135382073684329176, guid: b615186e864b86245a99d5258f67ae27, type: 3} + playerObjectList: + - playerGhost: {fileID: 0} + playerBody: {fileID: 0} --- !u!54 &5298965799069515050 Rigidbody: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Player/Character/Controller/CharacterStateChanger.cs b/Assets/Scripts/Player/Character/Controller/CharacterStateChanger.cs index d4968bb..1fdb1e1 100644 --- a/Assets/Scripts/Player/Character/Controller/CharacterStateChanger.cs +++ b/Assets/Scripts/Player/Character/Controller/CharacterStateChanger.cs @@ -1,11 +1,12 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using Mirror; namespace TTTSC.Player.Character.Controller { [RequireComponent(typeof(CharacterStateMachine))] - public class CharacterStateChanger : MonoBehaviour + public class CharacterStateChanger : NetworkBehaviour { private PlayerGhostReffrenceHub _playerGhostReffrenceHub; private PlayerInputReceiver _playerInputReceiver; @@ -40,21 +41,40 @@ namespace TTTSC.Player.Character.Controller private void Update() { - - if (_crouchIsHeld && !_sprintIsPerforming) - _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Crouching; - - if (_walkIsPerforming && !_crouchIsHeld && !_sprintIsPerforming) - _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Walking; - - if (_sprintIsPerforming && !_crouchIsHeld && _walkIsPerforming) - _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Sprinting; - - - if (!_walkIsPerforming && !_crouchIsHeld && !_sprintIsPerforming) + if (isLocalPlayer) { - _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Idle; + Debug.Log("I am the local player"); + + if (_crouchIsHeld && !_sprintIsPerforming) + { + CmdCrouch(); + } + + if (_walkIsPerforming && !_crouchIsHeld && !_sprintIsPerforming) + _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Walking; + + if (_sprintIsPerforming && !_crouchIsHeld && _walkIsPerforming) + _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Sprinting; + + + if (!_walkIsPerforming && !_crouchIsHeld && !_sprintIsPerforming) + { + _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Idle; + } } + + } + + [Command] + void CmdCrouch() + { + RpcCrouch(); + } + + [ClientRpc] + void RpcCrouch() + { + _characterStateMachine.movementStates = CharacterStateMachine.MovementStates.Crouching; } } } diff --git a/Assets/Scripts/Player/Character/Controller/PlayerInputReceiver.cs b/Assets/Scripts/Player/Character/Controller/PlayerInputReceiver.cs index 04bba87..cafb660 100644 --- a/Assets/Scripts/Player/Character/Controller/PlayerInputReceiver.cs +++ b/Assets/Scripts/Player/Character/Controller/PlayerInputReceiver.cs @@ -32,8 +32,12 @@ namespace TTTSC.Player.Character.Controller playerInputEvents.Enable(); _networkIdentity = GetComponent(); - - _networkIdentity.AssignClientAuthority(_networkIdentity.connectionToClient); + + + if (isServer) + { + _networkIdentity.AssignClientAuthority(_networkIdentity.connectionToClient); + } // #region GlobalControls diff --git a/Assets/Scripts/Player/NetworkCharacter/NetworkPlayerStateEnforcer.cs b/Assets/Scripts/Player/NetworkCharacter/NetworkPlayerStateEnforcer.cs index 9688c62..d2e8412 100644 --- a/Assets/Scripts/Player/NetworkCharacter/NetworkPlayerStateEnforcer.cs +++ b/Assets/Scripts/Player/NetworkCharacter/NetworkPlayerStateEnforcer.cs @@ -20,6 +20,15 @@ namespace TTTSC.Player.NetworkedCharacter [SerializeField] [Tooltip("assign the 'dead' prefab here")] private GameObject _spectatorBodyPrefab; + [SerializeField] + private List playerObjectList; + + [System.Serializable] + private class PlayerObject + { + public GameObject playerGhost; + public GameObject playerBody; + } private GameObject _aliveBody; private GameObject _spectatorBody; @@ -64,6 +73,16 @@ namespace TTTSC.Player.NetworkedCharacter { _aliveBody = Instantiate(_aliveBodyPrefab, transform.position, transform.rotation, transform); NetworkServer.Spawn(_aliveBody); + + GameObject _networkAliveBody = NetworkServer.spawned[(uint)NetworkServer.spawned.Count].gameObject; + + Debug.Log("spawned alive body with ID " + _aliveBody.GetComponent().netId); + + if (_networkAliveBody != null) + { + _networkAliveBody.transform.parent = transform; + } + } } diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index fbb7c0b..90d6509 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.3f1 -m_EditorVersionWithRevision: 2021.3.3f1 (af2e63e8f9bd) +m_EditorVersion: 2021.3.1f1 +m_EditorVersionWithRevision: 2021.3.1f1 (3b70a0754835)