🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

449閲覧

オブジェクトのInspectorがPosition Y = 102となったことをIf文で判定し、Trueならメソッドを実行したい。

MikanChan

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/11/23 07:32

前提・実現したいこと

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("クリア!!"); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

yプロパティはfloat型なので小数を含みます。102から少しだけずれていたりしませんか?
もしこれが原因だとしたら、yプロパティから取得した値をint型に変換してやれば解決します。

投稿2020/11/23 07:40

Automatic9045

総合スコア313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MikanChan

2020/11/23 07:52

ありがとうございます! int型への変換について具体的にご教示いただくことはできますか。 int top = Top.transform.localPosition.y  と記述したところ、右辺が赤線となりfloat型をint型に暗黙的に変換できません、というエラーになりました。
Automatic9045

2020/11/23 07:55

キャストすればOKです。 int top = (int)Top.transform.localPosition.y;
MikanChan

2020/11/23 08:11

できました!ご丁寧にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問