コード例 #1
0
    public void HandlePlayerInput(ServerNetworkManager servNetworkManager, InputMessage msgInput)
    {
        Transform characterTransf = allCharacters.Find(it => it.ClientId == msgInput.ReceiverId)
                                    .CharacterObj.GetComponent <Transform>();
        float deltaTime = Time.deltaTime + (System.DateTime.Now.Subtract(msgInput.TimeStamp).Milliseconds / 1000f);

        foreach (InputType type in msgInput.InputTypeMsg)
        {
            switch (type)
            {
            case InputType.MoveBack:

                characterTransf.position += GetVelocityToMoveBack(deltaTime);
                break;

            case InputType.MoveForward:

                characterTransf.position += GetVelocityToMoveForward(deltaTime);
                break;

            case InputType.MoveLeft:

                characterTransf.position += GetVelocityToMoveLeft(deltaTime);
                break;

            case InputType.MoveRight:

                characterTransf.position += GetVelocityToMoveRight(deltaTime);
                break;
            }
        }


        TransformMessage tranformMsg = new TransformMessage(msgInput.ReceiverId);

        tranformMsg.AcknowledgmentId = msgInput.RequestId;
        tranformMsg.Position.Vect3   = characterTransf.position;
        servNetworkManager.SendNetworkUnreliableMessage(tranformMsg, msgInput.ReceiverId);
    }
コード例 #2
0
    public void SendAllPlayersAllOtherPlayerPostions(ServerNetworkManager servNetworkManger)
    {
        foreach (Character character in allCharacters)
        {
            Vector3 playerPos = character.CharacterObj.transform.position;
            character.LastSentPosition = new Vector3(playerPos.x, playerPos.y, playerPos.z);

            /* Send inform this characters client about all other characters positions */
            List <Character>        allOtherCharacters = allCharacters.FindAll(it => it.ClientId != character.ClientId);
            List <TransformMessage> allTranformMsg     = new List <TransformMessage>();
            foreach (Character otherCharacter in allOtherCharacters)
            {
                TransformMessage transfMsg = new TransformMessage(otherCharacter.ClientId);
                transfMsg.Position.Vect3      = otherCharacter.CharacterObj.transform.position;
                transfMsg.Scale.Vect3         = otherCharacter.CharacterObj.transform.localScale;
                transfMsg.Rotation.Quaternion = otherCharacter.CharacterObj.transform.rotation;
                allTranformMsg.Add(transfMsg);
                otherCharacter.LastSentPosition = new Vector3(transfMsg.Position.X, transfMsg.Position.Y, transfMsg.Position.Z);
            }
            MultipleTranformMessage multipleTransfMsg = new MultipleTranformMessage(allTranformMsg.ToArray());
            servNetworkManger.SendNetworkUnreliableMessage(multipleTransfMsg, character.ClientId);
        }
    }