Анимация с перемещением точки и щелчка [Unity2D] - PullRequest
1 голос
/ 17 июня 2020

У меня есть следующее blendtree, чтобы попытаться изменить анимацию в зависимости от направления движения.

enter image description here

У меня есть механизм c для перемещения объекта щелчком мыши со следующим кодом:

using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;

public class ClickMovement : MonoBehaviour
{
    public float speed = 2;
    public Animator animator;
    private Vector3 target;

    public Rigidbody2D rb;

    void Start()
    {
        target = transform.position;
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            target.z = transform.position.z;
        }

        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);

        animator.SetFloat("Horizontal", transform.position.x);
        animator.SetFloat("Vertical", transform.position.y);
        animator.SetFloat("Magnitude", transform.position.magnitude);

    }
}

Хотя, когда я запускаю сцену, спрайт проходит через анимацию как попало.

Я представляю, как я вывел в коде горизонтальные и вертикальные поплавки. Может ли кто-нибудь помочь мне в этом? Высоко оценен

1 Ответ

1 голос
/ 17 июня 2020

Вероятно, вы захотите использовать направление к цели вместо позиции.

Vector3 dir = target - transform.position;
dir.Normalize();

animator.SetFloat("Horizontal", dir.x);
animator.SetFloat("Vertical", dir.y);
animator.SetFloat("Magnitude", dir.magnitude);
...