2017-02-27 20 views
-4

私はあなたがプレイしたときランダムに生成される3Dゲームを持っています。オブジェクトが衝突して生成されず、文字が壁を通って動き始めるということです。 C#で衝突で生成されるオブジェクトに必要なコードは何ですか?オブジェクトの3D 3Dコリジョン

+1

可能な複製を助け

・ホープ(http://stackoverflow.com/questions/36353310/unity-collision-not-being-detected) – thodic

+0

1. UnityScriptが異なっています言語はC#2よりも優れています。*「オブジェクトはコリジョンを生成しません」とはどういう意味ですか?彼らには、衝突者や剛体が割り当てられていますか? – UnholySheep

+0

コリジョンが機能するには、オブジェクト上にコライダーコンポーネントが必要です。オブジェクトの1つにも剛体が必要です。それ以上の助けが必要な場合は、コードとコンテキストを表示してください。 – Maakep

答えて

1

あなたの質問を正しく読んだら、ゲーム用のランダムメッシュを自動生成していますが、まだコライダーがありません。 C#でオブジェクトの衝突を生成するには、次の例を参照してください。

using UnityEngine; 
using System.Collections; 

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

あなたが生成されているゲームオブジェクトに衝突型加速器コンポーネントを追加する必要があります。選択したものは、作成したメッシュによって異なります。したがって、キューブメッシュを生成する場合は、ボックスコライダーを選択します。

あなたがあなた自身のメッシュの代わりに、より複雑なプリミティブを作成しているなら、あなたは「MeshCollider」を適用することができます。ただし、実行時に独自のメッシュを作成している場合は、異常なアーチファクトが発生する可能性があることに注意してください。 [ユニティ衝突検出されていない]の

+1

一般的な構文を使用する方が良いです、タイプが間違っている場合は、コンパイル時にエラーが発生しますが、文字列の構文はありません。 'SphereCollider sc = gameObject.AddComponent SphereColliderとしての() – Galandil

+0

実際には文字列形式はUnity 5で廃止されました。私は答えを調整します:) –

+0

ありがとうございました。私は疑問が気まずかったことを知っています。私はこのすべてに慣れていないので、いくつかのコードを投稿するのを忘れました。あなたはすべて少し助けてくれました。私はあなたのコードを適用したときにそれがうまくいったら通知します –

関連する問題