Jump to content
Unity Insider Forum

Collisioncheck ohne OnTrigger/OnCollision?


Tiwaz

Recommended Posts

Moin moin,

 

ich würd von einem Objekt gerne wissen ob es jetzt im Moment ein anderes triggert oder mit einem anderen Collider kollidiert.

 

Ich bräuchte die Information eigentlich nur in 1 spezifischen Frame und würds eigentlich recht ungern über OnTrigger/OnCollision mit nem Bool machen.. (Is spontan einfach contraintuitiv und verhältnismäßig zu aufwändig)

 

Es ist mir eigentlich auch egal mit was es kollidiert oder sonst was, nur ob.

Physics.OverlapSphere würd ich auch ungern hernehmen, dann noch lieber OnTrigger.

 

Gibt's da nen weniger umständlichen Weg?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit OnTrigger/OnCollision meinst du, dass bei Enter der bool auf true gesetzt wird, und bei Exit auf false, oder? Das würde ich da schon für den elegantesten Ansatz halten. Die Physik-Simulation läuft ja sowieso, und ob da jetzt OnTriggerEnter in einer Komponente aufgerufen wird oder nicht macht den Braten nicht fett, sofern du in OnTriggerEnter nicht unglaublich komplexe Operationen durchführst. Einen bool auf true setzen fällt nicht in diese Kategorie, auch wenn du diesen bool nur in einem einzigen Frame abfragst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm.. Hab mal mit OnTrigger/OnCollision probiert zu machen was ich will, funktioniert aber nicht zuverlässig.

Und der nötige Rigidbody versaut mir irgendwie meine Raycasts.

 

Wenn ich ein Objekt in einem anderen instanziere (was ich nicht unbedingt verbieten will) wird auch nix getriggert und man kann trotzdem das machen was man eben nicht können dürfte.

 

Naja, dann verschieb ich die "Problematik" auf wenn das System weiter fortgeschritten ist ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich ein Objekt in einem anderen instanziere (was ich nicht unbedingt verbieten will) wird auch nix getriggert und man kann trotzdem das machen was man eben nicht können dürfte.

 

Das dürfte eigentlich nicht sein. Normalerweise bekommst du, wenn du ein Objekt in einem anderen instanziierst gleich als erstes den OnTriggerEnter-Event. Ein Rigidbody sollte an sich auch keinen Einfluss auf Raycasts haben - die gucken ja nur nach Collidern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Raycasts schauen auch nach Trigger, Trigger muss man explizit von Raycasts ausschließen. Raycasts haben aber nichts mit dem Rigidbody zu tun.

 

OnTrigger/OnCollision ist auch recht einfach in eine Componente geschmissen, so umständlich erscheint mir das nicht:

 

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public CollisionChecker : MonoBehaviour
{
 private int triggerCount = 0;
 private int collisionCount = 0;

 public bool IsColliding { get { return collisionCount > 0; } }
 public bool IsTriggering { get { return triggerCount > 0; } }

 private void OnTriggerEnter(Collider other)
 {
triggerCount ++;
 }

 private void OnTriggerExit(Collider other)
 {
triggerCount --;
 }

 private void OnCollisionEnter(Collision collision)
 {
collisionCount ++;
 }

 private void OnCollisionExit(Collision collision)
 {
collisionCount --;
 }
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja nein ^^

 

Ist grad bisschen schwer zu erklären aber mir is gerade aufgefallen, dass es funktioniert wenn NUR das zu positionierende Objekte einen Rigidbody trägt.

Naja, dann lösch ich den Rigidbody beim Platzieren ^^

 

Und ich benutze bei den Raycasts ja gerade die Trigger und dass der Rigidbody eigentlich nix mit dem Raycast zu tun hat auch aber irgendwie klappts nich wenn beide Objekte nen Rigidbody haben. Dann ist totales Chaos.

 

Und die OnTrigger Sachen klappen ja auch super, nur hat dann der Raycast nicht mehr funktioniert.

Wenn ich nen Trigger(Childobject) getroffen hab, hab ich als Collider trotzdem das Parentobject zurückbekommen.

 

Ich probiers mal nochmal so.

 

@edit:

Ja, funktioniert eigentlich ganz gut.

Muss jetzt nur noch hinkriegen, dass die Trigger nur bei den richtigen Teilen triggern und keine Errors geworfen werden ^^

Danke euch

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...