IEnumerator AttackWithTap() { if (attackTarget.Count == 0) yield return null; isNowAction = true; //カメラ切り替え BCameraChange.Instance.ActiveLeanMode(); BCameraMove.Instance.MoveToTapAttack(this, attackTarget[0].transform.position, changeTimeSingleMode); yield return new WaitForSeconds(changeTimeSingleMode); //攻撃アニメーション animator.SetSingleAttack(selectWazaNumber); popupPositionInScreen = Camera.main.WorldToScreenPoint(new Vector3(attackTarget[0].transform.position.x, attackTarget[0].transform.position.y + 1f, attackTarget[0].transform.position.z)); var attackList = selectAttackParameter.actionParameters; List<float> totalTapRatios = new List<float>(); foreach (var action in attackList) { nowSingleAction = action; //startInterval待ってからマーカー縮小 yield return new WaitForSeconds(action.judgeTime); //マーカー表示 nowAttackMaker = Instantiate(action.attackMakerPrefab, popupPositionInScreen, Quaternion.identity) as GameObject; nowAttackMaker.transform.SetParent(effectCanvas); //マーカー縮小始まり iTween.ScaleTo(nowAttackMaker, iTween.Hash("scale", new Vector3(0.1f, 0.1f, 1.0f), "time", action.judgeTime)); //タップ判定 startTime = Time.time; //タップできなかったら最大時間 //leftTimheは大きい程よい。leftTime=judgeTimeがパーフェクト leftTime = 0; IT_Gesture.onShortTapE += OnTapForAttack; yield return new WaitForSeconds(action.judgeTime); IT_Gesture.onShortTapE -= OnTapForAttack; isTapDetect = false; if (nowAttackMaker != null) { Destroy(nowAttackMaker); } totalTapRatios.Add(leftTime/action.judgeTime); } //攻撃 foreach (var target in attackTarget) { var damageMagnification = CalcDamageMagnification(CalcDamageFromTapMagnificationRation(totalTapRatios)); var characterPower = selectAttackParameter.element == ElementKind.なし ? character.characterParameter.power : character.characterParameter.elementPower; target.Life.Damage(characterPower, selectAttackParameter.element, damageMagnification); } foreach (var target in attackTarget) { target.Life.CheckDestroy(); } foreach (var tar in attackTarget.Where(x => x != null)) { tar.SetTargeted(false); } attackTarget = new List<BCharacterBase>(); isDone = true; Invoke("OnCompleteAnimation", resetInterval); //攻撃時にUI非表示 //ActionSelect.Instance.EndActiveAction(); yield return null; }
IEnumerator AttackWithTap() { if (attackTarget.Count == 0) { yield return(null); } isNowAction = true; //カメラ切り替え BCameraChange.Instance.ActiveLeanMode(); BCameraMove.Instance.MoveToTapAttack(this, attackTarget[0].transform.position, changeTimeSingleMode); yield return(new WaitForSeconds(changeTimeSingleMode)); //攻撃アニメーション animator.SetSingleAttack(selectWazaNumber); popupPositionInScreen = Camera.main.WorldToScreenPoint(new Vector3(attackTarget[0].transform.position.x, attackTarget[0].transform.position.y + 1f, attackTarget[0].transform.position.z)); var attackList = selectAttackParameter.actionParameters; List <float> totalTapRatios = new List <float>(); foreach (var action in attackList) { nowSingleAction = action; //startInterval待ってからマーカー縮小 yield return(new WaitForSeconds(action.judgeTime)); //マーカー表示 nowAttackMaker = Instantiate(action.attackMakerPrefab, popupPositionInScreen, Quaternion.identity) as GameObject; nowAttackMaker.transform.SetParent(effectCanvas); //マーカー縮小始まり iTween.ScaleTo(nowAttackMaker, iTween.Hash("scale", new Vector3(0.1f, 0.1f, 1.0f), "time", action.judgeTime)); //タップ判定 startTime = Time.time; //タップできなかったら最大時間 //leftTimheは大きい程よい。leftTime=judgeTimeがパーフェクト leftTime = 0; IT_Gesture.onShortTapE += OnTapForAttack; yield return(new WaitForSeconds(action.judgeTime)); IT_Gesture.onShortTapE -= OnTapForAttack; isTapDetect = false; if (nowAttackMaker != null) { Destroy(nowAttackMaker); } totalTapRatios.Add(leftTime / action.judgeTime); } //攻撃 foreach (var target in attackTarget) { var damageMagnification = CalcDamageMagnification(CalcDamageFromTapMagnificationRation(totalTapRatios)); var characterPower = selectAttackParameter.element == ElementKind.なし ? character.characterParameter.power : character.characterParameter.elementPower; target.Life.Damage(characterPower, selectAttackParameter.element, damageMagnification); } foreach (var target in attackTarget) { target.Life.CheckDestroy(); } foreach (var tar in attackTarget.Where(x => x != null)) { tar.SetTargeted(false); } attackTarget = new List <BCharacterBase>(); isDone = true; Invoke("OnCompleteAnimation", resetInterval); //攻撃時にUI非表示 //ActionSelect.Instance.EndActiveAction(); yield return(null); }