Unity Google Play游戏不同对象上的实时消息

时间:2017-08-11 11:22:46

标签: android unity3d google-play-services real-time multiplayer

所以我现在正在制作一个团结的游戏,这是一个空气曲棍球。

但我在接收不同对象的消息时遇到问题。

所以我做的是,当两个玩家在同一个房间时,我创建一个bool来选择主要玩家。

主要玩家将收到来自其他玩家(槌对手)的消息,而不是主要玩家的其他玩家将在其游戏中接收主玩家和托盘的消息。

所以我想出了这个:

public void OnRealTimeMessageReceived (bool isReliable, string senderId, byte[] data)
{
    string rawdata = System.Text.ASCIIEncoding.Default.GetString (data);
    string[] slice = rawdata.Split (new string[] { ":" }, System.StringSplitOptions.RemoveEmptyEntries);

    if (MainPlayer == true) {

        if (slice [0].Contains ("Position")) {

            Transform target = GameObject.Find ("mallet Opponent").transform;

            float posX = System.Convert.ToSingle (slice [1]);
            float posZ = System.Convert.ToSingle (slice [2]);

            Vector3 newpos = new Vector3 (-(posX), 0, -(posZ));

            target.position = newpos;

        }
    } 

    if (MainPlayer == false) {

        if (slice [0].Contains ("Position")) { 

            Transform target = GameObject.Find ("mallet Opponent").transform;

            float posX = System.Convert.ToSingle (slice [1]);
            float posZ = System.Convert.ToSingle (slice [2]);

            Vector3 newpos = new Vector3 (-(posX), 0, -(posZ));

            target.position = newpos;

        }

        if (slice [0].Contains ("palletPosition")) {

            Transform palletTarget = GameObject.Find ("pallet").transform;

            float palletPosX = System.Convert.ToSingle (slice [1]);
            float palletPosZ = System.Convert.ToSingle (slice [2]);

            Vector3 palletNewPos = new Vector3 (-(palletPosX), 0, -(palletPosZ));

            palletTarget.position = palletNewPos;

        }

    }

}

因此,当游戏开始时,对于主要玩家,我会收到其他玩家的消息,并且工作正常。

但对于其他玩家,我有一种奇怪的行为。

托盘没有移动,它停留在他的起始位置,但是“木槌对手”将位置改变到托盘必须去的位置,到主要玩家的实际位置。

我不知道为什么会这样做。

我该如何解决?

0 个答案:

没有答案