2017-10-11 3 views
0

生のイメージはUIのためだけのものです。しかし、UIオブジェクト(パネルまたはキャンバス)にはコライダーを含めることはできないようです。衝突を検出するために、Raw ImageゲームオブジェクトにBox Colliderコンポーネントを含めることは可能ですか?

私が試みた反対の解決策は3Dパネルを使用することですが、素材画像(pngファイル)を素材に変換する方法はわかりません。プレーンゲームオブジェクトにpng画像を表示する方法は他にありますか?

は、私のようなコードの一部を含める:

void OnTriggerStay(Collider col) 
{ 
    // TODO called when the game object that includes this script is collided 
    //  (if it has a Collider component with isTrigger enabled) 
} 

これまでのライダーと原画像との分離UIのゲームオブジェクトと3Dゲームオブジェクトを使用している私の回避策。それは私のためのボッチュのようだが、多分それは最高の解決策です!

答えて

1

Unityで素材を簡単に作成できます。ユニティにイメージをインポートしてから、アセット - >作成 - >マテリアルをクリックします。マテリアルを選択し、イメージをインスペクタにドラッグします(「None(Texture 2D)」などのフィールドがあるはずです)。次に、あなたが望む任意のオブジェクトにマテリアルを適用することができます。

+0

をありがとう:あなたはスクリプトからそれを行うことができ、単純な平面と

。私はそう簡単ではありませんでした。私は実行時にそれを行う必要があります。私はスクリプトでそれを行う必要があります:私はそれも可能だと思います! – chelder

2

はい、可能ですが、コライダーはUIコンポーネントで使用するためのものではありません。

あなたはこの世界空間にレンダリングモードキャンバスを変更したいと思う場合:

enter image description here

その後、手動でRawImageに合わせて衝突を変更します。それがフラットにならないように、あまりにもそれに奥行きを与える:

enter image description here


あなたは答えはそれを行う必要がありますVTodorovさんその後、3Dオブジェクトを使用する場合。

public Texture2D yourTeture; 
public GameObject plane; 

void Start() 
{ 
    MeshRenderer meshRenderer = plane.GetComponent<MeshRenderer>(); 
    meshRenderer.material.mainTexture = yourTeture; 
} 
+0

注:キャンバスがイベントカメラを要求するときはいつでも*カメラスペースキャンバスとは異なり、ワールドスペースキャンバスにはこのフィールドを割り当てる必要はありませんが、これは単にCamera.mainを呼び出すことを意味します。内部的に 'GameObject.FindObjectWithTag(" MainCamera ")' *を使用し、キャッシュされません。*そして、私たちは皆、遅れを招く 'GameObject.Find'がどのようなものであるか知っています... – Draco18s

+0

@ Draco18s私はこれについて知りませんでした。 – Programmer

+1

私はそれについて話しているユニティの男からYouTubeで話をするまで、どちらもしませんでした。私に見てみましょう... [この1つ](https://www.youtube.com/watch?v=n-oZa4Fb12U)か[この1つ](https://www.youtube.com/watch?v = _wxitgdx-UI)。どちらも見ておく価値がある。 – Draco18s

関連する問題