///<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); } }
///<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); } }
public void RPCSetzsL(ZState z) { if (state != z && isController) { RPCSetzs((int)z); } }
// 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; }
// 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; } }
public void Setzs(int z) { stm = 0; state = (ZState)z; }
public void RPCSetzsL(ZState z) { if (state != z && isController) RPCSetzs((int)z); }