protected virtual void OnEnable() { targetEnemy = (UDEEnemy)target; shotPatterns = serializedObject.FindProperty("shotPatterns"); scoreOnDeath = serializedObject.FindProperty("scoreOnDeath"); canBeDamaged = serializedObject.FindProperty("canBeDamaged"); }
internal void Initialize(UDEEnemy originEnemy, UDEAbstractBullet[] bulletPrefabs, Func <LambdaShotPattern, List <UDEAbstractBullet>, UDEEnemy, IEnumerator> pattern, RemoveBulletsOnDeath removeBulletsOnDeath) { this.patternFunc = pattern; patternBullets = new List <UDEAbstractBullet>(); patternBullets.AddRange(bulletPrefabs); this.removeBullets = removeBulletsOnDeath; base.Initialize(originEnemy); }
protected override IEnumerator StagePattern() { while (true) { UDEEnemy boss = SummonEnemy(enemies[(int)Enemy.TEST_ENEMY]); boss.transform.SetPositionAndRotation(Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 1.2f, 0)), Quaternion.Euler(0, 0, 0)); boss.transform.Translate(new Vector3(0, 0, 10)); boss.Initialize(); // UDETransitionHelper.MoveOnCurve(boss.gameObject, UDECurve.GetCurveByName("First"), 4, UDETransitionHelper.EaseTypeOf(easeType), UDETime.TimeScale.ENEMY, true); /* * yield return StartCoroutine(UDETime.Instance.WaitForScaledSeconds(1f, UDETime.TimeScale.ENEMY)); * UDETransitionHelper.MoveOnCurve(boss.gameObject, UDECurve.GetCurveByName("First"), 5, UDETransitionHelper.EaseTypeOf(easeType), UDETime.TimeScale.ENEMY, true); * yield return StartCoroutine(UDETime.Instance.WaitForScaledSeconds(7f, UDETime.TimeScale.ENEMY)); * UDETransitionHelper.MoveOnCurve(boss.gameObject, UDECurve.GetCurveByName("First"), 2, UDETransitionHelper.EaseTypeOf(easeType), UDETime.TimeScale.ENEMY, true); */ yield return(new WaitUntil(() => !boss.Alive)); } }
public void AddEnemy(UDEEnemy enemy) { enemies.Add(enemy); }
public void RemoveEnemy(UDEEnemy enemy) { enemies.Remove(enemy); }
private IEnumerator Wave2FairyPattern(LambdaShotPattern pattern, List <UDEAbstractBullet> bullets, UDEEnemy enemy) { UDETransitionHelper.MoveAmount(enemy.gameObject, new Vector2(-3, 0), 1f, UDETransitionHelper.easeOutQuad, UDETime.TimeScale.ENEMY, true); yield return(StartCoroutine(UDETime.Instance.WaitForScaledSeconds(0.3f, UDETime.TimeScale.ENEMY))); Transform enemyTr = enemy.transform; float angle = 25; var easeInOut = UDETransitionHelper.easeInOutQuad.Composite(t => t / 4); float dt = 0.4f; UDECartesianPolarMovementBuilder builder = UDECartesianPolarMovementBuilder.Create().Speed(4.5f).Angle(180); UDEBulletMovement central = builder.Build(); float accTime = 0; for (int i = 0; i < (int)(8 / dt); i++) { if (accTime <= 4) { angle = 25 - 50 * easeInOut(accTime); } else { angle = -25 + 50 * easeInOut(accTime - 4); } UDEBulletMovement upper = builder.Angle(180 - angle).Build(); UDEBulletMovement lower = builder.Angle(180 + angle).Build(); UDEAbstractBullet bullet = UDEBulletPool.Instance.GetBullet(bullets[0]); // Upper bullet.SummonTime = 0.05f; bullet.transform.localScale = new Vector3(0.85f, 0.85f); bullet.Initialize(enemyTr.position, enemyTr.position, 0, enemy, pattern, upper); bullet = UDEBulletPool.Instance.GetBullet(bullets[1]); // Lower bullet.SummonTime = 0.05f; bullet.transform.localScale = new Vector3(0.85f, 0.85f); bullet.Initialize(enemyTr.position, enemyTr.position, 0, enemy, pattern, lower); float accTimeD = accTime + 1f; if (accTimeD >= 8) { accTimeD -= 8; } if (accTimeD <= 4) { angle = 25 - 50 * easeInOut(accTimeD); } else { angle = -25 + 50 * easeInOut(accTimeD - 4); } upper.angle = 180 - angle * 2f; bullet = UDEBulletPool.Instance.GetBullet(bullets[2]); bullet.SummonTime = 0.05f; bullet.transform.localScale = new Vector3(0.85f, 0.85f); bullet.Initialize(enemyTr.position, enemyTr.position, 0, enemy, pattern, upper); lower.angle = 180 + angle * 2f; bullet = UDEBulletPool.Instance.GetBullet(bullets[2]); bullet.SummonTime = 0.05f; bullet.transform.localScale = new Vector3(0.85f, 0.85f); bullet.Initialize(enemyTr.position, enemyTr.position, 0, enemy, pattern, lower); accTime += dt; yield return(StartCoroutine(UDETime.Instance.WaitForScaledSeconds(dt, UDETime.TimeScale.ENEMY))); } Vector2 movePoint = Camera.main.ViewportToWorldPoint(new Vector3(-0.1f, 0)); movePoint.y = enemyTr.position.y; var trResult = UDETransitionHelper.MoveTo(enemy.gameObject, movePoint, 6f, UDETransitionHelper.easeInQuad, UDETime.TimeScale.ENEMY, true); yield return(new WaitUntil(() => trResult.EndTransition)); ((EnemyBase)enemy).OnDestroy(); Destroy(enemy); yield return(null); }
private IEnumerator Wave1FairyPattern(LambdaShotPattern pattern, List <UDEAbstractBullet> bullets, UDEEnemy enemy) { var trResult = UDETransitionHelper.MoveAmount(enemy.gameObject, new Vector2(-3, 0), 0.3f, UDETransitionHelper.easeOutQuad, UDETime.TimeScale.ENEMY, true); yield return(new WaitUntil(() => trResult.EndTransition)); Transform enemyTr = enemy.transform; Transform player = GameManager.player.transform; Vector2 direction = player.position - enemyTr.position; direction /= direction.magnitude; (_, float angle) = UDEMath.Cartesian2Polar(direction); UDECartesianPolarMovementBuilder builder = UDECartesianPolarMovementBuilder.Create().Speed(9.0f).MinSpeed(3.0f).TangentialAccel(-17.0f); int bulletCnt = 25; float delta = 360f / bulletCnt; for (int i = 0; i < bulletCnt; i++) { float moveAngle = angle + delta * i; (float x, float y) = UDEMath.Polar2Cartesian(0.4f, moveAngle); UDEAbstractBullet bullet = UDEBulletPool.Instance.GetBullet(bullets[0]); bullet.SummonTime = 0.12f; bullet.Initialize(enemyTr.position + new Vector3(x, y), enemyTr.position, 0, enemy, pattern, builder.Angle(moveAngle).Build()); } builder.Angle(angle); for (int i = 1; i < 6; i++) { (float x, float y) = UDEMath.Polar2Cartesian(0.4f, angle); UDEAbstractBullet bullet = UDEBulletPool.Instance.GetBullet(bullets[0]); bullet.SummonTime = 0.12f; bullet.Initialize(enemyTr.position + new Vector3(x, y), enemyTr.position, 0, enemy, pattern, builder.MinSpeed(3.0f + 0.6f * i).Build()); } yield return(StartCoroutine(UDETime.Instance.WaitForScaledSeconds(0.5f, UDETime.TimeScale.ENEMY))); Vector2 movePoint = Camera.main.ViewportToWorldPoint(new Vector3(-0.1f, 0)); movePoint.y = enemyTr.position.y; trResult = UDETransitionHelper.MoveTo(enemy.gameObject, movePoint, 10f, UDETransitionHelper.easeInCubic, UDETime.TimeScale.ENEMY, true); yield return(new WaitUntil(() => trResult.EndTransition)); ((EnemyBase)enemy).OnDestroy(); Destroy(enemy); yield return(null); }
private IEnumerator IntroWhiteSpiritPattern(LambdaShotPattern pattern, List <UDEAbstractBullet> bullets, UDEEnemy enemy) { var trResult = UDETransitionHelper.MoveAmount(enemy.gameObject, new Vector2(-7, 0.6f), 6, UDETransitionHelper.easeOutQuad, UDETime.TimeScale.ENEMY, true); yield return(StartCoroutine(UDETime.Instance.WaitForScaledSeconds(0.5f, UDETime.TimeScale.ENEMY))); for (int i = 0; i < 5; i++) { UDEAbstractBullet bullet = UDEBulletPool.Instance.GetBullet(bullets[0]); bullet.SummonTime = 0.08f; bullet.MoveBulletToDirection(enemy, pattern, enemy.transform.position, 0, new Vector2(-5, 0), true); yield return(StartCoroutine(UDETime.Instance.WaitForScaledSeconds(0.8f, UDETime.TimeScale.ENEMY))); } yield return(new WaitUntil(() => trResult.EndTransition)); trResult = UDETransitionHelper.MoveAmount(enemy.gameObject, new Vector2(-6, 15), 6, UDETransitionHelper.easeInQuad, UDETime.TimeScale.ENEMY, true); yield return(new WaitUntil(() => trResult.EndTransition)); ((EnemyBase)enemy).OnDestroy(); Destroy(enemy); yield return(null); }
public override void Initialize(UDEEnemy originEnemy) { base.Initialize(originEnemy); enemyTr = originEnemy.transform; }