###前提・実現したいこと
Raycastをヒットさせたい
###発生している問題・エラーメッセージ
・Box Colliderをコンポーネントに持つオブジェクトがあるが、Raycastがヒットしない
(ThirdPersonController in Standard Assets や a bike object (http://u3d.as/F6S))
・ヒットするオブジェクトもある(シンプルなCubeや、asset storeでダウンロードしたいくつかのオブジェクト
###該当のソースコード
Unity
1public void TryInteract () { 2 RaycastHit hit; 3 4 if (Physics.Raycast (transform.position, transform.forward, out hit, 1f)) { 5 6 // not working 7 if (hit.collider.name == "Bike") { 8 Debug.Log("Bike"); 9 10 // working 11 } else if (hit.collider.name == "Cube") { 12 Debug.Log("Cube"); 13 14 } else { 15 Debug.Log("Other"); 16 } 17 } 18 19 } 20
原因が分かる方がいらっしゃいましたら、ご教示いただけますと幸いです。良いお年を!
追記(いずれもBox Colliderコンポーネント付与):
ヒットしない
Number of hits:0
UnityEngine.Debug:LogFormat(String, Object[])
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:145)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
ヒットする(上記バイクと同じパッケージのプレファブ)
Number of hits:1
UnityEngine.Debug:LogFormat(String, Object[])
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:145)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
RailingA
UnityEngine.Debug:Log(Object)
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:145)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
ヒットする
Number of hits:2
UnityEngine.Debug:LogFormat(String, Object[])
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:145)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
terraced1c (2)
UnityEngine.Debug:Log(Object)
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:149)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
Road_Streight
UnityEngine.Debug:Log(Object)
PlayerControl:TryInteract() (at Assets/Original/Scripts/PlayerControl.cs:149)
PlayerControl:Update() (at Assets/Original/Scripts/PlayerControl.cs:80)
追記2:
ButtonのOnPointerClickでTryInteractメソッドを呼び出すようにしているのですが、スクーターに向かってRayを試みた結果コンソールに下記メッセージが表示され、Debug.Logでは何も表示されませんでした。
NullReferenceException: Object reference not set to an instance of an object PlayerControl.TryInteract () (at Assets/Original/Scripts/PlayerControl.cs:154) UnityEngine.Events.InvokableCall.Invoke () (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent.cs:165) UnityEngine.Events.UnityEvent.Invoke () (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58) UnityEngine.UI.Button.Press () (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update()

回答1件
あなたの回答
tips
プレビュー