Jump to content
Unity Insider Forum
STU

Skript funktioniert nur einmal

Recommended Posts

Hi zusammen,

ich würde gerne einen Spieler durch einen anderen Spieler ersetzen. Dazu habe ich einen Collider, wenn dieser aktiviert wird verschwindet der erste und der zweite taucht auf. Das funktioniert auch soweit. Da ich das aber in beide Richtungen machen möchte, habe ich das GameObject mit nur dem Collider und dem Skript kopiert. Jetzt ist es aber so, dass der erste nicht mehr funktioniert sonder nur noch der zweite Collider. Kann mir jemand sagen woran das liegt? 

Danke

  private GameObject myHero;
    private GameObject myHeroVampire;
    private EdgeCollider2D myEdgeCollider2D;

    private void Start()
    {
        myHero = GameObject.Find("Hero");
        myHeroVampire = GameObject.Find("HeroVampire");
        myHeroVampire.gameObject.SetActive(false);
        myEdgeCollider2D = gameObject.GetComponent<EdgeCollider2D>();
    }   



    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject == myHero)
        {
            myEdgeCollider2D.enabled = false;
            myHero.gameObject.SetActive(false);
            myHeroVampire.transform.position = myHero.transform.position;
            myHeroVampire.gameObject.SetActive(true);

        }


        else if (collision.gameObject == myHeroVampire)
        {
            myEdgeCollider2D.enabled = false;
            myHeroVampire.gameObject.SetActive(false);
            myHero.transform.position = myHeroVampire.transform.position;
            myHero.gameObject.SetActive(true);
        }
    }

 

Share this post


Link to post
Share on other sites

Ich schließe gerade mal aus deinem Script, dass du dich in einen Vampir verwandeln möchtest an einem bestimmten Punkt. Wenn der Held diesen Punkt erreicht, soll er die Vampirform annehmen und als Vampir soll er sich wieder in einen Menschen (oder was auch immer) verwandeln.

Das ganze kann nur einmal funktionieren, weil du den Collider nach einer Verwandlung ausschaltest.

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject == myHero)
        {
            myEdgeCollider2D.enabled = false;      <-- Hier

Dann kann das ganze kein zweites Mal funktionieren.

Ich gehe davon aus, deine Intention dahinter war, dass der Spieler, auf der der Position des Triggers nicht jeden Frame hin und her verwandelt wird.

Am besten setzt du noch einen "bool heroTransfomed" den du stattdessen auf true setzt. Anschließend setzt du eine "OnTriggerExit2D" Methode, die den bool heroTransformed wieder auf false setzt. Jetzt noch eine if-Abfrage in die "OnTriggerEnter2D" Methode setzen die abfragt ob der Spieler sich wieder verwandeln kann.

Ich hoffe das war der Fehler und ich konnte dir helfen.

Share this post


Link to post
Share on other sites

Hi,

danke für deine Antwort. Ne eigentlich war es so gedacht, dass er sich an einer bestimmten Stelle verwandelt und sich erstmal nicht zurück verwandeln kann. Deswegen habe ich den Collider ausgeschalten. An einer anderen Stelle habe ich jetzt ein weiteres Objekt mit dem selben Skript und neuem Collider um mich zurück zu verwandeln. Dies funktioniert jetzt aber nicht mehr. Ich habe das Objekt einfach mit Strg +D kopiert. Das komische ist, dass nun nur noch das zweite funktioniert beim ersten Collider tut sich nichts.

 

Share this post


Link to post
Share on other sites

Wie sehen denn die Einstellungen im Inspektor aus? Normalerweise kannst du ohne Probleme Objekte Dublizieren und sie agieren eigenständig. Schau mal nach ob du versehentlich etwas im Inspektor geändert hast.

Andere Frage. Funktioniert es nur bei dem einen nicht? Also du hast gebiet 1 und gehst als Mensch rein und es geht und du hast Gebiet 2  wo du als Mensch reingehst und es geht nicht oder wie darf ich das verstehen?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...