Hallo ich habe ein Code in Unity wo es eine Fehlermeldung gibt die ich nicht verstehe. Könnt ihr mir helfen?
Die Fehlermeldung lautet
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler CS1061 "Animation" enthält keine Definition für "SetBool", und es konnte keine zugängliche SetBool-Erweiterungsmethode gefunden werden, die ein erstes Argument vom Typ "Animation" akzeptiert (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis). Assembly-CSharp C:\Users\Me\2d platform\Assets\Player.cs 27 Aktiv
Der ganze Code ist
public class Player : MonoBehaviour
{
public float speed = 5;
private Rigidbody2D rb;
public float jumph = 5;
private bool ig =false;
private Animation anim;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animation>();
}
// Update is called once per frame
void Update()
{
float richtung = Input.GetAxis("Horizontal");
if(richtung != 0)
{
anim.SetBool("IsRunning", true);
}
else
{
anim.SetBool("IsRunning", false);
}
transform.Translate(Vector2.right * speed * richtung * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.Space) && ig)
{
rb.AddForce(Vector2.up * jumph, ForceMode2D.Impulse);
ig = false;
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.tag == "g")
{
ig = true;
}
}
}
es soll so sein das wen ich a oder d drücke die bool variable IsRunning auf truhe gesetzt wirt und die run animation abgespielt wird
2 Antworten
Das Problem ist, dass deine Variable anim den Typ Animation hat. Sie sollte den Typ Animator haben.
Der Animator ist ein Component, der dafür zuständig ist, dass die richtige Animation abgespielt wird.
Der Animation Component ist ein veralteter Component, der durch den Animator Component ersetzt wurde.
Hier noch paar kleine andere Tipps:
- Benenne deine Variablen so, dass man sofort weiß, für was sie da sind. (Deine Variable ig steht vermutlich für isGrounded, am besten nennst du sie auch so. Wenn du nämlich Monate später deinen Code verändern willst, hilft es zu wissen, was wofür zuständig ist. Gilt auch für deinen Ground tag und jumph.)
- Das hier ist jetzt etwas fortgeschrittener(Musst du jetzt noch nicht umsetzen, solltest du dir aber für zukünftige Projekte merken):
- Für komplexe Character Controller ist eine Finite State Machine empfehlenswert (Gibt ein gutes Video von IHeartGameDev dazu)
Viel Spaß beim Unity Lernen!
P.S. Game Jams sind super, um zu lernen und machen echt Spaß!
Die Fehlermeldung ist schon ziemlich eindeutig:
"Animation" enthält keine Definition für "SetBool", (...)
Arbeite in diesem Zusammenhang mit der API-Referenz. Diese listet keine SetBool-Methode auf. Dafür aber eine Methode Play.
Im Gegensatz zum Animation-Typ haben Animator-Objekte eine SetBool-Methode.