質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Unity

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

Q&A

解決済

2回答

2944閲覧

if文がうまく働かない。。。

horitomo

総合スコア26

C#

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

Unity

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

0グッド

0クリップ

投稿2016/09/17 11:54

すみません、質問させてください。
ある物体を上昇させ、下降させるとします。で

C#

1if (位置を参照するための物体.transform.position.y > 350) 2 { 3 this.gameObject.SetActive(false); 4} 5if (位置を参照するための物体.transform.position.y < 350) 6 { 7 this.gameObject.SetActive(true); 8 Debug.Log("sagatta"); 9 }

上記スクリプトを書きました。
そこで下記の問題が発生しました。
物体が最初350未満の高さの時、デバッグも表示されます。←問題なし
物体が上昇し、350を超えるとオブジェクトは消え、デバックも表示されません。←問題なし
物体の高さが350より上から350未満に下がった場合、物体は現れず、デバックも表示されません。←問題あり

文法的におかしいのか何なのかがわかりません。どなたか教えていただけないでしょうか?
よろしくおねがいします。

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

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

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

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

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

guest

回答2

0

提示されたスクリプト(C#プログラムをスクリプトっていうのは抵抗あるなぁ)ですが、位置を参照するための物体.transform.position.yが350の場合はどちらの分岐にも当てはまらず抜けてしまいます(未満でもないですし、超過でもないですから)。
Unityでの開発はしたことがないですが、デバッガ(あるなら)を使って、事象が発生する時の位置を参照するための物体.transform.position.yの値を確かめてみた方がいいではないでしょうか。
350は境界値になることになりますが、どっちに倒すかを決めたほうがいいと思います。

投稿2016/09/17 12:40

archiver

総合スコア1557

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

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

horitomo

2016/09/17 13:07

回答、ありがとうございました。値は確認してます。どうやら、SetActiveに対する認識が誤ってたようです。
guest

0

ベストアンサー

Unityはわかんないけど
http://startunity.blogspot.jp/2013/09/gameobjectsetactive.html
>スクリプトも一時停止したければSetActive()を使います。
>オブジェクトが階層化されている時、階層下のオブジェクトも含めて無効にしてくれます。
とあるので一度350を超えた段階でオブジェクトがいろいろと動かない状態になってるんじゃないですか?
なので
>this.gameObject.SetActive(true);
と書いたところでスクリプトの呼び出しは起きないと思うので、スクリプトが停止していない別のオブジェクトからSetActive(true);しないとダメだと思います
最初の350未満のifは動いてるし350超えた時も動いているのだからifが動いていないんじゃなくてifに行くまでのところで動いていないはずです
となるとくさいのはSetActiveだからその仕様をきちんと確認した方が良いと思います

投稿2016/09/17 12:28

len_souko

総合スコア1348

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

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

horitomo

2016/09/17 13:05

なるほどです。想定外でした。解決しそうです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問