C# / Unity3D: Warum bewegt sich der Spieler nicht?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player_Move : MonoBehaviour
{
public float speed;
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Fixedupdate()
{
float move = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(speed * move, rb.velocity.y);
}
}
Warum funktioniert das Skript 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