2017-01-14 7 views
0

これは説明するのが難しいので、次の画像を使用して最善を尽くすようにしています。クリックまたはレイキャストを特定のアイテムにのみ許可する

enter image description here

ので、ケースはこれです:プレーヤーは、在庫と "確認メニュー"(A、S & D)からドリルがポップアップしている選択しています。プレイヤーは、これらのアクションの1つを選択しなければなりません(A =ポジションを受け入れる、S =アイテムを在庫に戻す、D =オブジェクトを動かし続ける)。プレイヤーがこれらのアクションの1つを選択する前に、他に何もできないはずです。

プレーヤーが右上のミニマップをクリックすると、ボタンをクリックしてが検出され、メニューが開きます。プレーヤーが車(Raycastで検出された)をクリックすると、プレーヤーが内部に入ります。プレイヤーがジョイスティックをドラッグすると、歩くことが始まります(Unityのジョイスティックスクリプトを使用)。これらのうちのどれも許可されるべきではありません。質問へ

:Unityはへの方法のいくつかの種類の「マウスがこのオブジェクト上にない場合は、クリックすると何もしない」「他のオブジェクトにクリック検出のいずれかの種類を防ぐが、これらの」 OR がありますか?おそらくそうではないので、最善の回避策は何でしょうか?

さまざまなスタイル(さまざまなスクリプトのボタンやレイキャスト)を使用して、さまざまな場所からこれらの「クリックする」アクションがトリガーされるため、どこでもブール値を設定することでこれを回避します。オープンなアイデアは大歓迎です。

+0

同じレイヤーで同様にやり取りできるオブジェクトをグループ化してから、特定のオブジェクトグループとやりとりしたいときにレイアウォールのグローバルレイヤーマスクを変更するだけで、レイヤーを使ってこれを試すことができます。 – Serlite

答えて

0

GUIの深度(https://docs.unity3d.com/ScriptReference/GUI-depth.html)を使用すると簡単に回避できます。

guiDepthが上にあり、他のすべてのGUIが下にある場合は、画面全体をカバーする別のGUIを追加することができます。 Raycastは最初の要素を返し、中間のGUIなら何もしません。

関連する問題