예제 #1
0
    private void PlaceGhost()
    {
        akabei = Instantiate(akabeiPrefab, maze.transform);
        akabei.Initialize(maze, pacman);

        pinky = Instantiate(pinkyPrefab, maze.transform);
        pinky.Initialize(maze, pacman);

        aosuke = Instantiate(aosukePrefab, maze.transform);
        aosuke.Initialize(maze, pacman, akabei);

        guzuta = Instantiate(guzutaPrefab, maze.transform);
        guzuta.Initialize(maze, pacman);

        ghosts = new List <AGhost>
        {
            akabei, pinky, aosuke, guzuta
        };

        ghosts.ForEach(g =>
        {
            //ゴーストが食べられたときの処理。
            g.OnEaten += (s, e) =>
            {
                //パックマン、ゴーストを一時停止。
                PauseAll(eatSpan);

                //食べたゴーストの数により、点数が変化する。
                var scr = g.Score * (1 << eatenGhost);
                //得点の更新。
                score         += scr;
                scoreText.text = score.ToString();
                //得点を表示。
                scorer.Set(scr, g.transform.position, eatSpan);

                eatenGhost++;

                soundManager.PlaySE("EatGhost", 0.6f);
            };

            //ゴーストが食べたときの処理。
            g.OnEat += (s, e) =>
            {
                pacman.Dead();
                //ゴーストを停止。
                ghosts.ForEach(g2 => g2.Stop());
                isScare = false;
                lives--;

                if (fruits != null)
                {
                    fruits.Destroy();
                }

                soundManager.PlaySE("Dead", 0.6f);
                soundManager.StopBGM();
            };
        });
    }