2017-02-27 3 views
-4

Ich habe ein 3D-Spiel, das zufällig generiert wird, wenn Sie auf Play drücken. Die Sache ist, dass Objekte nicht mit einer Kollision erzeugt werden und Charaktere sich durch Wände bewegen. Was ist der notwendige Code für ein Objekt, das mit einer Kollision in C# generiert werden soll?Unity 3D Kollision von Objekten

+1

Mögliche Duplikat [Unity Kollision nicht erkannt] hilft (http://stackoverflow.com/questions/36353310/unity-collision-not-being-detected) – thodic

+0

1. UnityScript ist eine andere Sprache als C# 2. Was bedeutet * "Objekte generieren keine Kolonie" * bedeuten? Sind ihnen Collider und/oder Starrkörper zugeordnet? – UnholySheep

+0

Sie benötigen eine Kolliderkomponente auf den Objekten, damit Kollisionen funktionieren. Eines der Objekte benötigt auch einen Starrkörper. Zeigen Sie Ihren Code und mehr Kontext, wenn Sie mehr Hilfe benötigen. – Maakep

Antwort

1

Ok, wenn ich deine Frage richtig gelesen habe, erzeugst du automatisch Zufallsnetze für dein Spiel, aber sie haben noch keine Collider auf ihnen. Um einen Collider für ein Objekt in C# siehe folgendes Beispiel zu erzeugen:

using UnityEngine; 
using System.Collections; 

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

Sie benötigen einen Collider-Komponente auf die Gameobject hinzufügen Sie generieren. Die von Ihnen gewählte hängt von dem von Ihnen erstellten Netz ab. Wenn Sie also Cube-Netze generieren, wählen Sie einen Box-Collider.

Wenn Sie eigene Meshes anstelle von komplexeren Primitiven erstellen, können Sie einen "MeshCollider" anwenden. Aber seien Sie gewarnt, wenn Sie zur Laufzeit ein eigenes Mesh erstellen, können Sie ungewöhnliche Artefakte erhalten.

Hoffnung, die

+1

Es ist besser, die generische Syntax zu verwenden, wenn der Typ falsch geschrieben wird, erhalten Sie einen Fehler beim Kompilieren, während die Zeichenfolge-Syntax nicht. 'SphereCollider sc = gameObject.AddComponent () als SphereCollider;' – Galandil

+0

Sie sind absolut richtig Sir, in der Tat ist das String-Format jetzt in Unity 5 veraltet und ich werde meine Antwort anpassen :) –

+0

Vielen Dank. Ich weiß, dass die Frage dumm war und ich habe vergessen, etwas Code zu posten, weil ich neu in all dem bin. Sie haben alle ein wenig geholfen. Ich werde Sie auf dem Laufenden halten, wenn ich Ihren Code anwende, wenn es funktioniert –