//WSAD移动 public void RequireMove(NFGUID objectID, int nType, UnityEngine.Vector3 vPos, UnityEngine.Vector3 vTar) { NFMsg.ReqAckPlayerMove xData = new NFMsg.ReqAckPlayerMove(); xData.mover = mHelpModule.NFToPB(objectID); xData.moveType = nType; xData.moveType = 0; xData.speed = 4f; xData.time = 0; NFMsg.Vector3 xNowPos = new NFMsg.Vector3(); xNowPos.x = vPos.x; xNowPos.y = vPos.y; xNowPos.z = vPos.z; xData.source_pos.Add(xNowPos); NFMsg.Vector3 xTargetPos = new NFMsg.Vector3(); xTargetPos.x = vTar.x; xTargetPos.y = vTar.y; xTargetPos.z = vTar.z; xData.target_pos.Add(xTargetPos); mxBody.SetLength(0); xData.WriteTo(mxBody); SendMsg(NFMsg.EGameMsgID.EGMI_REQ_MOVE, mxBody); //为了表现,客户端先走,后续同步 }
public void OnPlayerMove(UInt16 id, MemoryStream stream) { NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.ReqAckPlayerMove xData = NFMsg.ReqAckPlayerMove.Parser.ParseFrom(xMsg.msg_data); if (xData.target_pos.Count <= 0) { return; } NFGUID tar = mHelpModule.PBToNF(xData.mover); if (tar == mLoginModule.mRoleID) { return; } GameObject player = GetObject(tar); OtherPlayer otherPlayer = player.GetComponent <OtherPlayer>(); float fSpeed = xData.speed; long nType = xData.moveType; NFVector3 pos = mHelpModule.PBToNF(xData.target_pos[0]); Vector3 vPos = new Vector3(pos.X(), pos.Y(), pos.Z()); if (nType > 0) { otherPlayer.JumpTo(vPos); } else { otherPlayer.MoveTo((float)fSpeed, vPos); } Debug.Log("Player Move:" + vPos.ToString()); }