Пример #1
0
    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;
            }
        }
    }
Пример #2
0
    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());
    }