public void initdata(BeatonData datas) { eBeatonbackFly = datas.eBeatonbackFly; animatorBeatonClip = datas.animatorBeatonClip; timeInput.value = datas.beatonTime.ToString(); if (!string.IsNullOrEmpty(datas.beatonEffUrl)) { string asseturl = UrlManager.GetEffectUrl(datas.beatonEffUrl, EEffectType.Beaton); beatonEff = UnityEditor.AssetDatabase.LoadAssetAtPath(asseturl, typeof(GameObject)) as GameObject; } else beatonEff = null; actionNameTxt.text = "受击动作:" + DefaultSkillParam.ActionName[animatorBeatonClip]; beatonBacktxt.text = "击退击飞:" + DefaultSkillParam.beatonBackFly[(int)eBeatonbackFly]; if (beatonEff != null) beatonEfftxt.text = "被击特效:" + beatonEff.name; else beatonEfftxt.text = "被击特效:无"; }
public BeatonData getData() { BeatonData data = new BeatonData(); data.beatonTime = float.Parse(timeInput.value); data.animatorBeatonClip = animatorBeatonClip; if (beatonEff != null) data.beatonEffUrl = beatonEff.name; else data.beatonEffUrl = ""; data.eBeatonbackFly = eBeatonbackFly; return data; }
//被击退或击飞 IEnumerator beatonToBackOrFly(BeatonData beatondata) { yield return new WaitForSeconds(beatondata.beatonTime); if (!string.IsNullOrEmpty(beatondata.beatonEffUrl)) { GameObject beatonEff = new GameObject(beatondata.beatonEffUrl); EffectAsset effectasset = beatonEff.AddComponent<EffectAsset>(); effectasset.setEffectParam(beatondata.beatonEffUrl, rolePosition + Vector3.up, Quaternion.identity, EEffectType.Beaton); } if (beatondata.eBeatonbackFly == EBeatonToBackFly.None) { if (animatorControl.currentState == eAnimatorState.await || animatorControl.currentState == eAnimatorState.beaten || animatorControl.currentState == eAnimatorState.fall) animatorControl.changeToState(beatondata.animatorBeatonClip); yield return null; } if (beatondata.eBeatonbackFly == EBeatonToBackFly.Back) { Vector3 backpos = rolePosition - roleModel.transform.forward * DefaultSkillParam.BeatonBackMaxDist; if (agent != null && agent.enabled) //被击飞的时候 不能同时被击退,怕掉到 建筑物 上面 { //agent.enabled = true; NavMeshPath path = new NavMeshPath(); agent.CalculatePath(backpos, path); if (path.corners.Length == 2) { agent.enabled = false; iTween.MoveTo(roleModel, iTween.Hash("position", backpos, "easeType", "easeOutQuart", "delay",0, "time", 0.3f, "oncomplete", "resetAgent")); yield return new WaitForSeconds(0.3f); agent.enabled = true; if (animatorControl.currentState == eAnimatorState.await || animatorControl.currentState == eAnimatorState.beaten ||animatorControl.currentState == eAnimatorState.fall) animatorControl.changeToState(beatondata.animatorBeatonClip); } else { if (animatorControl.currentState == eAnimatorState.await || animatorControl.currentState == eAnimatorState.beaten || animatorControl.currentState == eAnimatorState.fall) animatorControl.changeToState(beatondata.animatorBeatonClip); } } else { if (animatorControl.currentState == eAnimatorState.await || animatorControl.currentState == eAnimatorState.beaten || animatorControl.currentState == eAnimatorState.fall) animatorControl.changeToState(beatondata.animatorBeatonClip); } } else if (beatondata.eBeatonbackFly == EBeatonToBackFly.Fly && agent.enabled) { agent.enabled = false; if (animatorControl.currentState == eAnimatorState.await || animatorControl.currentState == eAnimatorState.beaten ||animatorControl.currentState == eAnimatorState.fall) animatorControl.changeToState(beatondata.animatorBeatonClip); Vector3 originpos = rolePosition; Vector3 topos = rolePosition + Vector3.up * DefaultSkillParam.BeatonUpMaxDist; iTween.MoveTo(roleModel, iTween.Hash("position", topos, "easeType", "easeOutCirc", "delay", 0, "time", 0.3f)); yield return new WaitForSeconds(0.33f); iTween.MoveTo(roleModel, iTween.Hash("position", originpos, "easeType", "easeInCubic", "delay", 0, "time", 0.3f)); yield return new WaitForSeconds(0.35f); agent.enabled = true; } }
public void parseBeatonStr(string xmlstr) { if (beatonDatas != null) beatonDatas.Clear(); string[] beatonliststr = xmlstr.Split('|'); BeatonData beatdata; string[] tempstr; for (int i = 0; i < beatonliststr.Length; i++) { tempstr = beatonliststr[i].Split(','); if(tempstr.Length == 4) { beatdata = new BeatonData(); beatdata.animatorBeatonClip = (eAnimatorState)(int.Parse(tempstr[0])); beatdata.beatonEffUrl = tempstr[1]; beatdata.beatonTime = float.Parse(tempstr[2]); beatdata.eBeatonbackFly = (EBeatonToBackFly)(int.Parse(tempstr[3])); beatonDatas.Add(beatdata); } } }