public void SyncPos(MsgSyncPlayer msg)
    {
        // rig.constraints = ~(RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezePositionX|RigidbodyConstraints.FreezePositionY|RigidbodyConstraints.FreezePositionZ);
        //预测位置
        // float speed = Vector2.Distance(v2,Vector2.zero);
        // animator.SetFloat("speed",speed);

        // Vector3 vector3 = new Vector3(v2.x,0,v2.y);

        // transform.localRotation = Quaternion.LookRotation(vector3);


        Vector3 pos = new Vector3(msg.x, msg.y, msg.z);
        Vector3 rot = new Vector3(msg.ex, msg.ey, msg.ez);

        // forecastPos = pos + 2*(pos - lastPos);
        // forecastRot = rot + 2*(rot - lastRot);
        forecastPos = pos;              //跟随不预测
        forecastRot = rot;

        //更新
        lastPos      = pos;
        lastRot      = rot;
        forecastTime = Time.time;
        // rig.constraints = RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezeRotationZ|RigidbodyConstraints.FreezeRotationX;
    }
 public static void OnMsgSyncPos(MsgBase msgBase)
 {
     MsgSyncPlayer msg = (MsgSyncPlayer)msgBase;
     // if(msg.playerId == GameMain.playerId){
     //     return;
     // }
     // GameMain.players[msg.playerId].GetComponent<testMove>();
 }
Exemple #3
0
    void OnMsgSyncPlayer(MsgBase msgBase)
    {
        MsgSyncPlayer msg = (MsgSyncPlayer)msgBase;

        if (msg.playerId == playerId)
        {
            return;
        }
        if (!players.ContainsKey(msg.playerId))
        {
            Vector3    pos       = new Vector3(msg.x, msg.y, msg.z);
            Quaternion q         = Quaternion.Euler(msg.ex, msg.ey, msg.ez);
            GameObject playerObj = Instantiate(GameMain.pre, pos, q);
            AddPlayer(msg.playerId, playerObj);
            playerObj.AddComponent <PlayerNetCtrl1>();
        }
        players[msg.playerId].GetComponent <PlayerNetCtrl1>().SyncPos(msg);
        // players[msg.playerId].GetComponent<>();
    }
Exemple #4
0
    private void SyncUpdate()
    {
        //时间间隔判断
        if (Time.time - lastSendSyncTime < 0.05f)
        {
            return;
        }
        lastSendSyncTime = Time.time;
        //发送同步协议
        MsgSyncPlayer msg = new MsgSyncPlayer();

        msg.x  = transform.position.x;
        msg.y  = transform.position.y;
        msg.z  = transform.position.z;
        msg.ex = transform.eulerAngles.x;
        msg.ey = transform.eulerAngles.y;
        msg.ez = transform.eulerAngles.z;

        NetManager.Send(msg);
    }