Здравствуйте, разрабатываю игру под андроид. Имеется 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);
}
}