Jump to content
Unity Insider Forum

Kollision von zwei Würfeln - 2x den Sound abspielen?


Leftwing

Recommended Posts

Hallo!

Schon lange versuche ich mich mit Unity zu beschäftigen - aber leider komme ich immer nur kurz dazu. Jetzt wieder ein Versuch, intensiver einzusteigen.

Bin jetzt auf folgendes Problem gestoßen: wenn ich mehrere Würfel fallen lasse (um den Wurf von z.B. 6 Würfeln zu simulieren), will ich bei Collision natürlich nur einen Sound abspielen lassen.

Aus meiner Sicht kann ich hier nicht einfach ein OnCollisionEnter (oder ähnliches) an die Objekte hängen und dann einfach einen Sound abspielen. Das hätte ja zur Folge, dass wenn "Würfel 1" und "Würfel 2" aneinanderstoßen, der Sound 2x abgespielt wird. Ich glaube, dass bei einer Kollision zwischen zwei Objekten ein Sound "genügt".
Wenn der Würfel an die Wand stößt, ist OnCollisionEnter üblicherweise wohl auch nicht an der Wand, so dass in dem Fall der Sound auch nur 1x gespielt werden würde.

Wie kann ich in so einem Fall vorgehen, dass eben (zwei Objekte die allein für sich bei Kollisionen gegen die Wand einen Sound abspielen) nicht 2x der Sound gespielt wird, sondern nur 1x?

Hoffe, die Frage ist verständlich ausgedrückt.

Viele Grüße
Leftwing

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist eine ziemlich coole Frage. Ich glaube, die einfachste Lösung ist, ein Merkmal der Würfel zu nehmen, das 1. vergleichbar und 2. immer unterschiedlich ist. Dann vergleichen sich beide Würfel mit dem jeweils anderen und der "höhere" (oder halt der "niedrigere") übernimmt die Aufgabe, den Sound abzuspielen. Anbieten würde sich da die Instance ID.

private int myRigidbodyId;

private void Awake()
{
  myRigidbodyId = GetComponent<Rigidbody>().GetInstanceID();;
}

private void OnCollisionEnter(Collision collision)
{
  if (myRigidbodyId < collision.rigidbody.GetInstanceID())
  {
    PlaySound();
  }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...