/// <summary> ///显示粒子效果的时候出现在特定位置 /// </summary> /// <returns>The particle.</returns> IEnumerator ShowParticle() { var skillConfig = Event.layout.GetComponent <SkillLayoutConfig>(); var particle = Event.layout.GetComponent <SkillLayoutConfig>().particle; //NGUITools.AddMissingComponent<RemoveSelf> (particle); Log.Sys("Init Particle for skill Layout " + particle + " " + skillConfig + " bone name " + skillConfig.boneName); if (particle != null) { if (skillConfig.delayTime > 0) { yield return(new WaitForSeconds(skillConfig.delayTime)); } //var g = GameObject.Instantiate(particle) as GameObject; var g = ParticlePool.Instance.GetGameObject(particle, ParticlePool.InitParticle); /* * var xft = g.GetComponent<XffectComponent>(); * if (xft != null) * { * xft.enabled = false; * } */ var dm = NGUITools.AddMissingComponent <DumpMono>(g); dm.StartCoroutine(ParticlePool.CollectParticle(g, 2)); if (skillConfig.boneName != "") { Log.Sys("add particle to bone " + skillConfig.boneName); //g.transform.parent = transform; var par = Util.FindChildRecursive(stateMachine.attacker.transform, skillConfig.boneName); if (par == null) { par = stateMachine.attacker.transform; } //g.transform.parent = g.transform.localPosition = skillConfig.Position + par.transform.position; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; } else { Log.Ani("Particle TargetPos " + Event.TargetPos); if (Event.TargetPos) { if (stateMachine.target != null) { stateMachine.MarkPos = stateMachine.target.transform.position; g.transform.position = stateMachine.target.transform.position + skillConfig.Position; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; } } else if (Event.AttachToTarget) { if (stateMachine.target != null) { g.transform.parent = stateMachine.target.transform; g.transform.localPosition = skillConfig.Position; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; } } else if (Event.UseMarkPos) { g.transform.position = stateMachine.MarkPos + skillConfig.Position; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; } else { g.transform.parent = transform; g.transform.localPosition = skillConfig.Position; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; } } //火焰哨兵的激光直接给目标造成伤害 if (Event.SetBeamTarget) { Log.AI("SetBeamTarget is " + stateMachine.target.transform.position); var bt = Util.FindChildrecursive <BeamTarget>(g.transform); if (bt != null) { bt.transform.position = stateMachine.target.transform.position + Event.BeamOffset; } BeamTargetPos = stateMachine.target.transform.position + Event.BeamOffset; } /* * if (xft != null) * { * StartCoroutine(EnableXft(xft)); * } */ } }