Warum bewege ich mich automatisch in Unity bei jedem Spiel?
Guten Morgen,
ich wollte fragen warum ich in Unity automatisch bewege in einem 2d game nach oben links und in einen 3d game nach links.
Habe schon mehrere Scripts probiert hat aber alles nicht geklappt :(
Wäre cool wenn ihr mir helfen könntet
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);
}
}
}
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?
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 „*“.
den scipt habe ich oben rein geschrieben :)