public IEnumerator CoFire(int damage, Vector3 start, Vector3 end, TacticsUnitController targetUnit, bool isTargetDead, TacticsBattleSceneManager.CreateDamageTextDelegate CreateDamageFunction) { const float speed = 0.5f; float timePrev = 0f; float accTime = 0f; Vector3 startPos = transform.position; float distance = (end - start).magnitude; float needTime = distance / speed; Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_ATTACK_RANGED); yield return new WaitForSeconds(0.7f); var mage = this.transform.FindChild("Mage(Clone)").GetComponent<MageModel>(); var ball = (GameObject)GameObject.Instantiate(ResourceManager.Instance.Load(Define.Path.Effects.Fireball)); yield return Coroutine_.Action.LerpMove(ball, mage.RightFinger.transform.position, //start + new Vector3(0f, 0.5f, 0f), end + new Vector3(0f, 0.5f, 0f), needTime); CreateDamageFunction(damage, end); GameObject.Destroy(ball); Act.Util.EffectPlayOneShot(ResourceManager.Instance.Load(Define.Path.Effects.Explosion), end); if (isTargetDead) { targetUnit.Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_DEATH); } else { targetUnit.Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_TRIGER); } /* while (accTime < needTime) { this.transform.position = Vector3.Lerp(start, end, accTime / needTime); yield return null; if (timePrev != 0f) { accTime += Time.time - timePrev; animator.SetSpeed(1f); } timePrev = Time.time; } animator.SetSpeed(0f);*/ }
public IEnumerator CoMelee(int damage, TacticsUnitController targetUnit, bool isTargetDead, TacticsBattleSceneManager.CreateDamageTextDelegate CreateDamageFunction) { Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_ATTACK_MELEE); yield return new WaitForSeconds(0.9f); if (unitType == TacticsBG.Unit.Type.Mage) { Act.Util.EffectPlayOneShot(ResourceManager.Instance.Load(Define.Path.Effects.MeleeFire), targetUnit.transform.position); } CreateDamageFunction(damage, targetUnit.transform.position); if (isTargetDead) { targetUnit.Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_DEATH); } else { targetUnit.Animator.Triger(UnitAnimatorController.PARAM_DAMAGED_TRIGER); } }