Jump to content
Unity Insider Forum
ChristophOp

Meine Figur bewegt sich Grundlos nach Linksoben

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);
        }
    }
}

 

Share this post


Link to post
Share on other sites

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

  • Thanks 1

Share this post


Link to post
Share on other sites
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

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×