2016-11-27 13 views
-1

私は比較的新しいUnityです。私はチェスゲームを作っています。四角として3D飛行機BlenderのモデルがPhysics.Raycast()によって検出されない

  1. :下のスクリーンショットでは、次のゲームオブジェクトを参照してください。
  2. チェスのブレンダーモデル。

ここでは、クリックしたオブジェクトを検出して削除するために使用している非常に基本的なスクリプトを示します(後で機能が追加されます)。

void Update() { 
    if (Input.GetMouseButtonDown(0)) 
    { 
     Ray ray = mainCamera.GetComponent<Camera>().ScreenPointToRay(Input.mousePosition); 
     RaycastHit hit; 
     if (Physics.Raycast(ray, out hit)) 
     { 
      //highlightPiece(hit.transform.gameObject, whiteSelectedTexture, false); 
      Destroy(hit.transform.gameObject); 
     } 
    } 
} 

問題がユニティ(正方形を作る平面オブジェクト)へのネイティブゲームオブジェクトは、レイキャストにより検出されたが、ブレンダーモデルがないことです。これは、最も近いオブジェクトが検出されるべきであるため、スクリーンショットによって確認されます。スクリプトは四角形を削除してしまいましたが、チェスの部分は削除されませんでした(実際には選択して作業する予定です)。

enter image description here

答えて

3

あなたはきっとあなたの輸入のBlenderオブジェクトへColliderを追加していません。

すべてのチェスピースを選択し、BoxCollider/CapsuleColliderを追加します。

ところで、私はあなたがチェスプレートのコライダーを取り除くことができると思います。

さらに、レイヤーを使用して効率的にレイキャストすることをお勧めします。以下のUnity記事をチェックしてください:https://unity3d.com/fr/learn/tutorials/topics/physics/physics-best-practices

+0

これは魅力的でした。どうもありがとうございます!私のチェスのピースはネストされています(私は余分な親を追加しました)。親に 'BoxCollider'を追加しても機能しませんでした。 'Renderer'を使ってサブオブジェクトに追加しました! –

+1

親に追加したい場合は、Inspector [BoxCollider](https://docs.unity3d.com/uploads/Main/)から手作業で 'BoxCollider' /' CapsuleCollider'のサイズを設定する必要があります。 Inspector-BoxCollider.png) – Hellium

+0

この回答のすべてが正確で優れています.Helliumもうまくいきますが、あなたは***メッシュのコライダーを絶対に使用すべきではありません。全く新しいゲームのためにUnityの中で最も混乱しやすいものの1つです愛好家。 – Fattie

関連する問題