void Update()
        {
            Vector3 direction = Input.GetAxis("Vertical") * transform.forward + Input.GetAxis("Horizontal") * transform.right;

            if (direction.sqrMagnitude > 0.01f)
            {
                Vector3 forward = Vector3.Slerp(
                    transform.forward,
                    direction,
                    rotationSpeed * Time.deltaTime / Vector3.Angle(transform.forward, direction)
                    );
                transform.LookAt(transform.position + forward);
            }
            transform.Translate(direction * moveSpeed * Time.deltaTime, Space.World);

            if (MagicOnionNetwork.IsJoined)
            {
                PlayerMoveParameter param = new PlayerMoveParameter();
                param.ActorNumber = MagicOnionNetwork.LocalPlayer.ActorNumber;
                param.PlayerName  = MagicOnionNetwork.LocalPlayer.Name;
                param.Position    = transform.position;
                param.Rotation    = transform.rotation;

                GameHubComponent.Instance.MoveAsync(param);
            }
        }
Пример #2
0
 public void MoveAsync(PlayerMoveParameter param)
 {
     if (MagicOnionNetwork.IsConnected)
     {
         _gameHubClient.MoveAsync(param);
     }
 }
        private void OnMoveRemotePlayerCharacter(PlayerMoveParameter param)
        {
            GameObject remotePlayer;

            _remotePlayers.TryGetValue(param.ActorNumber, out remotePlayer);
            if (remotePlayer != null)
            {
                remotePlayer.transform.position = param.Position;
                remotePlayer.transform.rotation = param.Rotation;
            }
        }
Пример #4
0
 public async Task MoveAsync(PlayerMoveParameter param)
 {
     BroadcastExceptSelf(group).OnMove(param);
     await Task.CompletedTask;
 }
Пример #5
0
 void IGameHubReceiver.OnMove(PlayerMoveParameter param)
 {
     OnMovePlayerCharacter?.Invoke(param);
 }