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

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

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

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

Unity

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

Q&A

1回答

1050閲覧

SubCameraのクリックが一度しか反応しない(trueとfalse)

muko04

総合スコア0

C#

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

Unity

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

0グッド

0クリップ

投稿2021/12/10 15:10

前提・実現したいこと

カメラを5つ設定しており、内訳がCamera,Camera2,Camera3,Camera4(この4つのカメラは1234キーで切り替え)subCameraです。subCameraは親をPlateに設定しており、PlateをクリックするとsubCameraが反応してズームするという仕組みにしています。
現状、クリックするとsubCameraが反応してズームするという所までは出来たのですが、別のカメラに切り替えた後にもう一度subCameraでズームしようとすると反応してくれません。どのようにすれば反応してくれるようになるでしょうか。長文失礼します

発生している問題・エラーメッセージ

二度目以降Pleteをクリックしても、subCameraのズームが反応しない

該当のソースコード

【カメラのズームを設定しているスクリプト】

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraZoomSetter : MonoBehaviour { [SerializeField] Camera subCamera = default; private void Start() { subCamera.gameObject.SetActive(false); } //クリックすると、サブカメラに切り替える public void OnClick() { subCamera.gameObject.SetActive(true); } }

【1234キーでカメラ切り替えのスクリプト】

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraChange : MonoBehaviour { //どこからでも関数を実行できるようにしたい public static CameraChange instance; private void Awake() { instance = this; } //カメラ1234を定義 public GameObject MainCamera; //メインカメラ格納用 public GameObject Camera2; //カメラ2格納用 public GameObject Camera3; //カメラ3格納用 public GameObject Camera4; //カメラ4格納用 //呼び出し時に実行される関数 void Start() { //カメラ1234を取得 MainCamera = GameObject.Find("MainCamera"); Camera2 = GameObject.Find("Camera2"); Camera3 = GameObject.Find("Camera3"); Camera4 = GameObject.Find("Camera4"); //カメラ2以降を非アクティブに Camera2.SetActive(false); Camera3.SetActive(false); Camera4.SetActive(false); } //単位時間ごとに実行される関数 void Update() { //キーボード上1キーが押されたら、カメラ1をアクティブに if (Input.GetKeyDown(KeyCode.Alpha1)) { //カメラ1をアクティブに設定 MainCamera.SetActive(true); //他のカメラを非アクティブに Camera2.SetActive(false); Camera3.SetActive(false); Camera4.SetActive(false); } //キーボード上2キーが押されたら、カメラ2をアクティブに if (Input.GetKeyDown(KeyCode.Alpha2)) { //カメラ2をアクティブに設定 Camera2.SetActive(true); //他のカメラを非アクティブに MainCamera.SetActive(false); Camera3.SetActive(false); Camera4.SetActive(false); } //キーボード上3キーが押されたら、カメラ3をアクティブに if (Input.GetKeyDown(KeyCode.Alpha3)) { //カメラ3をアクティブに設定 Camera3.SetActive(true); //他のカメラを非アクティブに MainCamera.SetActive(false); Camera2.SetActive(false); Camera4.SetActive(false); } //キーボード上4キーが押されたら、カメラ4をアクティブに if (Input.GetKeyDown(KeyCode.Alpha4)) { //カメラ4をアクティブに設定 Camera4.SetActive(true); //他のカメラを非アクティブに MainCamera.SetActive(false); Camera2.SetActive(false); Camera3.SetActive(false); } } }

試したこと

subCameraがクリックして反応した後に、trueのままになっているのが問題なのではと考えましたがそれ止まりです

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

このままでは、subCameraを有効にしても、他のカメラを無効にしていないので、subCameraと他のカメラが同時に有効になる状態になります。
なので、subCameraを有効にしたときは他のカメラを無効にし、他のカメラを有効にした場合はsubCameraを無効にする、という処理にする必要があります。

投稿2021/12/13 00:52

fiveHundred

総合スコア9778

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

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

muko04

2021/12/14 12:51

返信遅くなり申し訳ありません。 色々試行錯誤してみたのですが、どのようにコードを書いたらいいのか分からないでよれけば教えて頂けないでしょうか?
fiveHundred

2021/12/14 13:24

普通に「~.SetActive()」で切り替えればいいだけですが、何か上手くいかないことでもあったのですか?
muko04

2021/12/18 08:15

void update内で新たに書き足す感じですかね? 返信遅れてすみません
fiveHundred

2021/12/18 08:40

CameraZoomSetterのOnClick()にも必要かもしれません。 というか、一々聞くよりも、まずは自分で試してみるほうが早いです。 それで上手くいかなかったら、コメントで聞き直すという形のほうがよろしいかと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問