/// <summary> /// 导弹 /// </summary> /// <param name="delayTime"></param> /// <returns></returns> private IEnumerator ShowMissile(bool bLeft, float delayTime) { Vector3 secondPos = AttackTrans_.position + (AttackTrans_.forward * 10); Vector3 thirdPos = TargetTrans_.position + (TargetTrans_.forward * 20); Vector3 lastPos = TargetTrans_.position; // 为了让导弹显示的差异化,各种随机坐标 bool bIsPlayer = AttackTrans_.position.z < TargetTrans_.position.z; // 敌人 if (!bIsPlayer) { if (AttackTrans_.position.x > TargetTrans_.position.x) { secondPos += (AttackTrans_.right * Random.Range(0, 10)); thirdPos += (TargetTrans_.right * Random.Range(5, 8)); lastPos += (TargetTrans_.right * Random.Range(0, 3)); } else { secondPos += (-AttackTrans_.right * Random.Range(0, 10)); thirdPos += (-TargetTrans_.right * Random.Range(5, 8)); lastPos += (-TargetTrans_.right * Random.Range(0, 3)); } } // 玩家 else { if (AttackTrans_.position.x > TargetTrans_.position.x) { secondPos += (-AttackTrans_.right * Random.Range(0, 10)); thirdPos += (-TargetTrans_.right * Random.Range(5, 8)); lastPos += (-TargetTrans_.right * Random.Range(0, 3)); } else { secondPos += (AttackTrans_.right * Random.Range(0, 10)); thirdPos += (TargetTrans_.right * Random.Range(5, 8)); lastPos += (TargetTrans_.right * Random.Range(0, 3)); } } // 如果敌人有护盾,显示护盾,修正最终目标位置 if (TargetShip_.IsKineticEnergyDmg()) { lastPos = TargetShip_.GetNewHurtPoint(AttackTrans_.position, lastPos); thirdPos += TargetTrans_.forward * TargetShip_.GetShieldRadius() * 5; } // 随机时间,产生表现差异化 delayTime += Random.Range(-0.5f, 0.5f); Vector3[] v3 = new Vector3[] { AttackTrans_.position, thirdPos, secondPos, lastPos }; LeanTween.move(gameObject, v3, delayTime).setEase(LeanTweenType.linear).setOrientToPath(true); yield return(new WaitForSeconds(delayTime)); if (TargetShip_ != null) { if (TargetShip_.IsKineticEnergyDmg()) { TargetShip_.ShowKineticArmor(); } } Global.ShowHurtEffect(TargetTrans_, HurtEffect_, lastPos); StartCoroutine(WaitAndDestroy(false)); }