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