Exemple #1
0
    ///<summary>完食されたぜんざいを片付ける。ぜんざいが無いもしくは食べている途中の場合はfalseを返します</summary>
    public bool TryToRemoveZenzai()
    {
        //ぜんざい完食済みの時だけ
        if (ZenzaiState == ZState.WasEaten)
        {
            ZenzaiState = ZState.NoZenzai;
            zenzaiObj.SetActive(false);

            FramesUntilGetOut = framesToGetOut;

            //Ate<->lackingOfZenzai間だけはぜんざいの有無によるので…
            if (KamiState == KState.Ate)
            {
                KamiState = KState.LackingOfZenzai;
            }

            audioSource.PlayOneShot(takeSE);

            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemple #2
0
    ///<summary>ぜんざいを机に置く。神が着席していない/ぜんざいが既にある場合はfalseを返します</summary>
    public bool TryToPutZenzai()
    {
        //神が着席しているがぜんざいが無い状態の時だけ…
        if (KamiState == KState.LackingOfZenzai)
        {
            KamiState   = KState.Eating;
            ZenzaiState = ZState.BeingEaten;

            zenzaiObj.SetActive(true);
            zenzaiObj.GetComponent <SpriteRenderer>().sprite = zenzaiSpr;

            _FramesUntilAteUp = framesToEat;

            for (int k = 0; k < 2; k++)
            {
                fukidashis[k].SetActive(false);
                fukidashis[k].transform.position = new Vector3((k - 1) * 0.7f, (-(System.Math.Abs(k - 1)) + 3) * 0.4f, -2)
                                                   + transform.position;
                fukidashis[k].GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, 0);
            }
            fukidashis[2].SetActive(true);

            audioSource.PlayOneShot(putSE);

            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemple #3
0
 public void RPCSetzsL(ZState z)
 {
     if (state != z && isController)
     {
         RPCSetzs((int)z);
     }
 }
Exemple #4
0
    // Update is called once per frame
    void Update()
    {
        switch (MyState)
        {
        case ZState.idleing:
            goto Ideling;

        case ZState.wandering:
            goto Wandering;

        default:
            break;
        }

Ideling:
        stateTimer -= Time.deltaTime;

        if (stateTimer < 0.0f)
        {
            MyState    = ZState.wandering;
            stateTimer = Random.Range(20, 50) * 0.1f;

            closestDistance  = Mathf.Infinity;
            furthestDistance = 0f;
            LookAround();
        }
        return;

Wandering:
        stateTimer -= Time.deltaTime;
        MoveAround();

        if (stateTimer < 0.0f)
        {
            MyState    = ZState.idleing;
            stateTimer = Random.Range(5, 10) * 0.1f;
        }
        return;
    }
Exemple #5
0
 // Use this for initialization
 void Start()
 {
     stateTimer      = 0.1f;
     MyState         = ZState.idleing;
     closestDistance = Mathf.Infinity;
 }
    // Update is called once per frame
    void Update()
    {
        switch (MyState)
        {
            case ZState.idleing:
                goto Ideling;
            case ZState.wandering:
                goto Wandering;
            default:
                break;
        }

        Ideling:
        stateTimer -= Time.deltaTime;

        if (stateTimer < 0.0f)
        {
            MyState = ZState.wandering;
            stateTimer = Random.Range(20, 50) * 0.1f;

            closestDistance = Mathf.Infinity;
            furthestDistance = 0f;
            LookAround();
        }
        return;

        Wandering:
        stateTimer -= Time.deltaTime;
        MoveAround();

        if (stateTimer < 0.0f)
        {
            MyState = ZState.idleing;
            stateTimer = Random.Range(5, 10) * 0.1f;
        }
        return;
    }
 // Use this for initialization
 void Start()
 {
     stateTimer = 0.1f;
     MyState = ZState.idleing;
     closestDistance = Mathf.Infinity;
 }
Exemple #8
0
    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i < 3; i++)
        {
            if (fukidashis[i].activeSelf && fukidashis[i].transform.localPosition.y < (-(System.Math.Abs(i - 1)) + 5) * 0.4f)
            {
                fukidashis[i].transform.position += new Vector3(0, 0.02f, 0);
                fukidashis[i].GetComponent <SpriteRenderer>().color += new Color(0, 0, 0, 0.03f);
            }
        }

        switch (KamiState)
        {
        //神が来るまで何もしない
        case KState.NoKami:
            //pass
            break;

        //出現~着席までの処理
        case KState.Coming:

            //右側の机の場合右から左に移動
            if (transform.position.x > 0)
            {
                Kami.transform.position += new Vector3(-0.05f, 0, 0);
                //机の前に来たら座る
                if (transform.position.x > Kami.transform.position.x)
                {
                    Kami.transform.position = new Vector3(transform.position.x, transform.position.y + 0.7f, 2);
                    KamiState         = KState.LackingOfZenzai;
                    FramesUntilGetOut = framesToGetOut;

                    fukidashis[0].SetActive(true);
                }
            }
            //左側の机の場合左から右に移動
            else
            {
                Kami.transform.position += new Vector3(0.05f, 0, 0);
                //机の前に来たら座る
                if (transform.position.x < Kami.transform.position.x)
                {
                    Kami.transform.position = new Vector3(transform.position.x, transform.position.y + 0.7f, 2);
                    KamiState         = KState.LackingOfZenzai;
                    FramesUntilGetOut = framesToGetOut;

                    fukidashis[0].SetActive(true);
                }
            }

            break;

        //着席かつぜんざいがない->どんどん耐えられなくなる(スコアは増える)
        case KState.LackingOfZenzai:
            ScoreHolder.Instance.score += 1;

            FramesUntilGetOut--;
            if (FramesUntilGetOut == 0)
            {
                KamiState = KState.Leaving;

                for (int k = 0; k < 3; k++)
                {
                    fukidashis[k].transform.position = new Vector3((k - 1) * 0.7f, (-(System.Math.Abs(k - 1)) + 3) * 0.4f, -2)
                                                       + transform.position;
                    fukidashis[k].GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, 0);
                    fukidashis[k].SetActive(false);
                }
            }
            else if (FramesUntilGetOut == 100)
            {
                fukidashis[1].SetActive(true);
                fukidashis[2].SetActive(true);
            }

            break;

        //食べてる(一定時間で完食)
        case KState.Eating:
            ScoreHolder.Instance.score++;
            FramesUntilAteUp--;
            if (FramesUntilAteUp == 0)
            {
                //完食処理
                KamiState         = KState.Ate;
                ZenzaiState       = ZState.WasEaten;
                FramesUntilGetOut = framesToGetOut;
                zenzaiObj.GetComponent <SpriteRenderer>().sprite = zenzaiAteSpr;

                fukidashis[0].SetActive(true);
            }
            break;

        //完食後(LackingOfZenzaiと同じ処理)
        case KState.Ate:
            ScoreHolder.Instance.score += 1;

            FramesUntilGetOut--;
            if (FramesUntilGetOut == 0)
            {
                KamiState = KState.Leaving;

                for (int k = 0; k < 3; k++)
                {
                    fukidashis[k].transform.position = new Vector3((k - 1) * 0.7f, (-(System.Math.Abs(k - 1)) + 3) * 0.4f, -2)
                                                       + transform.position;
                    fukidashis[k].GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, 0);
                    fukidashis[k].SetActive(false);
                }
            }
            else if (FramesUntilGetOut == 100)
            {
                fukidashis[1].SetActive(true);
                fukidashis[2].SetActive(true);
            }

            break;

        //退出、画面外に出たら消す
        case KState.Leaving:

            //右側の机の場合左から右に移動
            if (transform.position.x > 0)
            {
                Kami.transform.position -= new Vector3(-0.05f, 0, 0);
                //画面外に来たら消す
                if (Kami.transform.position.x > 8)
                {
                    Destroy(Kami);
                    _Kami     = null;
                    KamiState = KState.NoKami;
                }
            }
            //左側の机の場合右から左に移動
            else
            {
                Kami.transform.position -= new Vector3(0.05f, 0, 0);
                //画面外に来たら消す
                if (Kami.transform.position.x < -8)
                {
                    Destroy(Kami);
                    _Kami     = null;
                    KamiState = KState.NoKami;
                }
            }

            break;
        }
    }
Exemple #9
0
 public void Setzs(int z)
 {
     stm   = 0;
     state = (ZState)z;
 }
Exemple #10
0
 public void Setzs(int z)
 {
     stm = 0;
     state = (ZState)z;
 }
Exemple #11
0
 public void RPCSetzsL(ZState z)
 {
     if (state != z && isController)
         RPCSetzs((int)z);
 }