@Romanuss

Анимация перебивает другую?

Здравствуйте, разрабатываю игру под андроид. Имеется 2Д персонаж и скрипт передвижения в 2 координатах (с помощью джойстика). Всё работает, но когда джойстик оттягиваешь по диагонали анимации персонажа начинают наслаиваться, т.е проигрываться одна поверх другой. Никак не могу понять какое условие нужно писать во фрагменте кода:

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

public class PlayerMovment : MonoBehaviour {

    public float speed;
    private Vector2 direction;
    private Animator anim;
    private bool isDiagonalMove = false;

    public Joystick joystick;


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

    void Update()
    {
        TakeInput();
        Move();
    }

    private void Move()
    {
        transform.Translate(direction * speed * Time.deltaTime);

        if (direction.x != 0 || direction.y != 0 && isDiagonalMove == false) 
        {
            SetAnimatorMovment(direction);
        } else {
            anim.SetLayerWeight(1, 0);
        }
    }

    private void TakeInput()
    {
        direction = Vector2.zero;

        float vertical = joystick.Vertical;
        float horizontal = joystick.Horizontal;

        if (vertical > .2f)
        {
            direction += Vector2.up;
        }

        if (horizontal < -.2f)
        {
            direction += Vector2.left;
        }

        if (vertical < -.2f)
        {
            direction += Vector2.down;
        }

        if (horizontal > .2f)
        {
            direction += Vector2.right;
        }

        if (ЗДесь нужно каконто условие!!)
        {
            isDiagonalMove = true;
        }
        else
        {
            isDiagonalMove = false;
        }
    }

    private void SetAnimatorMovment(Vector2 direction)
    {
        anim.SetLayerWeight(1, 1);
        anim.SetFloat("xDir", direction.x);
        anim.SetFloat("yDir", direction.y);
    }
}
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Hzpriezz
Тут больше не код, если анимация спрайтовая то нужно правильно выставлять аниматор контроллеры. Плавного перехода трудно будет добиться. Нужна отдельная анимация для диагонального передвижения, тут участвуют обе координаты и контроллер просто не понимает какую анимацию не проигрывать, поэтому работают обе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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