Warum bewege ich mich automatisch in Unity bei jedem Spiel?


30.05.2024, 11:15

das ist der scipt

2 Antworten

Hi, probiere es mal damit:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class playercontroll : MonoBehaviour

{

Rigidbody2D rb2D;

public float moveSpeed = 5f; // Geschwindigkeit des Spielers

void Start()

{

rb2D = GetComponent<Rigidbody2D>();

}

void FixedUpdate()

{

Vector2 input = new Vector2(

Input.GetAxis("Horizontal"),

Input.GetAxis("Vertical")

);

if (input != Vector2.zero)

{

Vector2 moveAmount = input.normalized * moveSpeed * Time.deltaTime;

rb2D.MovePosition(rb2D.position + moveAmount);

}

}

}

Woher ich das weiß:eigene Erfahrung

Wenn du position.transform.translate oder ähnliches benutzt, musst du ja einen Faktor haben, der alles mal null multipliziert, wenn du dich nicht bewegen willst. Also zum Beispiel einen Input einer Taste.
Wie sieht denn dein Script aus?


Eddie2703 
Beitragsersteller
 30.05.2024, 11:15

den scipt habe ich oben rein geschrieben :)

0
Tefal40  30.05.2024, 12:06
@Eddie2703

Du musst den Input multiplizieren, nicht addieren. Sonst ist deine Bewegungsgeschwindigkeit niemals null. Wenn du „* Input“ schreibst, wird ohne Input „* 0“ multipliziert. Wenn er addiert wird, hast du immer einen positiven Wert, auch wenn du keinen Input gibst, weil du ja mit deltaTime multiplizierst.

Also tausche das „+“ mit einem „*“.

0
Eddie2703 
Beitragsersteller
 30.05.2024, 12:17

jetzt passiert nichts mehr wenn ich W,A,S,D Drücke

0
Eddie2703 
Beitragsersteller
 30.05.2024, 12:22

Ich habe es geschafft danke

1