Damian izz back Geschrieben 14. Juni 2019 Melden Share Geschrieben 14. Juni 2019 Guten Abend Ich befinde mich zurzeit in der Endphase meines Projekts und brauche noch einmal eure Hilfe. Ich habe für meine zwei Spielfiguren je einen BoxCollider erstellt. Ich habe auch die Animationen, welche die Figur abspielen sollte vorbereitet. Mein Anliegen ist jedoch, falls die eine Spielfigur meine Schubsanimieung abspielt und die Hände der Spielfigur in Kontakt mit der zweiten Spielfigur bzw. dem Collider tritt, sollte die zweite Spielfigur eine andere Animation abspielen, nun die Frage, wie kann man dies erstellen? Gibt es einen gewissen Code bzw. einen Befehl, der dies ermöglicht oder etwas anderes? Wäre wirklich um jede Antwort dankbar Gruss Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Das ist eigentlich recht simpel. Ich nehme an du hast bereits ColliderBoxen auf den Händen der Jeweiligen Spielfiguren, diese setzt du auf isTrigger. Dann machst du ein Skript welches auf die Boxen welches abfragt onTriggerEnter, damit du nicht alles Triggerst kannst du entweder separate Layers verwenden oder das ganze über Tags regeln. Jetzt geh ich mal davon aus, dass dort wo die Box von deiner Spielfigur auch die Animationskomponente drauf ist. Dann kannst du dir diese einfach holen und über den animationsTrigger oder bool, je nach dem wie du die Animation steuerst das ganze triggern. Etwa so: public class HandSkript : MonoBehaviour { public string Spielfigur = "a"; private void OnTriggerEnter(Collider other) { if (other.tag == Spielfigur) { Animator animator = other.GetComponent<Animator>(); animator.SetTrigger("Schubsen"); } } } im public string Spielfigur kannst du dann im Inspektor eintragen ob es SpielfigurA oder SpielfigurB ist. Dann setzt du noch einen Tag mit a oder b bei den entsprechenden Spielfiguren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Hallo Ich habe es nach deinen Angaben versucht, leider hat dies nicht geklappt. Was du geschrieben hast: Jetzt geh ich mal davon aus, dass dort wo die Box von deiner Spielfigur auch die Animationskomponente drauf ist. Ich verstehe nicht genau, was du mit diesem Satz meinst. Ich habe die Animationen nicht in den BoxCollider, wüsste nicht wie das gehen sollte, oder ich verstehe dich falsch XD Ich habe alle Animationen mit je einem Script eingerichtet. Ich habe zwar noch einen Animator Controller, wo auch die Animationen drauf sind, aber den habe ich gar nicht verwendet. Kannst du mit diesem Satz genauer schildern was du damit meinst? So habe ich die Animationen aufgebaut: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Animations2 : MonoBehaviour { public Animator anim; // Start is called before the first frame update void Start() { anim = GetComponent<Animator>(); } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.O)) { anim.Play("block"); } if (Input.GetKeyDown(KeyCode.K)) { anim.Play("high kick"); } if (Input.GetKeyDown(KeyCode.L)) { anim.Play("attack"); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Du hast ein GameObjekt namens Spielfigur, richtig? Darauf ist eine Komponente mit dem BoxCollider? Das meinte ich nur damit, dass sich beides auf dem selben GameObjekt befindet. Du kannst statt dem animator auch dein eigenes Animationsskript holen, ist kein Problem und dort dann die Animation triggern. Weiss hald nicht wie das Skript heisst, mit dem du die Animationen steuerst. Aber bleibt sich vom Sprinzip her gleich. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Sorry bin ein wenig verblödet (is halt Wochenende :D). Ich habe für die Spielfigur an sich nen BoxCollider, für beide Hände je einen Sphere Collider und für den linken Fuss auch. Macht dies einen Unterschied oder nicht? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Also ich habe mir es so gedacht, dass du deine SpielfigurA mit dem Boxcollider den Tag "a" gibst, oder wie immer du das nennen möchtest, bei den beiden Sphere Collider würde ich den Tag weglassen, damit du die Animation nicht auch triggerst wenn sich die Händer der beiden Spieler berühren. Das gleiche machst du mit SpielfigurB. Und auf die SphereCollider bzw. auf das entsprechende GameObjekt wo die drauf sind, machst du das Skript mit drauf und setzt die Spielfigur Variable darin entsprechend dem anderen Spieler, also bei SpielfigurA auf b, und bei SpielfigurB auf a. Bei den Füssen kannst du natürlich das gleiche machen, wenn du das nicht separieren möchtest. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Hast du dies mit dem Tag gemeint? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Der Tag des Gameobjekts(SpielfigurA), sollte dann im Skript der Tag des anderen Gameobjekts(SpielfigurB) sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Ich habe jetzt einfach einen neuen Tag hinzugefügt, da bei mir weder Tag A noch B aufgetaucht sind ich hoffe, dass dies auch zum Ziel führt und nicht das ich etwas falsch gemacht habe.. Komme mir ehrlich gesagt ein wenig blöd vor XD Aber vielen Dank, dass du dich so engagierst für meine Probleme Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Die Tags musst du natürlich erstellen, über addTag. Hab dir mal ein kleines example gemacht, hoffe es hilft dir weiter. mit Pfeiltasten kannst du dich bewegen, mit taste 1 oder 2 kannst du zwischen den Spielern wechseln. https://www.dropbox.com/s/8ni9x681he2tf8i/HitExample.unitypackage?dl=0 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Entweder hast du nicht ganz verstanden was mein Ziel bzw. was ich machen möchte oder ich bin einfach blöd... Habe das Gefühl wir reden uns einander vorbei. Deswegen folgen poste ich nun e inpaar Screenshots damit es ein wenig verständlicher ist. Wenn die erste Animation, welche auf dem ersten Screenshot erkennbar ist abgespielt wird und die Hitbox des anderen trifft, sollte die Animation im zweiten Screenshot abgespielt werden. Evtl hast du mich schon richtig verstanden und ich kann deine Tipp einfach nicht umsetzen, weil ich etwas nicht verstehe... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Fällt mir gerade etwas schwer dir zu helfen 🙃 Also ich sehe bei "Zweiter Charkter" keine SphereCollider bei den Händen. Also weiss ich nicht wie du das triggern möchtest. Ich gehe mal davon aus, dass du einfach eine "Attack" Animation(Zweiter Charakter) möchtest, welche die dann bei "Spielfigur1" die Animation "foot Back" triggert, wenn Spielfigur1 davon getroffen wird, seh ich das richtig? Wenn dem so ist, bleibt sich mein Code gleich. Ansonsten hab ich dein Problem wohl falsch verstanden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Ja so wollte ich es, die eine Spielfigur spielt die Animation attack ab und wenn die andere von der getroffen wird, spielt diese die foot back Animation ab. Bedeutet das ich kann deinen Code verwenden? (Was die SphereColliders angehen, die habe ich später hinzugefügt, ist ein älterer Screenshot) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 vor 8 Minuten schrieb Damian izz back: Bedeutet das ich kann deinen Code verwenden? Natürlich, wenn du den Code richtig impementierst Also ich würde wenn die Attack Animation startet, den entsprechenden Collider(Faust/Foot) aktivieren und wenn sie endet, ihn wieder deaktivieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Ja guuuuut, welchen Code bzw. Befehl eignet sich denn dafür gut weisst du das? Das Script, welches du in die DropBox hinzugefügt hast um den Player zu ändern wäre nicht nötig gewesen. Man sollte nur in der Lage sein zu zweit auf einer Tastatur zu spielen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 15. Juni 2019 Melden Share Geschrieben 15. Juni 2019 Da ich immer noch keine Ahnung habe wie du deine Animationen managest, würde ich einfach beim Start der Animtion eine coroutine setzen, welche die gleiche Zeit hat wie deine Animation. vor 5 Minuten schrieb Damian izz back: Ja guuuuut, welchen Code bzw. Befehl eignet sich denn dafür gut weisst du das? 🙃 Ich denke dein Problem ist zu spezifisch, wenn du willst, kannst du mir dein Project als pm schicken, ansonsten weiss ich auch nicht weiter.. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Damian izz back Geschrieben 15. Juni 2019 Autor Melden Share Geschrieben 15. Juni 2019 Wenn es dir nichts ausmacht würde ich es dir gerne senden, aber habe nun ein anderes Problem Ich wollte mir Unity erneut installieren, da es mir nicht gelungen ist mein Projekt für Mac kompartibel zu machen durch building, und jetzt startet sich Unity nicht mehr D; Muss erstmal Unity wieder zum laufen bringen 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.