@Frogyes
Гаймер который хочет создать свою игру

Скрипт выдаёт 6 ошибок чаще всего SetBool,using,Не удается неявно преобразовать тип «UnityEngine.Animator» в «UnityEngine.Animation» Как решить?

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

public class PlayerControler : MonoBehaviour
{
    public float speed;
    public float jumpForce;
    private float moveInput;

    private Rigidbody2D rb;

    private bool facingRight = true;

    private bool isGrounded;
    public Transform FeetPos;
    public float checkRadius;
    public LayerMask whatIsGround;
    

    private Animation anim;


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

    private void FixedUpdate()
    {
        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
        if(facingRight == false && moveInput > 0)
        {
            Flip();
        }
        else if(facingRight == true && moveInput < 0)
        {
            Flip();
        }
        if(moveInput == 0)
        {
            anim.SetBool("isRunning", false);
        }
        else
        {
            anim.SetBool("isRunning", true);
        }
    }
    private void Update()
    {
        isGrounded = Physics2D.OverlapCircle(FeetPos.position, checkRadius, whatIsGround);

        if(isGrounded == true && Input.GetKeyDown(KeyCode.Space))
        {
            rb.velocity = Vector2.up * jumpForce;
            anim.SetTrigger("takeOf");
        }

        if(isGrounded == true)
        {
            anim.SetBool("isJumping", false);
        }
        else
        {
            anim.SetBool("isJumping", true);
        }
    }

    void Flip()
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;
    }
}
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Вы в самом начале делаете
using UnityEngine;

public class PlayerControler : MonoBehaviour
{
   //...
    private Animation anim;
    private void Start()
    {
        anim = GetComponent<Animator>();
        //...
    }
   //...
}

Вам нужно поменять тип поля anim на Animator.
Тогда пропадут все остальные ошибки.

PS1: читайте правила, нормально оформляйте вопросы
PS2: сначала изучите C#, чтобы о такие примитивные ошибки не спотыкаться
PS3: не сокращайте имена переменных. Сколько вот вы времени сэкономили от того что не дописали "ator" в название переменной? Мне кажется, тогда бы вы интуитивно поняли, что что-то не так с этим полем (почему поле animator имеет тип Animation?)
PS4: Научитесь читать. В описании всех ошибок вполне понятным текстом поясняется, что в коде не так. Компилятор в 99% умнее человека и просто так ошибки не пишет.
PS5: Если не удаётся понять смысл написанного - гуглите код ошибки. На сайте MS можно найти примеры кода, когда они возникают и как исправлять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы