2017-02-27 118 views
-4

我有一個隨機產生的3D遊戲。事情是,物體不會與碰撞產生,角色開始穿過牆壁。在C#中碰撞產生一個對象的必要代碼是什麼?Unity 3D對象碰撞

+1

[統一碰撞沒有檢測]的可能的複製(http://stackoverflow.com/questions/36353310/unity-collision-not-being-detected) – thodic

+0

1. UnityScript是一個不同的語言比C#2. *「對象不產生碰撞」*是什麼意思?他們有分配給他們的碰撞體和/或剛體嗎? – UnholySheep

+0

您需要碰撞物體上的碰撞組件才能使碰撞起作用。其中一個對象也需要一個剛體。如果您需要更多幫助,請展示您的代碼和更多上下文。 – Maakep

回答

1

好的,如果我已經正確地閱讀你的問題,你會自動爲你的遊戲生成隨機網格,但他們還沒有碰撞對他們。要生成C中的對象#請看下面的例子撞機:

using UnityEngine; 
using System.Collections; 

public class AddComponentExample : MonoBehaviour 
{ 
    void Start() 
    { 
     SphereCollider sc = gameObject.AddComponent<SphereCollider> as SphereCollider; 
    } 
} 

你需要一個對撞機組件添加到您正在生成的遊戲對象。你選擇的那個取決於你創建的網格,所以如果你正在生成立方體網格物體,選擇一個箱體對撞機。

如果您正在創建自己的網格而不是更復雜的基元,那麼您可以應用「MeshCollider」。但是要警告,如果你在運行時創建自己的網格,你可能會得到一些不尋常的文物。

希望幫助

+1

最好使用Generic語法,如果類型拼寫錯誤,編譯時會出錯,而字符串語法不會。 'SphereCollider sc = gameObject.AddComponent ()as SphereCollider;' – Galandil

+0

你是絕對正確的先生,事實上字符串格式現在在Unity 5中已棄用,我會調整我的答案:) –

+0

謝謝大家。我知道這個問題是愚蠢的,我忘了發佈一些代碼,因爲我是所有這些新手。你們都幫了一些忙。如果您的代碼有效,我會隨時通知您 –