Beispiel #1
0
    void ServerReceiveCommand(NetworkMessage message)
    {
        InputSynchronizationMessage inputMessage = message.ReadMessage <InputSynchronizationMessage>();

        // Get network ID from sent object.
        NetworkInstanceId netId = new NetworkInstanceId(inputMessage.netId);

        // Find instance of local object.
        GameObject foundObj = NetworkServer.FindLocalObject(netId);

        // Verify object existance.
        if (foundObj == null)
        {
            return;
        }

        // Confirm ownership (only works for single player on one machine).
        if (message.conn.playerControllers[0].unetView.netId == netId)
        {
            // Deserialize user command.
            UserCmd inputCommand = UserCmd.DeSerialize(inputMessage.messageData);

            // Get reference to player input.
            PlayerInputSynchronization input = foundObj.GetComponent <PlayerInputSynchronization>();

            // Send user command to object.
            input.HandleUserCommand(inputCommand);
        }
    }
 public void Awake()
 {
     m_TargetPlayer = GetComponent <Player>();
     m_PlayerInput  = GetComponent <PlayerInputSynchronization>();
     //Initialize predicted state
 }
Beispiel #3
0
 public void Awake()
 {
     m_Input = GetComponent <PlayerInputSynchronization>();
 }
Beispiel #4
0
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        // Create player game object.
        GameObject playerObject = Instantiate(
            playerPrefab,
            Vector3.zero,
            Quaternion.identity
            );

        Assert.IsNotNull(playerObject);

        // Get sync component.
        PlayerInputSynchronization input = playerObject.GetComponent <PlayerInputSynchronization>();

        // Get player gameobject.
        Player player = playerObject.GetComponent <Player>();

        // Add player reference to player list.
        Players.Add(player);

        // Ready the player for connection.
        NetworkServer.AddPlayerForConnection(conn, playerObject, playerControllerId);

        // Calculate this based on new player in list.
        int spawnedPlayerID = Players.Count - 1;

        // HACK HACK - Only for 2 players...
        if (spawnedPlayerID == 1)
        {
            // Start the game.
            RaceManager.Instance.StartRace();
        }

        // Define default position and rotations for ship.
        Vector3    shipSpawnPosition = Vector3.zero;
        Quaternion shipSpawnRotation = Quaternion.identity;

        // Check if player has spawn transform set.
        if (m_ShipSpawns.ContainsKey(spawnedPlayerID))
        {
            // Get spawn point transform.
            Transform spawn = m_ShipSpawns[spawnedPlayerID];

            // Apply spawn position and rotation.
            shipSpawnPosition = spawn.position;
            shipSpawnRotation = spawn.rotation;
        }

        // Instantiate ship for player.
        GameObject shipObject = Instantiate(
            m_PlayerShipPrefab,
            shipSpawnPosition,
            shipSpawnRotation
            );

        // Get ship controller component.
        ShipController controller = shipObject.GetComponent <ShipController>();

        // Spawn ship in network.
        NetworkServer.Spawn(shipObject);

        // Assign player to ship controller.
        player.Possess(controller);

        // Posess player ship on client.
        controller.TargetSetupShip(conn);

        Debug.Log("Player added. (" + Players.Count + ")");
    }