Наложение анимации поверх статичного спрайта персонажа в Unity
Сделал анимацию в Unity через Animator и, вместо смены спрайта персонажа, поверх него добавляется анимация.
Вроде код прописал правильно. Кто знает где ошибка?
using System.Collections;
using UnityEngine;
using System;
public class Character : MonoBehaviour
{
[SerializeField]
private float speed = 3f;
[SerializeField]
private float JumpForce = 10f;
private bool IsGrounded = false;
new private Rigidbody2D rigidbody;
private SpriteRenderer sprite;
private void Awake()
{
animator = GetComponent<Animator>();
rigidbody = GetComponent<Rigidbody2D>();
sprite = GetComponentInChildren<SpriteRenderer>();
}
public Animator animator;
public enum CharState
{
Idle,
Run,
Jump
}
private CharState state
{
get { return (CharState)animator.GetInteger("State"); }
set { animator.SetInteger("State", (int)value); }
}
private void Update()
{
state = CharState.Idle;
if (Input.GetButton("Horizontal")) Run();
if (IsGrounded && Input.GetButtonDown("Jump")) Jump();
}
private void FixedUpdate()
{
CheckGrounded();
}
private void Run()
{
Vector3 direction = transform.right *
Input.GetAxis("Horizontal");
transform.position = Vector3.MoveTowards(transform.position,
transform.position + direction, speed * Time.deltaTime);
state = CharState.Run;
sprite.flipX = direction.x < 0f;
}
private void Jump()
{
rigidbody.AddForce(transform.up * JumpForce,
ForceMode2D.Impulse);
state = CharState.Jump;
}
private void CheckGrounded()
{
Collider2D[] colliders =
Physics2D.OverlapCircleAll(transform.position, 0.1f);
IsGrounded = colliders.Length > 1;
}
}
