下図のようなunitychanにアタッチしているスクリプトから、子オブジェクトの(正確には、子オブジェクトの子オブジェクトの子オブジェクトの)Character1_RightUpLegのBox Colliderを取得して、コライダーの有効状態を操作したいと考えています。
例えば、
C#
1Collider collider = this.gameObject.GetComponentInChildren<BoxCollider>(); 2collider.enabled = false;
のコードで操作することもできるのですが、この場合、自身(unitychan)のBox Colliderや、他の子オブジェクトのBox Colliderも取得対象となってしまいます。
Character1_RightUpLegの子オブジェクトのみに限定して、そのBox Colliderを取得する方法の
ご教授をお願いします。
下記のようなコードを考えてみましたが、エラーとなってしまいました。
C#
1Collider collider = this.gameObject.transform.FindChild ("Character1_RightUpLeg").gameObject.GetComponent<BoxCollider>(); 2collider.enabled = false;
NullReferenceException: Object reference not set to an instance of an object
EventScript.Start () (at Assets/EventScript.cs:10)
※追記
ご回答いただいた方法で、
スクリプトファイルに「public BoxCollider RightUpLegCollider;」を追加し、
ヒエラルキー上でunitychanを選択してインスペクターに追加されたRightUpLegColliderに
Character1_RightUpLeg をドラッグ&ドロップするというやり方でできることがわかりました。
しかし、できれば、インスペクターでドラッグ&ドロップして参照をセットする方法でなく、
FindChildのようなもので子オブジェクトを見つけ出して、そのコライダーを取得する方法を知りたいです。
それともそれはUnityの仕様上、無理なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/30 12:01
2016/07/30 12:36
退会済みユーザー
2016/07/30 12:56