IEnumerator BehaveB(float x, float arrivalY, float t, GameObject originalShot, float awayAcceleration, float awaySpeedLimit, float awayAngle) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); Acceleration = -2 * -(arrivalY - Y) / Mathf.Pow(t, 2); Speed = -Acceleration * t; SpeedLimit = 0; Angle = -90; MoveAngleLink = false; while (Speed != 0) { BodyAngle = Angle2Player; yield return(null); } //FireWay(originalShot, 3, 5, StgFrame.height / 2.5f, bodyAngle); Fire(originalShot, StgFrame.height / 2.8f, BodyAngle); yield return(Yielder.WaitForFixedSeconds(0.5f)); MoveAngleLink = true; Angle = awayAngle; Acceleration = StgFrame.height / 3; SpeedLimit = StgFrame.height / 2.5f; }
public IEnumerator Behave008(float x, float arrivalY, GameObject originalShot, float awayAngle = -90f, bool another = false) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); SetDestAtTime(x, arrivalY, 1); yield return(WaitForStop()); Angle = Angle2Player; FireWay(originalShot, 3, 5, StgFrame.height / 1.8f, Angle); yield return(Yielder.WaitForFixedSeconds(0.5f)); if (another) { yield return(Yielder.WaitForFixedSeconds(0.5f)); } Acceleration = StgFrame.height / 2f; SpeedLimit = StgFrame.height / 1f; Angle = awayAngle; if (another) { for (var i = 0; i < 3; i++) { yield return(Yielder.WaitForFixedSeconds(0.3f)); FireRoundWay(originalShot, 6, 2, 3f, StgFrame.height / 2.8f, Mathfd.RandomAngle()); } } }
IEnumerator BehaveA(float advance, GameObject originalShot, float awayAngle) { SetMovement(StgFrame.height / 1.2f, -90); { var _adv = 0f; while (_adv < advance) { yield return(null); _adv += Speed; } } Acceleration = -Speed / 0.5f; while (Speed != 0) { yield return(null); } FireWay(originalShot, 3, 5, StgFrame.height / 2.5f, -90); yield return(Yielder.WaitForFixedSeconds(0.5f)); Angle = awayAngle; Acceleration = StgFrame.height / 3; SpeedLimit = StgFrame.height / 2.5f; }
public IEnumerator Behave009(float x, float arrivalY, float sX, float t, GameObject originalShot) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); SetDestAtTime(this.X, arrivalY, t); { var curT = 0f; while (Speed != 0) { yield return(null); curT += TimeManager.DeltaTime; this.X = x + sX / 2 + sX / 2 * Mathfd.Cos(-180f + 180f * curT / t); } } for (var i = 0; i < 3; i++) { Fire(originalShot, StgFrame.height / 1.8f, -90f); yield return(Yielder.WaitForFixedSeconds(0.25f)); } Acceleration = StgFrame.height / 4; SpeedLimit = StgFrame.height / 1; }
public IEnumerator Behave101(GameObject originalShot) { while (true) { FireRoundR210(originalShot, 5, Random.Range(0, StgFrame.halfWidth / 3), Mathfd.RandomAngle(), StgFrame.halfWidth / 40, StgFrame.height / 2, Mathfd.RandomAngle(), -StgFrame.height / 1, StgFrame.height / 2.5f); yield return(Yielder.WaitForFixedSeconds(0.2f)); } }
/// <summary> /// ドバーッ /// </summary> /// <param name="originalEnemy"></param> /// <param name="x"></param> /// <param name="firstSpeed"></param> /// <param name="intervalSpeed"></param> /// <param name="angle"></param> /// <param name="fireTime"></param> /// <param name="originalShot"></param> /// <param name="n"></param> /// <param name="createIntervalTime"></param> /// <returns></returns> public static IEnumerator CreateFormation003(GameObject originalEnemy, float x, float firstSpeed, float intervalSpeed, float angle, float fireTime, GameObject originalShot, int n, float createIntervalTime) { for (var i = 0; i < n; i++) { CreateBehave003Enemy(originalEnemy, x, firstSpeed - intervalSpeed * i, angle, fireTime, originalShot); yield return(Yielder.WaitForFixedSeconds(createIntervalTime)); } }
/// <summary> /// 横に並ぶ奴 /// </summary> /// <param name="original"></param> /// <param name="n"></param> /// <param name="firstX"></param> /// <param name="intervalX"></param> /// <param name="arrivalY"></param> /// <param name="firstT"></param> /// <param name="intervalT"></param> /// <param name="originalShot"></param> /// <param name="awayAcceleration"></param> /// <param name="awaySpeedLimit"></param> /// <param name="awayAngle"></param> /// <returns></returns> public static IEnumerator CreateFormationB(GameObject original, int n, float firstX, float intervalX, float arrivalY, float firstT, float intervalT, GameObject originalShot, float awayAcceleration, float awaySpeedLimit, float awayAngle) { for (var i = 0; i < n; i++) { StgAct clone = StgAct.ApparentInstantiate(original); clone.StartCoroutine(clone.BehaveB(firstX + intervalX * i, arrivalY, firstT - intervalT * i, originalShot, awayAcceleration, awaySpeedLimit, awayAngle)); yield return(Yielder.WaitForFixedSeconds(intervalT)); } }
public IEnumerator Behave003(float x, float speed, float angle, float fireTime, GameObject originalShot) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); this.Speed = speed; this.Angle = angle; yield return(Yielder.WaitForFixedSeconds(fireTime)); FireRound(originalShot, 5, StgFrame.height / 1.8f, Angle2Player); }
public IEnumerator FireBehave002(GameObject original, int roundN, int lineN, float speed, float lineIntervalT, int roundCount) { for (var i = 0; i < roundCount; i++) { float angle = Mathfd.RandomAngle(); for (var j = 0; j < lineN; j++) { FireRound(original, roundN, speed, angle); yield return(Yielder.WaitForFixedSeconds(lineIntervalT)); } } }
public IEnumerator Behave007(Vector2 position, float angle, GameObject originalShot) { transform.position = position; Speed = StgFrame.height / 2f; this.Angle = angle; while (true) { yield return(Yielder.WaitForFixedSeconds(0.06f)); Fire(originalShot, StgFrame.height / 1.5f, angle + 180f + Mathfd.Shake(30f)); } }
public IEnumerator Behave001(float x, GameObject originalShot, float awayAngleSpeed) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); Speed = StgFrame.height / 2.7f; Angle = -90f; yield return(Yielder.WaitForFixedSeconds(1f)); FireRound(originalShot, 14, StgFrame.height / 2f, Mathfd.RandomAngle()); yield return(Yielder.WaitForFixedSeconds(0.4f)); AngleSpeed = awayAngleSpeed; }
public IEnumerator Behave004(float lr, float y, float arrivalX, float arrivalT, IEnumerator fire, float wait, float awayAcceleration, float awaySpeedLimit, bool lookAtPlayer = true) { Coroutine lap = null; { float s; if (lr < 0) { transform.position = new Vector3(StgFrame.leftS - BodyRadius, y); s = arrivalX - X; Angle = 0; } else { transform.position = new Vector3(StgFrame.rightS + BodyRadius, y); s = X - arrivalX; Angle = -180; } Acceleration = -2 * s / Mathf.Pow(arrivalT, 2); } Speed = -Acceleration * arrivalT; SpeedLimit = 0; while (Speed != 0) { yield return(null); } if (lookAtPlayer) { lap = StartCoroutine(LookAtPlayer()); } yield return(fire); yield return(Yielder.WaitForFixedSeconds(wait)); if (lookAtPlayer) { StopCoroutine(lap); } Angle = BodyAngle; MoveAngleLink = true; Acceleration = awayAcceleration; SpeedLimit = awaySpeedLimit; }
public IEnumerator Behave002(float x, GameObject originalShot) { transform.position = new Vector3(x, StgFrame.topS + BodyRadius); Speed = StgFrame.height / 2.2f; Angle = -90; yield return(Yielder.WaitForFixedSeconds(0.5f)); MoveAngleLink = false; StartCoroutine(BodyRoll(370f)); while (true) { yield return(Yielder.WaitForFixedSeconds(0.12f)); FireWay(originalShot, 3, 1.2f, StgFrame.height / 3, BodyAngle); } }
public IEnumerator Behave201(GameObject originalShot, float lr = 1, bool another = false) { float lAngle = Mathfd.RandomAngle(); var sAngle = 0f; var num = 4; var t = 1f; var interval = t / 40; if (another) { sAngle = 360 / num / 2; } for (var i = 0; i < 30; i++) { FireRoundR2102Player(originalShot, num, StgFrame.halfWidth * 0.45f, lAngle, StgFrame.halfWidth * 0.05f, StgFrame.height / 10, sAngle, StgFrame.height / 0.8f, StgFrame.height / 1.5f); yield return(Yielder.WaitForFixedSeconds(interval)); lAngle += 11 * lr; sAngle -= 360 / num / 3 * lr; } }
// ボス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)); } } }
public IEnumerator Fire2PlayerBehave(GameObject originalShot, float speed) { Fire(originalShot, speed, Angle2Player); yield return(Yielder.WaitForFixedSeconds(0f)); }