質問するログイン新規登録
C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

89閲覧

Unityでカメラの切り替えができない

Kitakaze

総合スコア1

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2025/09/06 10:05

0

0

実現したいこと

Unityで、スペースキーを押したらカメラがMainCameraからSubCameraに切り替わるようにしたい。
テレビであるような1カメ、2カメのようなイメージ。

発生している問題・分からないこと

SubCameraにスクリプトをアタッチしているが、そもそもvoid Update()内の処理が実行されない

該当のソースコード

CameraControll.cs

1 2using UnityEngine; 3using System.Collections; 4using UnityEngine.InputSystem; 5using System.Collections.Generic; 6public class CameraControll : MonoBehaviour 7{ 8 9 private GameObject mainCamera; //メインカメラ格納用 10 private GameObject subCamera; //サブカメラ格納用 11 12 13 14 //呼び出し時に実行される関数 15 void Start() 16 { 17 //メインカメラとサブカメラをそれぞれ取得 18 mainCamera = GameObject.Find("MainCamera"); 19 subCamera = GameObject.Find("SubCamera"); 20 Debug.Log("サブカメラのスクリプトチェック"); 21 //サブカメラを非アクティブにする 22 subCamera.SetActive(false); 23 24 } 25 26 27 //単位時間ごとに実行される関数 28 void Update() 29 { 30 Debug.Log("void Update処理開始"); 31 var current = Keyboard.current; 32 if (current == null) 33 { 34 Debug.Log("異常終了"); 35 // 現在のキーボード情報 36 // キーボードが接続されていないと 37 // Keyboard.currentがnullになる 38 return; 39 } 40 // spaceキーの入力状態取得 41 var spaceKey = current.spaceKey; 42 43 44 45 //スペースキーが押されている間、サブカメラをアクティブにする 46 if (spaceKey.isPressed) 47 { 48 //サブカメラをアクティブに設定 49 mainCamera.SetActive(false); 50 subCamera.SetActive(true); 51 Debug.Log("カメラのSpaceキーが押された!"); 52 } 53 else 54 { 55 //メインカメラをアクティブに設定 56 subCamera.SetActive(false); 57 mainCamera.SetActive(true); 58 } 59 } 60}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

void Update内のSetActiveが悪さをしているのかと思い、コメントアウトしてみるも効果なし。

補足

Unity6.1(6000.1.13f1)

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

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

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

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

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

guest

回答1

0

ベストアンサー

Start()にあるsubCamera.SetActive(false);が原因です。

SetActiveはゲームオブジェクトを無効にします。
つまり、subCameraにアタッチしたこのスクリプト自身も無効にしてしまうわけです。
subCameraでもmainCameraでもない別のゲームオブジェクトにアタッチするか、enabledでコンポーネントのみを無効にしてください。

投稿2025/09/07 03:51

fiveHundred

総合スコア10513

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

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

Kitakaze

2025/09/07 03:55

無事にカメラを切り替えることがができました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問