/// <summary> /// BUFF开始起效果; /// </summary> public void StartPlay() { this.CurState = PlayConst.BUFF_STATE.RUNNING; _startPlayTime = ServerTime.Instance.Timestamp; //播放特效; GameObject findHostObject = PlayUtils.GetPartBonesByHostAndTag(this.HostId, this.PosTag); if (findHostObject == null) { findHostObject = AppMap.Instance.GetPlayer(this.HostId.ToString()).Controller.gameObject; } if (findHostObject == null) { return; } //创建特效播放; Effect effectVo = new Effect(); effectVo.URL = UrlUtils.GetBuffEffectUrl(this.BuffVo.effect.ToString()); effectVo.Direction = HostDisplay.CurFaceDire; effectVo.BasePosition = findHostObject.transform.position; effectVo.Offset = Vector3.zero; effectVo.NeedCache = true; effectVo.Target = findHostObject.gameObject; EffectMgr.Instance.CreateBuffEffect(effectVo); }
/// <summary> /// 添加抓取投掷; /// </summary> /// <param name="grapDisplay">被抓取者</param> /// <param name="hostController">抓取者</param> /// <param name="setTag">PlayConstant中的部位字符串</param> /// <param name="autoIfNoTag">如果setTag的部位为null,那么使用display的位置</param> public void AddGrapDispaly(BaseDisplay grapDisplay, BaseControler hostController, string setTag, bool autoIfNoTag = true, bool autoThrow = true, Action throwComplete = null) { if (grapDisplay != null) { GameObject partGo = PlayUtils.GetPartBonesByHostAndTag(hostController.Me.GetVo().Id.ToString(), setTag); Vector3 tmpPos; //判断部件位置; if (partGo != null) { tmpPos = partGo.transform.position; } else { tmpPos = hostController.Me.Controller.transform.position; } PlayUtils.MakeAFaceToB(hostController.Me, grapDisplay); grapDisplay.Pos(tmpPos); if (autoThrow) { StartCoroutine(ThrowDisplay(grapDisplay, hostController, Directions.GetOpposite(hostController.Me.CurFaceDire), throwComplete)); } } }
/// <summary> /// 通过tag获取对应部件; /// </summary> /// <param name="_boneTag"></param> /// <returns></returns> public GameObject GetPartBonesByTag(string _boneTag) { GameObject rtnGo = PlayUtils.GetPartBonesByHostAndTag(this.GetVo().Id.ToString(), _boneTag); return(rtnGo); }