Jump to content
Unity Insider Forum

Ich pralle an meinen Collectables ab obwohl sie weg sind ?


Mino1337

Recommended Posts

Hallo,

ich habe zwei Arten von Collectables. Beide haben keinen Ridgidbody, einen Collider und das Häckchen bei isTrigger aktiviert.

 

Collectable Nr 1:

Ich frage in einem Script meiner Spielfigur OnTriggerEnter() ab ob collision.tag == CollectableNr1 ist. Wenn Ja dann Destroy ich das getriggerte Collectable und schreibe mir was gut.

 

Collectable Nr 2:

Ich habe jedes Collectable dieser Art in einer Liste zu stehen und wenn eines mit OnTriggerEnter() getroffen wurde und collision.tag == CollectableNr2 ist wird der Renderer dieses Collectables ausgeschalten und ich schreibe mir was gut.

 

 

Problem Nr 1:

Mein Raycast reagiert auf manche der CollectablesNr1, die betreffende Funktion sieht so aus:

hitU = Physics2D.Raycast(transform.position, transform.up, 1.0F);    

if (hitU && hitU.collider.tag != null && hitU.collider.tag != "ColectableNr1" && hitU.collider.tag != "ColectableNr2")
        {
		//Zeug

		}

 

Problem Nr 2:

Manche der ausgeblendeten CollectablesNr2 wirken wie eine Wand auf meinen Charakter obwohl sie keinen Rigidbody haben und nur als Trigger funktionieren sollen.

 

Habe ich irgendetwas nicht bedacht oder gibt es einen anderen Weg das Collider ausschliesslich als Trigger ohne weiteren Einfluss auf die Physik sind ? Ich finde es auch komisch das es bei jeder Instanz der Collectables anders zu sein scheint.

 

Danke für eure Anregungen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal was zum Rigidbody, denn da scheinst du noch nicht alles verinnerlich zu haben.

Ein Rigidbody ist wichtig, um überhaupt physikalische Dinge auszuwerten. Wenn deine Spielfigur einen Rigidbody hat, dann brauchen die Collectables keinen um eine Collision auszuwerten! (OnTriggerXXX() und OnCollisionXXX() ) Diese Funktionen werden trotzdem bei beiden Objekten, dem mit RB und auch dem ohne RB aufgerufen, wenn in den Scripts dieser Objekte eine solche Funktion genutzt wird.
Genauso prallt dein Player auch an allen Collidern, die nicht auf Trigger geschaltet sind, ab. Auch wenn diese Collider gar keinen RB haben. Nur einer der beiden Kollidierenden braucht einen RB!
Sollen die Körper der Schwerkraft folgen oder verschiebbar sein, dann brauchen sie natürlich einen RB, damit die Physik auch greift.

In deinem Script fragst du ab, ob der Ray irgendwas getroffen hat und übergibst die mögliche Info der Variable hitU.
Dann wertest du aus, ob das Objekt was hitU getroffen hat, überhaupt einen Tag hat. Und wenn ja , dass er nicht CollectableNr1 heisst und auch nicht CollectableNr2 heisst.

Es soll also einen Tag haben, aber kein Cellectable sein. Nur dann wird das Zeug ausgeführt.
Und warum? Was hat das mit deinem Problem zu tun? Dieser Bereich im Script fragt ja genau das Gegenteil ab und bezieht sich auf alle Objekte mit nem Collider die einen Tag haben, aber eben kein Collectable sind.

Dein Problem schildert eigentlich, dass da irgendetwas sein muss, was "nicht" auf Trigger gestellt ist! Denn nur dann gibt es eine Collision. Ich hoffe ja, dass du nicht im Script irgendwo deinen Player stoppst, wenn er etwas triggert oder per Raycast ermittelt. Nicht, dass wir hier an der falschen Stelle suchen. ;)

Dann schaltest du beim 2ten Collectable den Renderer aus, wie du schreibst. Das verursacht aber nur, dass du das Obejkt nicht mehr siehst. Die anderen Eigenschaften sind immer noch da! Also der Trigger läuft weiter, mögliche Scripte laufen weiter, es ist immer noch ein Objekt in der Szene!

Du musst auch den Collider abschalten oder aber das ganze Objekt deaktivieren. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das mit dem CollectableNr1 hat sich erledigt und du hast Recht, ich habe den falschen Code in der schnelle gepostet. Das war Code von einer Vorversion 😕.

Zu CollectableNr2 hast du mir einen Wunderbaren Hinweis gegeben. Ich habe nicht daran gedacht das man auch den Collider ausschalten kann. Leider kann ich die CollectableNr2 nicht deaktivieren weil ich den Hinweis welches CollectableNr2 eingesammelt wurde noch benötige und nicht hunderte verschiedener Tags anlegen will. Vielleicht gibs auch eine andere Lösung die viel besser ist aber ich will den Code an der Stelle eigendlich nicht mehr anfassen =D.

Ich versuche jetzt mal die Collider mit auszuschalten und sehe was passiert.

Vielen Dank für deinen Hinweis.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...