Ich habe derzeit einen 2D -Plattformer, an dem ich arbeite, habe aber Probleme, dem Spiel zu sagen, wie ich auch in welchem Raum ich bewege. Derzeit habe ich 2 Räume, in denen mein Charakter 'Heroknight' sich bewegen kann. (Am Ende eines jeden Raums befand sich ein Trigger -Kollider, der die Kamerabewegung einleitete.) Das Objekt hatte jedoch mehrere Kreiskollider und löste daher die Funktion 4 -mal aus. Stattdessen habe ich mich entschlossen, den 2D -Kollider an der tatsächlichen "Tür" die Arbeit zu erledigen, und dies funktioniert perfekt für die 2 Räume, die ich eingerichtet habe Aktionen einmal. Räume? m_currentroomnumber wäre immer genau, da es um 1 inkrementiert wird, wenn ich mich durch die Türwege bewege. Aber ich möchte in der Lage sein, durch diese Tür zu gehen. Ich denke, meine Frage ist, wie ich dies erreichen kann, ohne ein neues Skript für jeden 2D -Kollider schreiben zu müssen, der in den Türen steht? Ich brauche eine Möglichkeit, zu differenzieren, welche Collider2d ich auslöste. Oder sind mehrere Ontriggerenter2D -Funktionen erforderlich? < /P>
Code: Select all
private void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log(collision.tag);
if (collision.tag == "Player")
{
if (m_player.m_currentRoomNumber == 0)
{
cam.enablePlayerCentering();
m_player.m_currentRoomNumber++;
}
else if (m_player.m_currentRoomNumber == 1)
{
m_player.m_currentRoomNumber--;
cam.recenterLastRoom();
}
}
}
Wenn dies nicht erreicht werden kann, kann es eine Möglichkeit haben, die OntriggerEvent2D zurück zum Spieler (Humknight) zu verschieben und ihn nur einmal auszulösen? /> Ich verstehe auch, dass es wahrscheinlich bessere Möglichkeiten gibt, mit der Kamera umzugehen, aber zukünftiger Code muss das Spiel wissen, in welchem Raum ich bin. Wenn meine Kamera funktioniert, ist dies leider nicht genug. < Br /> Entschuldigung für Verwirrung. Ich habe manchmal Probleme, mich selbst zu artikulieren, also habe ich versucht, gründlich zu sein.>