2016-11-27 57 views
-1

我對Unity比較陌生。我正在製作一個國際象棋遊戲。在下面的截圖中,您將看到以下GameObjectsPhysics.Raycast未檢測到攪拌器模型

  1. 3D平面爲正方形。
  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); 
     } 
    } 
} 

的問題是原產於團結(使正方形平面物體)的GameObjects由光線投射檢測,但攪拌機機型都沒有。這是由截圖確認的,因爲應該檢測到最近的對象。腳本最終刪除了正方形,但不是棋子(我實際上計劃選擇和處理)。

enter image description here

回答

3

你肯定還沒有添加一個Collider給您導入攪拌機的對象。

選擇每一個棋子,並添加一個BoxCollider/CapsuleCollider

順便說一句,我認爲你可以刪除棋盤的對撞機。

此外,我強烈建議您在進行光線投射時使用圖層,以便提高效率。檢查下面的Unity文章:https://unity3d.com/fr/learn/tutorials/topics/physics/physics-best-practices

+0

這工作就像一個魅力。非常感謝!順便說一句我的棋子是嵌套的(我加了一個額外的父母)。將「BoxCollider」添加到父項不起作用。使用'Renderer'將它添加到子對象中! –

+1

如果您想添加到父級,您可能需要手動設置「檢查器!」[BoxCollider]中的'BoxCollider' /'CapsuleCollider'的尺寸(https://docs.unity3d.com/uploads/Main/ Inspector-BoxCollider.png) – Hellium

+0

在這個答案中的一切都是正確的和出色的,做得好@Hellium,但你絕對不應該使用***網狀對撞機:這是Unity中最令人困惑的事情之一,用於全新遊戲愛好者。 – Fattie