Jump to content
Unity Insider Forum

Meine Figur bewegt sich Grundlos nach Linksoben


ChristophOp

Recommended Posts

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

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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...