Jump to content
Unity Insider Forum

Modelle bei Mausklick austauschen


RealNiclas

Recommended Posts

Guten Tag,

ich habe ein Problem bei folgendem Sachverhalt:
Wenn der Spieler auf ein Objekt klickt, soll dieses ein anderes Modell bekommen, so das z.B. aus einem Würfel eine Kugel wird.

Wie man auf das Objekt zugreift, auf welches der Spieler klickt, habe ich schon verstanden, nur scheitert es noch daran, dass 3D Modell durch ein anderes zu ersetzten.
Weiß jemand wie man das löst?

Gruß: Niclas

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein 3D-Modell wird von einem MeshRenderer gezeichnet, der die Info über das Mesh aber nicht selber handhabt. Dafür gibt es die MeshFilter-Komponente.

Wenn du nur das Modell austauschen willst (also das Material dasselbe bleibt), dann brauchst du den MeshFilter:

private MeshFilter meshFilter;

private void Awake()
{
  meshFilter = GetComponent<MeshFilter>();
}

Und zum Austauschen

meshFilter.mesh = newMesh;

newMesh kannst du wiederum über ein Feld besorgen, in das du dein Mesh aus den Assets reinziehst.

public Mesh newMesh;

Wenn du jetzt auch das Material austauschen willst, dann könntest du über den MeshRenderer gehen, der das Material handhabt. Allerdings ist spätestens hier der Punkt erreicht, wo ich sagen würde: Nutz einfach mehrere GameObjects. Man könnte Prefabs instanziieren, oder auch einfach alle Modelle gleichzeitig einem Parent unterordnen und alle durch Deaktivierung unsichtbar machen, die gerade nicht präsent sein sollen.

Also

  • Parent mit Austausch-Script und ggf. Collider zum Anklicken
    • Würfel
    • Kugel (GameObject deaktiviert)

Das Austausch-Script würde dann so aussehen:

public GameObject cube;
public GameObject sphere;

private void OnMouseDown()
{
  cube.SetActive(false);
  sphere.SetActive(true);
}

Das ziehst du auf den Parent, und danach ziehst du den Würfel und die Kugel in die entsprechenden Slots im Inspektor.

Sobald du mehr Objekte hast als zwei, würde ich aber zu einem Array wechseln.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...