UnityEngineDanil
@UnityEngineDanil
I'm love Unity Engine!

Как управлять скоростью анимации?

Проблема в том что когда мой персонаж прыгает анимация работает хорошо но если у моего персонажа прыжок выше то анимация проигрывается быстрее и персонаж приземляется с анимацией покоя. Мне же нужно чтобы вне зависимости от того, как долго персонаж находился в воздухе, должна проигрываться анимация прыжка. Извините если я немного не понятно объяснил!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    Rigidbody2D rb;
    Animator anim;

    public float MoveSpeed;
    private float ControllerMove;

    public float JumpForce;

    public Transform GroundCheck;
    public LayerMask whIsGround;
    public bool Grounded = false;
    public float GroundRadius;

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

    void Update()
    {   
        Grounded = Physics2D.OverlapCircle(GroundCheck.position, GroundRadius, whIsGround);

        ControllerMove = Input.GetAxis("Horizontal");

        if(Input.GetKeyDown(KeyCode.Space) && Grounded)
        {
            Jump();
            anim.SetBool("Jump", true);
        }
         
        else if(Grounded == true)
        {
            anim.SetBool("Jump", false);
        }  
    

    }
    private void FixedUpdate()
    {
        rb.velocity = new Vector2(ControllerMove * MoveSpeed, rb.velocity.y);

        if(Input.GetAxis("Horizontal") == 0)
        {
            anim.SetBool("Run", false);
        }
        else
        {   
            FlipSpite();
            anim.SetBool("Run", true);
        }
    }
    private void Jump()
    {
        rb.velocity += JumpForce * Vector2.up; 
    }

    private void FlipSpite()
    {
        if(Input.GetAxis("Horizontal") > 0)
        {
            transform.localRotation = Quaternion.Euler(0, 0, 0);
        }
        if(Input.GetAxis("Horizontal") < 0)
        {
            transform.localRotation = Quaternion.Euler(0, 180, 0);
        }
    }
}


5f0862d9afb7c103976883.png
  • Вопрос задан
  • 678 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы