2017-09-25 10 views
0

私は子オブジェクトを持つFPSControllerを持っています。このオブジェクトは、歩きながらプレイヤーと一緒に動くはずなので、子として定義されています。私は、この単純なコードで、その上でこのオブジェクトのonMouseUpの()でスクリプト、および箱コライダーコンポーネントを置く:私はそれをクリックするとFPSControllerの子オブジェクトのOnMouseUp [Unity 3d]

public void OnMouseUp() { 
    Debug.Log("It works"); 

} 

、それは何もしません。 FPSControllerの子であるオブジェクトを削除すると、正常に動作します。何が起こっていて、それをどう修正するか?

答えて

1

この子オブジェクトにRigidbodyコンポーネントを追加すると、OnMouseUp()が機能します。

あなたが独自の剛体を与えたり、階層から外したりしない限り、親の剛体は、子の衝突子がクリックされたときに呼び出される唯一のものです。

+0

良い/非常に単純な解決策...私はそれに運動学的剛体を追加しなければならなかった – raphadko

0

チェック:

a)は、あなたのクラスはMonoBehaviour

B)Physics.queriesHitTriggersから延びているが、私はそれがレイキャストを使用して動作させることができ

0

を有効にすると、onMouseUpのはちょうど私が希望、動作しません。 onMouseEnterや他の "OnMouse"トリガーに必要な場合に備えて、それに対応するソリューションを感謝してください。

レイキャストでは、hit.collider.transform.nameが子オブジェクトの名前を実際に取得するかどうかを確認する必要がありました。ちょうどhit.transform.nameを使用すると、親の名前が返されます。

関連する問題