using AX.InputSystem; using AX.MessageSystem; using AX.NetworkSystem; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class CloneFireRobot : CloneBase { [SerializeField] [Tooltip("距离地面距离")] protected float Height = 0; private MoveWaterCannonTool movetool; private NavMeshHit nhit; private NavMeshQueryFilter filter; public override void Execute(IMessage obj) { var gameObjID = (long)obj.Sender; var data = ((CloneCmdArgs)obj.Data); if (data.cloneObjType == cloneObjType) { if (SkillTollPanel.Instance) { if (SkillTollPanel.Instance.GetComponent()) { movetool = SkillTollPanel.Instance.GetComponent(); } } if (int.Parse(movetool.fireRobotnumText.text) <= 0) { LoadPromptWin.Instance.LoadTextPromptWindow("灭火机器人数量不足", 1f); return; } var hitPoint = data.hitPos; NavMeshHit hit; if (NavMesh.SamplePosition(hitPoint, out hit, 0.2f, NavMesh.AllAreas)) { } else { LoadPromptWin.Instance.LoadTextPromptWindow("不能在此处克隆", 1f); return; } Vector3 clonedObjPos = new Vector3(hitPoint.x, hitPoint.y + Height, hitPoint.z); var clonedObj = EntitiesManager.Instance.CreateObj(clonePrefab, clonedObjPos, transform, gameObjID); clonedObj.name = CloneObjNameTool.Instance().GetCloneObjectName(cloneObjType); SelectedObjs.gameObjs.Add(clonedObj); //设置克隆物体所在楼层等基本属性,属性从点击的对象上获取 var hitObj = EntitiesManager.Instance.GetEntityByID(data.gameObjID); CloneGameObjInfo hitObjInfo = hitObj.GetComponent(); CloneGameObjInfo cloneObjInfo = clonedObj.GetComponent(); cloneObjInfo.gameObjType = cloneObjType; cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id; cloneObjInfo.buildNum = hitObjInfo.buildNum; cloneObjInfo.floorNum = hitObjInfo.floorNum; cloneObjInfo.interlayerNum = hitObjInfo.interlayerNum; if (data.cloneObjType == CloneObjType.FirefightingRobot) { MessageDispatcher.SendMessage("CreatExpendToolNum", cloneObjType); } //克隆同步 CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = clonedObjPos; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; clonesync.name = clonedObj.name; clonesync.floorNum = hitObjInfo.floorNum; clonesync.buildNum = hitObjInfo.buildNum; clonesync.interlayerNum = hitObjInfo.interlayerNum; clonesync.gameObjID = clonedObj.GetComponent().gameObjID; clonesync.gameObjType = clonedObj.GetComponent().gameObjType; clonesync.UserID = clonedObj.GetComponent().UserID; clonesync.HitObjID = hitObjInfo.gameObjID; NetworkManager.Default.SendAsync("CLONE_FIREROBOT_SYNC", clonesync); } } }