コード例 #1
0
    protected override void Update()
    {
        if (!GameRunning)
        {
            return;
        }

        if (clockRunning)
        {
            clock -= Time.deltaTime;

            if (authoritative)
            {
                BallUpdateMessage ballUpdate = new BallUpdateMessage();
                ballUpdate.Position = ball.Position;
                ballUpdate.Velocity = ball.Velocity;

                Manager.Network.Engine.Send(ballUpdate, LiteNetLib.SendOptions.Sequenced);
            }
        }

        PaddleUpdateMessage paddleUpdate = new PaddleUpdateMessage();

        paddleUpdate.Position = localPaddle.Position;
        paddleUpdate.Velocity = localPaddle.Velocity;
        paddleUpdate.Input    = localPaddle.MoveDir;

        Manager.Network.Engine.Send(paddleUpdate, LiteNetLib.SendOptions.Sequenced);

        if (clock <= 0f)
        {
            if (authoritative)
            {
                if (localScore == remoteScore)
                {
                    EndGame(Player.None);
                }
                else if (localScore > remoteScore)
                {
                    EndGame(Player.Server);
                }
                else if (remoteScore > localScore)
                {
                    EndGame(Player.Client);
                }
            }
        }
        else
        {
            int time = Mathf.Max(Mathf.RoundToInt(clock), 0);
            Manager.UI.Clock.text = string.Format("{0}:{1:00}", time / 60, time % 60);
        }
    }
コード例 #2
0
    public void HandleBallUpdate(BallUpdateMessage update)
    {
        if (!GameRunning)
        {
            return;
        }

        //transform into local space
        Vector2 position = Ball.RotatePoint(update.Position, 180);
        Vector2 velocity = Ball.RotatePoint(update.Velocity, 180);

        ball.Position = position;
        ball.Velocity = velocity;
        ballGO.SetActive(true);
    }