denisspain Geschrieben 4. Oktober 2020 Melden Share Geschrieben 4. Oktober 2020 Guten Tag, Mein Charakter konnte laufen Springen und ducken. Dann habe ich die Animationen angefügt und jetzt geht er nur noch (mit idle Animation) aber läuft, springt und crouched nicht. AUch die anderen Animationen macht der nicht. Braucht ihr noch mehr fotos o.ä.? Das ist der Code using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { public CharacterController2D controller = default; public Animator animator; public float runSpeed = 40f; float horizontalMove = 0f; bool jump = false; bool crouch = false; void Start() { } // Update is called once per frame void Update() { horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed; animator.SetFloat("Speed", Mathf.Abs(horizontalMove)); if (Input.GetButtonDown("Jump")) { jump = true ; animator.SetBool("Jumping", true); } if (Input.GetButtonDown("Crouch")) { crouch = true; } else if (Input.GetButtonUp("Crouch")) { crouch = false; } } public void OnLanding() { animator.SetBool("Jumping", false); } public void OnCrouching(bool Crouching) { animator.SetBool("Crouching", Crouching); } void FixedUpdate() { //Move Our Character controller.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump); jump = false; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 4. Oktober 2020 Autor Melden Share Geschrieben 4. Oktober 2020 Außerdem gibt es den Fehler im nachhinein die ganze Zeit während des Spiels.: UnassignedReferenceException: The variable animator of PlayerMovement has not been assigned. You probably need to assign the animator variable of the PlayerMovement script in the inspector. UnityEngine.Animator.SetFloat (System.String name, System.Single value) (at <947776085c2a45bebc6afa3092a3f6ed>:0) PlayerMovement.Update () (at Assets/PlayerMovement.cs:29) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 4. Oktober 2020 Melden Share Geschrieben 4. Oktober 2020 Die Fehlermeldung besagt, dass dein Animator den Paramater, den du ansprechen willst, so nicht hat. animator.SetFloat("Speed", Mathf.Abs(horizontalMove)); Schau mal im Animator, ob der Parameter wirklich genauso geschrieben ist, wie du ihn hier ansprichst. Groß/Kleinschreibung könnte z.B. das Problem sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 4. Oktober 2020 Autor Melden Share Geschrieben 4. Oktober 2020 Speed steht dort genauso eigentlich. oder verstehe ich das Falsch? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 4. Oktober 2020 Autor Melden Share Geschrieben 4. Oktober 2020 Okay dort war wohl alles richtig, ich hatte aber wohl dem Script Movement die zu animierende Figur nicht eingefügt. Jetzt klappt die Animation springen und ducken, allerdings fängt der mit dem ducken an und springt nur. Run und Idle muss ich nochmal überprüfen. Das werde ich jetzt die nächste zeit mir mal genauer anschauen. Sollte ich da eine lösung oder das Problem finden, poste ich das. DAnke! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 4. Oktober 2020 Autor Melden Share Geschrieben 4. Oktober 2020 Ich habe jetzt irgendwie das Problem, dass meine Animation etwas "hängt" Meine Figur wechselt im Idle modus die ganze Zeit von Idle zu crouching und das die ganze zeit hintereinander bzw gleichzeitig. ICh verstehe da nicht, wo da der fehler ist in der Programmierung /den Code vom Spieler habe ich auch keinen fehler gefunden. da ist die Animation anbei. wenn ich das Crouching, bzw. die animation (die Pfeile) rausnehme, dann klappen alle anderen animationen, also idle, run und jump. nur die crouching animation macht mir probleme. vielleicht hat jemand einen rat Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 5. Oktober 2020 Melden Share Geschrieben 5. Oktober 2020 Also so wie ich das sehe, kann ja nur in die Crouching Animation gesprungen werden, wenn Crouching auch true ist. Also muss diese Variable auch auf true gesetzt werden. Es reicht ja aus, wenn es nur ganz kurz ist. Aber wenn dein Code noch genauso ist, wie er oben gepostet wurde, dann sollte das eigentlich auch nicht sein. Mach doch mal in die Crouch Void eine Print-Ausgabe rein. Die dir den Crouch Wert in dide Console auswirft. Also: public void OnCrouching(bool Crouching) { animator.SetBool("Crouching", Crouching); print(Crouching); // <- das hier einfügen } Wenn du dann in der Console ständig Ausgaben siehst, dann spring auch ständig was in die Void rein und das sollte ja wohl nicht sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 7. Oktober 2020 Autor Melden Share Geschrieben 7. Oktober 2020 Am 5.10.2020 um 18:52 schrieb malzbie: Also so wie ich das sehe, kann ja nur in die Crouching Animation gesprungen werden, wenn Crouching auch true ist. Also muss diese Variable auch auf true gesetzt werden. Es reicht ja aus, wenn es nur ganz kurz ist. Aber wenn dein Code noch genauso ist, wie er oben gepostet wurde, dann sollte das eigentlich auch nicht sein. Mach doch mal in die Crouch Void eine Print-Ausgabe rein. Die dir den Crouch Wert in dide Console auswirft. Also: public void OnCrouching(bool Crouching) { animator.SetBool("Crouching", Crouching); print(Crouching); // <- das hier einfügen } Wenn du dann in der Console ständig Ausgaben siehst, dann spring auch ständig was in die Void rein und das sollte ja wohl nicht sein. Vielen Dank für die super idee! Das Ergebnis ist angehangen. Ohne, dass ich irgendwas drücke wechselt der am laufenden Bank auf true/false , wie man am Bild auch unschwer erkennt. das macht mich jetzt noch viel stutziger ._. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 8. Oktober 2020 Melden Share Geschrieben 8. Oktober 2020 Ok. Dann musst du mal schauen, von wo aus in diese void rein gesprungen wird. Also bei welcher Bedingung das passiert. Kommt das vom CharacterController? Wird da evtl. eine Joystickachse abgefragt? Irgendetwas scheint genau an dem Punkt zu sein wo Crouching von true auf false geht. Du musst jetzt raus finden was das ist. Es kann von einem Eingabegerät, z.B.einem Joystick, kommen, es kann aber auch eine Entfernungsmessung mittels Raycast sein. Dein Animator macht jedenfalls keine Probleme, denn er verarbeitet nur die Signale die von außen rein kommen. Das macht er genau so, wie es sein soll. Die Signale sind das Problem! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
denisspain Geschrieben 8. Oktober 2020 Autor Melden Share Geschrieben 8. Oktober 2020 vor 6 Stunden schrieb malzbie: Ok. Dann musst du mal schauen, von wo aus in diese void rein gesprungen wird. Also bei welcher Bedingung das passiert. Kommt das vom CharacterController? Wird da evtl. eine Joystickachse abgefragt? Irgendetwas scheint genau an dem Punkt zu sein wo Crouching von true auf false geht. Du musst jetzt raus finden was das ist. Es kann von einem Eingabegerät, z.B.einem Joystick, kommen, es kann aber auch eine Entfernungsmessung mittels Raycast sein. Dein Animator macht jedenfalls keine Probleme, denn er verarbeitet nur die Signale die von außen rein kommen. Das macht er genau so, wie es sein soll. Die Signale sind das Problem! Eine vielleicht dumme Frage, aber: dh jetzt für mich, ich schaue in meinen weiteren Scripten nach, wo die void onCrouching angesprochen wird und prüfe da das script? oder sehe ich in der Console, wo der sich mit true und false abwechselt? mit dem Controller kann ich mir kaum vorstellen, da ich weder Controller angeschlossen habe, noch einen eingestellt hatte und mit der Animation habe ich mir fast gedacht, aber danke für die erklärung! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 8. Oktober 2020 Melden Share Geschrieben 8. Oktober 2020 Ja, du must selber rausfinden, von wo her die void angesprochen wird. Wenn das Script von dir ist, solltest du wissen, wo es her kommt, denn dann hast du die void ja nicht ohne Grund da drin. Wenn es nicht von dir ist, dann musst du dich durch die anderen Scripte pflügen. Es wird irgendwo beim Charactercontroller zu finden sein, schätze ich. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 8. Oktober 2020 Melden Share Geschrieben 8. Oktober 2020 wenn du weisst wo die Fuction/Void ist, kannst du ja ein Debug.Log("test"); einfügen, wenn du dann in der Console das anklickst, müsstest du sehen wo es ausgeführt wurde und woher es angesprochen wurde. in meinem Fall hier wurde die Function Shoot() im WeaponBullets Script ausgeführt und vom PlayerMovement2D Script angesprochen. 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.