2015-05-15 4 views
12

Ich benutze Water4Advance, um eine Ozeanwelle in Unity3d 5.0 zu simulieren. Ich habe mein Flugzeug in Runtime mit Gerstner Displace versetzt. Ich sehe, wie das Netz verformt wird, und ich füge einen MeshCollider zu ihm hinzu und ich mag dieses Collidernetz in der Laufzeit erneuern. Ich arbeite diese auf Unity 4.6 mit diesem Skript:Unity3d 5 WavePro Dynamic MeshCollider

MeshCollider collider = GetComponent<MeshCollider>(); 
Mesh mesh = GetComponent<MeshFilter>().mesh; 
collider.sharedMesh = null; 
collider.sharedMesh = mesh; 

Aber jetzt bekam ich nur die flache ursprüngliche Ebene Fertig. enter image description here

Wie kann ich diesen MeshCollider mit dem verschobenen Mesh aktualisieren?

+0

Wann oder wie oft ordnen Sie das Netz zum Collider? – Agumander

+0

Im tun auf Update – joreldraw

Antwort

4

Try this:

Mesh myMesh = this.GetComponent<MeshFilter>().mesh; 
DestroyImmediate(this.GetComponent<MeshCollider>()); 
var collider = this.AddComponent<MeshCollider>(); 
collider.sharedMesh = myMesh; 

Von hier aus:

http://answers.unity3d.com/questions/446910/changing-mesh-collider-at-run-time.html

+0

Nicht für mich arbeiten. Ich probiere das, aber ich bekomme das Water4 modifizierte Mesh nicht am Collider. – joreldraw

+0

Hmm - könnten Sie ein kleines Sample-Unity-Beispielprojekt veröffentlichen, das dies demonstriert? – scotru

+0

https://drive.google.com/file/d/0B8A2kG9bh7_PRVB3RU5ORUdIX3M/view?usp=sharing – joreldraw