private void OnTriggerEnter2D(Collider2D collision) { if (stageDirector.stageState == StageDirector.STAGESTATE.INSTAGE) { switch (collision.tag) { case "GoodItem": // ポイントを増加 itemDirector.CountUpPoint(); itemDirector.SwitchState(); // SEならす seDirector.PlaySE(SEDirector.SE.GOODITEM); // プレイヤーの見た目状態を更新 StrengthenPlayerVisual(); Destroy(collision.gameObject); break; case "BadItem": // ポイント現象 itemDirector.CountDownPoint(); itemDirector.SwitchState(); // SEならす seDirector.PlaySE(SEDirector.SE.BADITEM); // プレイヤーの見た目を更新 WeakenPlayerVisiual(); Destroy(collision.gameObject); break; case "Switch": StartCoroutine(ReachStage1Switch(collision.gameObject)); break; case "Goal": StartCoroutine(ReachStage2Switch(collision.gameObject)); break; default: Debug.Log("unknown collider"); break; } } }
IEnumerator Attack() { // TODO 攻撃モーション yield return(new WaitForSeconds(0.5f)); enemyAnimator.SetTrigger("Attack"); seDirector.PlaySE(SEDirector.SE.DAMAGE); // プレイヤー消滅 yield return(new WaitForSeconds(0.5f)); StartCoroutine(playerController.Die()); // 消滅まで待機 yield return(new WaitUntil(() => !player)); // ゲームオーバー StartCoroutine(stageDirector.GameOver()); }