У меня есть проект единства сверху вниз. Игрок перемещается туда, где на экране происходит касание.
Мне бы хотелось, чтобы теперь анимация воспроизводилась правильно для направления движения игрока. Я настроил Blend Tree, который работает с мелкими деталями, и у меня есть параметры с плавающей запятой: Horizontal, Vertical и Magnitude.
Однако, когда я нажимаю на экран, анимация игрока не меняет направление или, если это происходит, указывает неверное направление на половине движения. Я уверен, что я использую значения X Y, но я не уверен, как получить правильные значения.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
float speed = 2f;
Vector2 targetPos;
private Rigidbody2D myRigidbody;
private Animator myAnim;
private void Start()
{
myRigidbody = GetComponent<Rigidbody2D>();
myAnim = GetComponent<Animator>();
targetPos = transform.position;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
targetPos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
if ((Vector2)transform.position != targetPos)
{
Move();
}
}
void Move()
{
transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);
myAnim.SetFloat("Horizontal", transform.position.x);
myAnim.SetFloat("Vertical", transform.position.y);
myAnim.SetFloat("Magnitude", transform.position.magnitude);
}
}