ChristophOp Geschrieben 3. Mai 2018 Melden Share Geschrieben 3. Mai 2018 Meine Figur bewegt sich Grundlos nach Linksoben manchmal gehtt es nach zwei Minuten wieder aber jedes mal wenn ich den Code verändere geht es weiter: Ich bin um jede Hilfe Froh LG Chris PS:Der Code falls euch es hilft. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spieler : MonoBehaviour { float factor = 10; public GameObject gewinn; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //Input float xEingabe = Input.GetAxis("Horizontal"); float yEingabe = Input.GetAxis("Vertical"); if (yEingabe < 0) { return; } //Position float xNeu = transform.position.x + xEingabe * factor * Time.deltaTime; if (xNeu > 8.3f) { xNeu = 8.3f; } if (xNeu < -8.3f) { xNeu = -8.3f; } float yNeu = transform.position.y + yEingabe * factor * Time.deltaTime; transform.position = new Vector3(xNeu, yNeu, 0); } private void OnCollisionEnter2D(Collision2D collision) { if(collision.gameObject.tag == "Gewinn") { float xNeu = Random.Range(-8.0f, 8.0f); float yNeu = 2.7f; gewinn.transform.position = new Vector3(xNeu, yNeu, 0); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Moraxno Geschrieben 5. Mai 2018 Melden Share Geschrieben 5. Mai 2018 Nutzt du als Inputgerät einen XBOX-Controller? Ich hatte bei meinem alten das Problem, dass die Analog-Sticks nicht mehr richtig zum Mittelpunkt zurückgeschnippt sind und ich immer irgendwo ein Input hatte. Probier einfach mal: float xEingabe = Input.GetAxis("Horizontal"); float yEingabe = Input.GetAxis("Vertical"); float dampening = 0.2f; if(Mathf.abs(xEingabe) <= dampening) { xEingabe = 0.0f; } if(Mathf.abs(yEingabe) <= dampening) { yEingabe = 0.0f; } Das prüft, ob der Betrag des Eingabewertes kleiner als "dampening" ist und falls ja setzt er die Eingabe auf 0.0. Falls dein Controller wirklich kleine Missinputs gibt, sollten die davon aufgefangen werden. GetAxis() liefert Werte zwischen -1.0 und 1.0 ... Spiel zur Not einfach mal mit den Werten für dampening zwischen 0.0 und 1.0 rum und guck ob das das Problem löst ;D Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
ChristophOp Geschrieben 5. Mai 2018 Autor Melden Share Geschrieben 5. Mai 2018 vor 10 Stunden schrieb Moraxno: float xEingabe = Input.GetAxis("Horizontal"); float yEingabe = Input.GetAxis("Vertical"); float dampening = 0.2f; if(Mathf.abs(xEingabe) <= dampening) { xEingabe = 0.0f; } if(Mathf.abs(yEingabe) <= dampening) { yEingabe = 0.0f; } Was meinst du mit abs bei mir ekennt er das nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Moraxno Geschrieben 5. Mai 2018 Melden Share Geschrieben 5. Mai 2018 Entschuldige, das war ein Tippfehler. Ich meinte Mathf.Abs() Hab die Großschreibung vergessen ;D Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
ChristophOp Geschrieben 9. Mai 2018 Autor Melden Share Geschrieben 9. Mai 2018 Nein hilft leider nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Seyshiro Geschrieben 10. Mai 2018 Melden Share Geschrieben 10. Mai 2018 Ich hab das Script mal so übernommen wie es ist und bei mir gibt es keine Probleme. Du könntest mal versuchen das hier: if (xEingabe != 0 || yEingabe != 0) { Debug.Log("x: " + xEingabe + " | y: " + yEingabe); } ans Ende deiner Update-Methode einzufügen und gucken, ob in der Console was ausgegeben wird, wenn sich deine Figur wieder von allein bewegt. Wenn ja, dann ist das Problem möglicherweise ein Hardwareproblem. Ansonsten gibt es noch die Möglichkeit, dass irgend ein anderes Script auf deine Figur zugreift und die Position verändert. Eine weitere Möglichkeit wäre (sofern deine Figur eine Rigidbody2D-Componente besitzt) das deine Figur aufgrund irgendwelcher Physics-Einstellung Bewegt wird. 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.