//实例化挂载角色信息同步脚本的游戏物体,并未游戏物体添加信息同步脚本 public void CreateSyncRequest() { playerSyncRequest = new GameObject("PlayerSyncRequest"); moveRequest = playerSyncRequest.AddComponent <MoveRequest>(); moveRequest.SetLocalPlayer(currentRoleGameObject.transform, currentRoleGameObject.GetComponent <PlayerMove>()) .SetEnemyPlayer(enemyRoleGameObject.transform); shootRequest = playerSyncRequest.AddComponent <ShootRequest>(); shootRequest.playerMng = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); }
/// <summary> /// 创建同步请求对象,将用于同步操作的脚本都放置到该游戏物体上 /// </summary> public void CreateSyncRequest() { playerSyncRequest = new GameObject("PlayerSyncRequest"); //在场景中创建游戏物体 MoveRequest moveRequest = playerSyncRequest.AddComponent <MoveRequest>(); //添加移动同步请求对象 moveRequest.SetLocalPlayer(currentRoleGo.transform, currentRoleGo.GetComponent <PlayerMove>()); //告知移动同步对象,本地角色的位置信息 moveRequest.SetRemotePlayer(remoteRoleGo.transform); //设置敌对角色,用于接收到同步信息以后直接控制敌对角色移动 shootRequest = playerSyncRequest.AddComponent <ShootRequest>(); //添加同步箭矢射击的请求对象 shootRequest.playerManager = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); //添加造成伤害的请求对象 }
//创建同步请求 public void CreatSyncRequest() { //1、创建同步位置的请求 syncGo = new GameObject("PlayerSyncRequest"); MoveRequest moveRequest = syncGo.AddComponent <MoveRequest>(); //设置本地角色和远程角色 moveRequest.SetLocalPlayer(currentRoleGo.transform, currentRoleGo.GetComponent <PlayerMove>()); moveRequest.SetRemotePlayer(syncRoleGo.transform, syncRoleGo.GetComponent <Animator>()); //开始位置同步 moveRequest.StartSync(); //2、箭的位置同步 ShootRequest shootRequest = syncGo.AddComponent <ShootRequest>(); shootRequest.SetRemoteArrow(roleDateDict[syncRoleType].ArrowPrefab); playerAttack.SetShootRequest(shootRequest); //3、伤害同步 AttackRequest attackRequest = syncGo.AddComponent <AttackRequest>(); playerAttack.SetAttckRequest(attackRequest); }