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); }
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); } }