Ejemplo n.º 1
0
    public override void Enter(Player obj)
    {
        base.Enter(obj);

        obj.GetComponent <Animator>().speed = 0;//アニメーションをストップ
        obj.gameObject.layer = LayerMask.NameToLayer("IgnoreCollision");

        obj.StopMove();
        obj.DeadJump();

        Action action = () =>
        {
            var         canvasTrans = GameObject.Find("Canvas").gameObject.GetComponent <Transform>();
            FailedPanel panel       = Instantiate(Resources.Load("Prefabs/FailedPanel"), canvasTrans) as FailedPanel;
        };

        obj.StartCoroutine(GameManager.Instance.WaitAndAction(1.5f, action));

        //ステージ情報のセーブ
        //進行状況が前の結果よりよかったらセーブする
        GameManager manager       = GameManager.Instance;
        int         nowProgress   = obj.SceneManager.Progress;
        Scene       thisScene     = SceneManager.GetActiveScene();
        StageInfo   thisStageInfo = manager.StageInfo [thisScene.name];

        if (thisStageInfo.progress < nowProgress)
        {
            thisStageInfo.progress = nowProgress;
            manager.ChangeStageInfo(thisScene.name, thisStageInfo);
        }

        SoundManager sound = SoundManager.Instance;

        sound.StopBGM();
        sound.PlayJingle("GameOver");
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 0.2秒执行一回合
    /// </summary>
    /// <returns></returns>
    IEnumerator Turn()
    {
        var AnotherGameObj = GameObject.Find("Player1").GetComponent <TileHero>();
        var TargetGameObj  = GameObject.Find("Player0").GetComponent <TileHero>();

        AnotherGameObj.ChangeCode("require 'script'");

        while (turnnum < MaxTurn)
        {
            TextTurn.text = turnnum.ToString();

            turnnum++;
            TargetGameObj.OnTurn();
            TextBlue.text = GetScore(TileCtrl.EPlayer.Player0).ToString();
            yield return(new WaitForSeconds(0.2f));

            AnotherGameObj.OnTurn();
            TextRed.text = GetScore(TileCtrl.EPlayer.Player1).ToString();
            yield return(new WaitForSeconds(0.2f));

            foreach (var tl in Map)
            {
                if (tl.Value.Player != TileCtrl.EPlayer.No)
                {
                    continue;
                }
                int countA = 0;
                int countB = 0;
                for (int i = 0; i < 4; i++)
                {
                    TileCtrl t;
                    if (Map.TryGetValue(tl.Value.pos + dir[i], out t))
                    {
                        if (t.Player == TileCtrl.EPlayer.Player0)
                        {
                            countA++;
                        }
                        if (t.Player == TileCtrl.EPlayer.Player1)
                        {
                            countB++;
                        }
                    }
                }

                if (countA == 4)
                {
                    tl.Value.Player        = TileCtrl.EPlayer.Player0;
                    tl.Value.BuildingLevel = 3;
                    tl.Value.Type          = TileCtrl.EType.Building;
                }
                else if (countB == 4)
                {
                    tl.Value.Player        = TileCtrl.EPlayer.Player1;
                    tl.Value.BuildingLevel = 3;
                    tl.Value.Type          = TileCtrl.EType.Building;
                }
            }
        }

        if (GetScore(TargetGameObj.Player) > GetScore(AnotherGameObj.Player))
        {
            WinPanel.SetActive(true);
        }
        else
        {
            FailedPanel.SetActive(true);
        }
    }
Ejemplo n.º 3
0
 private void Awake()
 {
     instance = this;
 }