コード例 #1
0
ファイル: ExampleServer.cs プロジェクト: Phantasma5/DaveClone
    public void Update()
    {
        Dictionary <int, ServerNetwork.NetworkObject> objInfo = serverNet.GetAllObjects();

        foreach (KeyValuePair <int, ServerNetwork.NetworkObject> objKV in objInfo)
        {
            netObjs[objKV.Key].transform.position = objKV.Value.position;
        }

        Dictionary <int, ServerNetwork.NetworkObject> objs = serverNet.GetAllObjects();

        if (objectCurrentlyIt == 0 || !objs.ContainsKey(objectCurrentlyIt))
        {
            if (objs.Count == 0)
            {
                return;
            }

            // Pick someone "random" and tell them they are it
            foreach (KeyValuePair <int, ServerNetwork.NetworkObject> objData in objs)
            {
                if (objData.Value.prefabName == "Player")
                {
                    objectCurrentlyIt = objData.Value.networkId;
                    serverNet.CallRPC("SetItState", UCNetwork.MessageReceiver.AllClients,
                                      objData.Value.networkId, true);
                    return;
                }
            }
        }

        // Check if someone has been "tagged"
        if (objs.Count > 1 && canTag)
        {
            ServerNetwork.NetworkObject itObj = objs[objectCurrentlyIt];
            foreach (KeyValuePair <int, ServerNetwork.NetworkObject> objData in objs)
            {
                if (objData.Value.prefabName == "Player")
                {
                    if (objData.Value.networkId == objectCurrentlyIt)
                    {
                        continue;
                    }
                    float sqrDis = (itObj.position - objData.Value.position).sqrMagnitude;
                    if (sqrDis < 1)
                    {
                        serverNet.CallRPC("SetItState", UCNetwork.MessageReceiver.AllClients,
                                          objectCurrentlyIt, false);
                        serverNet.CallRPC("SetItState", UCNetwork.MessageReceiver.AllClients,
                                          objData.Value.networkId, true);
                        objectCurrentlyIt = objData.Value.networkId;

                        canTag = false;
                        StartCoroutine(TagbackTime());
                        return;
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: ExampleServer.cs プロジェクト: Phantasma5/DaveClone
    public void Update()
    {
        Dictionary <int, ServerNetwork.NetworkObject> objInfo = serverNet.GetAllObjects();

        foreach (KeyValuePair <int, ServerNetwork.NetworkObject> objKV in objInfo)
        {
            netObjs[objKV.Key].transform.position = objKV.Value.position;
        }
    }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        // How often should we update to the admin clients?
        updateTimer -= Time.deltaTime;
        if (updateTimer <= 0)
        {
            updateTimer = updateFrequency;

            // Send down all the network objects
            Dictionary <int, ServerNetwork.NetworkObject> objects = serverNet.GetAllObjects();
            foreach (long clientId in adminClients)
            {
                foreach (KeyValuePair <int, ServerNetwork.NetworkObject> obj in objects)
                {
                    serverNet.CallRPC("UpdateNetObject", clientId, -1, obj.Value.networkId, obj.Value.areaId, obj.Value.prefabName, obj.Value.position, obj.Value.rotation, obj.Value.followsClient);
                }
            }
        }
    }