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

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

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

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

Q&A

解決済

1回答

440閲覧

OnTriggerEnter2Dを使い、近づかないと作動しないギミック

graha6

総合スコア8

C#

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

0グッド

0クリップ

投稿2022/07/01 07:14

プレイヤーが判定内に入ってる状態であり、
プレイヤーがキー入力をすると作動する仕掛けを作りたいと思いプログラムを書きます。

結果、上記通りの動きになりましたが、しかし、
その仕掛けを複数個置くとおかしな現象が起きてしまいました。↴

2つの仕掛けが離れた場所にあります。(仕掛け=レバー)
片方の仕掛けのcollider内に入ってキー入力をしたら、もう片方の仕掛けが作動してしまいした。

私は、プレイヤーが入っている仕掛けだけを作動させたいです。
間違った認識である箇所を教えてください!

private bool isLever; void Start(){isLever = false;} void Update(){ if (Input.GetKeyDown(KeyCode.V) & isLever) { GameObject lever; lever = GameObject.FindWithTag("Lever"); //ヒエラルキー内から指定タグのオブジェクト検出 lever.GetComponent<Lever>().Change(); //別のスクリプト内の処理で仕掛け作動 Debug.Log("作動中"); } } private void OnCollisionExit2D(Collision2D collision) { if (collision.gameObject.tag == "Ground")//地面 { isLever = false; } } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Lever")//仕掛け { isLever = true; } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

これはきっと"Lever"のタグが複数あり全部に反応してしまっているのだと思います。
範囲内のオブジェクトだけを操作したいのならOnTriggerEnter2Dで取得したゲームオブジェクトを保存しておきそのゲームオブジェクトからスクリプトをGetCompornentして関数を実行してあげれば行けると思います。

C#

1private GameObject hitLever = null; 2 3void Update() 4{ 5 if (Input.GetKeyDown(KeyCode.V) & isLever) 6 { 7 if (hitLever != null) { 8 hitLever.GetComponent<Lever>().Change(); //別のスクリプト内の処理で仕掛け作動 9 Debug.Log("作動中"); 10 } 11 } 12} 13 14private void OnTriggerEnter2D(Collider2D collision) 15{ 16 if (collision.gameObject.tag == "Lever")//仕掛け 17 { 18 isLever = true; 19 hitLever = collision.gameObject; 20 } 21}

投稿2022/07/01 11:30

syorice

総合スコア26

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

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

graha6

2022/07/01 14:44

返事が遅くなり申し訳ございません! 早くの対応ありがとうございます!! ご回答通りに書き直してみたら、やりたいことがばっちりできました。 自分はまだnullの汎用性を理解しきれていませんでしたので、この機会を得たことに感動しています。 解決してくださり、ありがとうございました。
syorice

2022/07/02 05:13

最近Unity触ってなかったですがうまくできてよかったです! ゲーム開発がんばりましょ('ω')ノ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問