public override IEnumerator OnReceive(Session session, Gamnet.Packet packet) { { Packet.MsgCliSvr_Start_Ntf ntf = packet.Deserialize <Packet.MsgCliSvr_Start_Ntf>(); session.ball.transform.SetParent(session.room.transform); session.ball.rigidBody.useGravity = false; session.ball.SetDirection(Vector3.up + new Vector3(Random.Range(-0.5f, 0.5f), 0, 0)); session.room.state = Room.State.Play; } { Packet.MsgSvrCli_Start_Ntf ntf = new Packet.MsgSvrCli_Start_Ntf(); ntf.objectId = session.ball.id; Room room = session.room; foreach (Session s in room.sessions) { if (s == session) { continue; } s.Send(ntf); } } session.room.SyncBall(session.ball); yield break; }
public void OnRecv_Start_Ntf(Packet.MsgSvrCli_Start_Ntf ntf) { StartCoroutine(PacketDelay((float)Network.NetworkDelay / 1000, () => { GameObject go; if (false == objects.TryGetValue(ntf.objectId, out go)) { return; } Ball ball = go.GetComponent <Ball>(); if (null == ball) { return; } ball.transform.SetParent(room.transform); ball.rigidBody.useGravity = false; })); }