// ボス1号挙動 public IEnumerator Behave100Enemy(GameObject originalShot) { var enemy = GetComponent <Enemy>(); transform.position = new Vector3(StgFrame.PX(0), StgFrame.topS + BodyRadius); SetDestAtTime(new Vector2(X, StgFrame.PY(0.6f)), 1f); yield return(WaitForStop()); MoveAngleLink = false; StartCoroutine(Behave101(originalShot)); while (true) { for (var lr = -1; lr <= 1; lr += 2) { SetDestAtTime(StgFrame.PX(Random.Range(0.4f, 0.7f) * lr), StgFrame.PY(Random.Range(0.4f, 0.7f)), 2.5f); if (enemy.GetHPP() < 0.5f) { yield return(Yielder.WaitForFixedSeconds(1f)); for (var lr2 = -1; lr2 <= 1; lr2 += 2) { CreateBehave007Actor(originalShot, transform, Angle2Player + 30f * lr2, originalShot); CreateBehave007Actor(originalShot, transform, Angle2Player + 42f * lr2, originalShot); } } yield return(WaitForStop()); CreateBehave007Actor(originalShot, transform, Angle2Player, originalShot); yield return(Yielder.WaitForFixedSeconds(0.5f)); } } }
//public IEnumerator Behave010(float lr,float fromY,float toX,float toY,float t,bool another = false) //{ // transform.position = new Vector3(StgFrame.centerX + (StgFrame.halfWidth + StgFrame.shakeRange + bodyR) * lr, fromY); // SetDestAtTime(toX, toY, t); // //move // while (speed != 0) // { // } //} public IEnumerator Behave200(GameObject originalShot) { var enemy = GetComponent <Enemy>(); transform.position = new Vector3(StgFrame.centerX, StgFrame.topS + BodyRadius); SetDestAtTime(X, StgFrame.PY(0.7f), 1); yield return(WaitForStop()); while (enemy.GetHPP() > 0.6f) { for (var lr = -1; lr <= 1; lr += 2) { for (var i = 0; i < 3; i++) { FireWay(originalShot, 15, 1, StgFrame.height / 2.5f, Angle2Player); yield return(Yielder.WaitForFixedSeconds(0.46f)); } yield return(Behave201(originalShot, lr, true)); yield return(Yielder.WaitForFixedSeconds(1)); FireRound(originalShot, 30, StgFrame.height / 3.2f, Mathfd.RandomAngle()); yield return(Yielder.WaitForFixedSeconds(0.8f)); yield return(Behave201(originalShot, lr)); yield return(Behave201(originalShot, -lr, true)); yield return(Yielder.WaitForFixedSeconds(1)); } } while (enemy.GetHPP() > 0f) { for (var lr = -1; lr <= 1 && enemy.GetHPP() > 0f; lr += 2) { for (var lr2 = -1; lr2 <= 1; lr2 += 2) { SetDestAtTime(StgFrame.PX(Random.Range(0.4f, 0.7f) * lr * lr2), StgFrame.PY(Random.Range(0.7f, 0.8f)), 2); for (var i = 0; i < 6; i++) { yield return(Yielder.WaitForFixedSeconds(0.2f)); FireRoundWay(originalShot, 3, 3, 3, StgFrame.height / 2.2f, Mathfd.RandomAngle()); } yield return(WaitForStop()); SetDestAtTime(X, StgFrame.PY(-0.8f), 0.7f); yield return(WaitForStop()); for (var i = 0; i < 2; i++) { CreateBehave007Actor(originalShot, transform, 90 + Mathfd.Shake(2), originalShot); yield return(Yielder.WaitForFixedSeconds(0.5f)); } } SetDestAtTime(StgFrame.centerX, StgFrame.centerY, 3); yield return(WaitForStop()); Angle = -90; { float speed = StgFrame.height * 0.8f; float interval = 1.4f; for (var i = 0; i < 20; i++) { for (var j = 0; j < 8; j++) { Fire(originalShot, Random.Range(speed, speed * 0.6f), Angle2Player + Mathfd.Shake(4)); } yield return(Yielder.WaitForFixedSeconds(interval)); speed = Mathf.Min(StgFrame.height * 1.4f, speed + StgFrame.height * 0.2f); interval = Mathf.Max(0.2f, interval - 0.3f); } } yield return(Yielder.WaitForFixedSeconds(1f)); } } }