Jump to content
Unity Insider Forum

GameObjekt wird direkt Zerstört. Hilfe. :(


Peanut

Recommended Posts

Hallo liebes Unity Forum :)

Ich habe ein kleines Problem unzwar möchte ich meinen Charakter ein Buch schmeißen lassen . Dieses soll bei Collision eines Objektes zerstört werden und dem Objekt schaden zufügen. Nur wird das Buch scheinbar direkt beim spawnen zerstört. Hier ist mein Script

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BookDamage : MonoBehaviour {


    public float damage = 1;

     void OnTriggerEnter2D(Collider2D other)
    {
        if (!other.CompareTag("Player"))
        {
            other.SendMessage("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
            Destroy(gameObject);
        }
    }

    void Start () {
        
    }
    
    
    void Update () {
        
    }
}

 

Ich hab keine Idee woran es liegen kann. Ohne das Skript spawnt das Buch ganz normal und fliegt weiter und sobald ich Destroy(gameObject); spawnt das Buch normal fliegt aber durch jeden Collider durch.

Hat jemand ne Idee woran es liegen kann  :,D?
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du zeigst ja hier nur den Code, der das Objekt zerstört, wenn es einen gewissen Trigger trifft. Daraus kann ich nicht erkennen, warum das Objekt beim Spawnen schon zerstört werden sollte.
Genauso weiß ich auch nicht, ob dein Objekt einen Collider, einen Trigger und einen Rigidbody hat.

Jedenfalls ist der Code, so wie er ist, funktionsfähig. Es muss aber midestens ein Objekt einen Trigger-Collider haben und eines der Objekte muss auch einen Rigidbody haben. Außerdem muss die zu treffende Figur einen Tag mit Namen "Player" haben.
Wenn jetzt dein Buch lediglich einen Trigger hat, wird es natürlich durch jeden Collider durchfliegen können, solange es nicht ein Objekt trifft, welches den Tag "Player" hat. Denn Trigger erkennen nur andere Trigger oder Collider, sie reagiern mit denen aber nicht physikalisch.
Deswegen sollte dein Buch nicht triggern sondern kollidieren.


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Malzbie hat recht, nur hat er vermutlich das "!" übersehen. Sind alle deine Spielfigurobjekte mit dem Tag "Player" getaggt? Sollten sie sein, ansonsten wird das Buch bereits durch ggf. vorhandene Trigger am Spieler zerstört. Objekte die das Buch treffen soll, dürfen diesen Tag dann allerdings nicht haben!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Buch hat also einen Boxcollider, der auf trigger geschaltet ist. Das bedeutet, dass es "nur " triggern wird. Es wird mit nichts zusammenstoßen und durch alle Objekte durchfliegen.

Dein Script, falls es noch genauso ist wie du oben gepostet hast, fragt ab, ob es mit irgend einem anderen Collider zur berührung kommt. Wenn ja, fragt es weiterhin ab, ob dieser andere Collider "nicht" den Tag Player hat. Hat der andere Collider nicht diesen Tag, dann zerstört es sich und sendet an den anderen Collider einen Schadenswert. Hat er den Tag Player, dann passiert nichts.
Du willst also bei allen Objekten, die nicht den Tag Player haben, dass das Buch sich zerstört.

Wenn dein Buch jetzt also direkt bei deiner Spielfigur instanziert wird, und dieses Spielfigur auch nicht den Tag Player hat, dann zerstört es sich auch dort sofort!
Schau also einfach mal, ob dein Player auch den Tag hat, den er braucht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...