using AX.MessageSystem; using UnityEngine; using AX.InputSystem; public class CloneCharacter : CloneBase { [SerializeField] [Tooltip("距离地面距离")] protected float Height = 0; public override void Execute(IMessage obj) { var gameObjID = (long)obj.Sender; var data = ((CloneCmdArgs)obj.Data); if (data.cloneObjType == cloneObjType) { var hitPoint = data.hitPos; Vector3 cloneObjPos = new Vector3(hitPoint.x, hitPoint.y + Height, hitPoint.z); var cloneObj = EntitiesManager.Instance.CreateObj(clonePrefab, cloneObjPos, transform, gameObjID); cloneObj.name = cloneObjType.ToString();//用这名字为的是,作为相机Taget。便于寻找 TheHeadName.GetInstance.CreateNameByRole(cloneObj.GetComponent().gameObjID,20,Vector3.up * 3); //设置克隆物体所在楼层等基本属性,属性从点击的对象上获取 var hitObj = EntitiesManager.Instance.GetEntityByID(data.gameObjID); CloneGameObjInfo hitObjInfo = hitObj.GetComponent(); CloneGameObjInfo cloneObjInfo = cloneObj.GetComponent(); cloneObjInfo.gameObjType = cloneObjType; cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id; cloneObjInfo.buildNum = hitObjInfo.buildNum; cloneObjInfo.floorNum = hitObjInfo.floorNum; cloneObjInfo.interlayerNum = hitObjInfo.interlayerNum; //CloneObjectInit(cloneObj); SelectedObjs.rolePlays.Add(cloneObj); SelectedObjs.selectedRolePlay = cloneObj; MessageDispatcher.SendMessage("CloneCharacterDisable"); //克隆角色后自动转换橙第三人称 MessageDispatcher.SendMessage("CHANGE_TO_THIRDPERSONVIEW"); } } public void CloneObjectInit(GameObject cloneObj) { SelectedObjs.rolePlays.Add(cloneObj); SelectedObjs.selectedRolePlay = cloneObj; GameObject.Find("Main Camera").GetComponent().ChangeTarget(cloneObj); GameObject.Find("Main Camera").GetComponent().viewType = CameraViewState.ThirdPersonView; GameObject.Find("Main Camera").GetComponent().ChangeCameraView(cloneObj.transform.position,16,10,20); MessageDispatcher.SendMessage("CloneCharacterDisable"); } }