STU Geschrieben 15. September 2020 Melden Share Geschrieben 15. September 2020 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); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Singular Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 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. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
STU Geschrieben 8. Oktober 2020 Autor Melden Share Geschrieben 8. Oktober 2020 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. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Singular Geschrieben 9. Oktober 2020 Melden Share Geschrieben 9. Oktober 2020 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? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.