C# / Unity3D: Warum bewegt sich der Spieler nicht?

2 Antworten

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player_Move : MonoBehaviour
{
  [SerializeField]
  private float speed = 10f;

  Rigidbody2D rb;

  void Start()
  {
    rb = GetComponent<Rigidbody2D>();
  }

  void Update()
  {
   float move = Input.GetAxis("Horizontal");
  }

  void Fixedupdate()
  {
    rb.velocity = new Vector2(speed * move, rb.velocity.y);
  }
}

Ich weiß ist etwas Spät aber du hast speed nie festgelegt, bzw. vergessen im editor zu verändern. Außerdem muss der Input immer im Update festgelegt werden da es sonst Input lag gibt.

Hier die Verbesserte Version:

Woher ich das weiß:eigene Erfahrung

Du musst keine zusätzlichen Variablen extra für Bewegungen benutzen, außerdem weiß ich nicht, wieso du einen Vector2 für Geschwindigkeit angelegt hast.

Du musst auf transform.Translate zugreifen.

void Update()
{
   transform.Translate(Input.GetAxis("Horizontal") * speed * Time.deltaTime);

//Time.deltaTime gibt an, dass sich der Spieler konstant weiterbewegen soll
Woher ich das weiß:eigene Erfahrung