前提・実現したいこと
CanvasのButtonで作成したオブジェクトのInspectorがPosition Y = 102となったことをIf文で判定し、Trueならメソッドを実行したい。
発生している問題・エラーメッセージ
Debug.Log(Middle.transform.localPosition.y)の出力が102となっていますが、If(Middle.transform.localPosition.y == 102)がTrueとなっていないようで、うまくいきません。解決方法についてご教示いただけますと幸いです。
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using TMPro; public class UIManager : MonoBehaviour { private TextMeshProUGUI levelText; int index; public GameObject Top; public GameObject Middle; public GameObject Bottom; public GameObject ConfettiTop; public GameObject ConfettiBottom; GameObject TopHigh; GameObject TopLow; GameObject MiddleHigh; GameObject MiddleLow; GameObject BottomHigh; GameObject BottomLow; //public delegate void SetCurrentState(GameState state);//型 //public SetCurrentState setCurrentState; //外部から登録できる関数の型 // Start is called before the first frame update void Start() { index = SceneManager.GetActiveScene().buildIndex; index++; changeLevel(); } // Update is called once per frame void Update() { } public void changeLevel() { //indexを利用してシーンごとに初期化する(UiManagerのLevel表記で使いたい) Debug.Log("changeLevel()"+ index); levelText = this.GetComponent<TextMeshProUGUI>(); Debug.Log(levelText); levelText.text = "Level" + index; } public void Clear() { if(index == 1) { Debug.Log(Middle.transform.localPosition.y); //Top.transform.localPosition.y == 0f || if (Middle.transform.localPosition.y == 102) { StartCoroutine(Confetti()); Debug.Log("クリア!!"); } } else if (index == 2) { MiddleHigh = GameObject.Find("MiddleHigh"); MiddleLow = GameObject.Find("MiddleLow"); if (MiddleHigh.transform.localPosition.y == 74.9f && Top.transform.localPosition.y == 0 && MiddleLow.transform.localPosition.y == -145 && Bottom.transform.localPosition.y == -74.9f) { StartCoroutine(Confetti()); } } else if (index == 3) { TopHigh = GameObject.Find("TopHigh"); TopLow = GameObject.Find("TopLow"); MiddleHigh = GameObject.Find("MiddleHigh"); MiddleLow = GameObject.Find("MiddleLow"); BottomHigh = GameObject.Find("BottomHigh"); BottomLow = GameObject.Find("BottomLow"); if (TopHigh.transform.localPosition.y == 44 && TopLow.transform.localPosition.y == 132 && MiddleHigh.transform.localPosition.y == -88 && MiddleLow.transform.localPosition.y == 0 && BottomHigh.transform.localPosition.y == 44) { StartCoroutine(Confetti()); Debug.Log("クリア!!"); } } } IEnumerator Confetti() { ConfettiTop.SetActive(true); yield return new WaitForSeconds(1); ConfettiBottom.SetActive(true); } }
試したこと
Middle.transform.localPosition.yが102~103の場合も試したのですが、Trueになりませんでした。
if(index == 1) { Debug.Log(Middle.transform.localPosition.y); //Top.transform.localPosition.y == 0f || if ( 102 <= Middle.transform.localPosition.y && Middle.transform.localPosition.y <= 103) { StartCoroutine(Confetti()); Debug.Log("クリア!!"); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/23 07:52
2020/11/23 07:55
2020/11/23 08:11
2020/11/23 08:46