Unity 2D Collider berührung abfrage?
Hallo! Ich möchte ein Jump N Run mit Unity 2D Programmieren. Nun bin Ich bei dem Problem, dass mein Charakter sterben soll, wenn er einen gegner berührt. Kann mir einer sagen, wie man das mit einer If-Abfrage hinbekommt? Bin noch anfänger, also bitte nicht so kompliziert. Schnelle Antwort bitte, bin echt am verzweifeln!
2 Antworten
void OnCollisionEnter(Collision _collision) { if(_collision.transform.tag == "Enemy" ) { // Player dies } }
So würde das ungefähr aussehen, solltest dem Gegner natürlich noch den Tag "Enemy" verpassen. Da du wie du selber sagst Anfänger bist lass mich dir eine Buch Empfehlung geben die einen sehr guten Einstieg bietet wenn es dich stark interessiert: http://www.amazon.de/Spiele-entwickeln-mit-Unity-3D-Games/dp/3446439390
Danke! Ich denke, da es mir recht viel Spaß macht und es manchmal schwer ist sich alles zu ergoogeln, werde ich mir vielleicht bald das Buch zulegen. Guter Tipp!
Zunächst brauch eines der Objekte einen Rigidbody2D. (Entweder dein Spieler oder der Gegner) dann brauchen beide Objekte einen 2D Collider. (einen Box Collier z.b.) Nun setzt du den Collider auf "IsTrigger". Einfach den Haken setzen. In deinem Script kannst du jetzt ganz einfach abfragen, ob ein Objekt in den Collider trifft. Das machst du so:
void OnTriggerEnter(Collider hit)
{
if(hit.gameObject.tag == "Enemy" )
{
// Spieler bekommt schaden
}
}
ehmm wahrscheinlich hast du vergessen (bzw ich habs auch nicht geschrieben) den Gegner mit dem Tag "Enemy" zu versehen.
Falls du nicht weißt wie das geht, beschreibe ich es dir mal: Also den Gegner auswählen, dann oben im Inspector auf Tag und da dann auf "Add Tag". Dann gehst du auf das Plus und benennst den Tag "Enemy". Nun wählst du nochmal dein Gegner aus und gehst wieder auf Tag und dort kannst du den nun deinen Gegner Tag auswählen.
Ich hoffe es war einigermaßen verständlich.
LG dosenbiiir
Also tags zuordnen und erstellen soweit war ich schon. Müssen die Objekte den gleichen layer haben? Wie auch immer mit der Beschreibung von BlackArma hats geklappt. Muss man vielleicht, wie ich das bei BlackArmas Methode auch machen musste, noch irgendwo 2D hinterhängen?
Ach mist ja sorry, das muss ein OnTriggerEnter2D sein weil du ja einen 2D Collider verwendest. Hatte den Code nach dem absenden nochmal neu geschrieben, damit der besser eingerückt war und dann hab ich das wohl vergessen wieder zu schreiben. Sorry ^^ Ja du kannst auch einfach die Methode von BlackArma benutzen, bei seinem Code wird halt überprüft ob 2 Objetke kollidieren und bei meiner ob ein Objekt in den Collider eintrifft. Macht keinen großen Unterschied :D
Geht irgendwie nicht... Woran kannst liegen? Sonst aber gut und einfach erklärt. Danke!