Как понять, движется игрок или нет в единстве - PullRequest
1 голос
/ 11 апреля 2020

Я делаю контроллер navme sh, и мой игрок перемещается в место, к которому коснулся или щелкнул, но я хочу, чтобы игрок воспроизводил аниме при ходьбе, когда он движется, но когда он достигает места назначения и не движется, воспроизводите анимацию в режиме ожидания.

Пожалуйста, объясните в C#.

Я сделал скрипт, он воспроизводит ходьбу, но он не играет вхолостую, когда игрок достигает пункта назначения

public class navmesh : MonoBehaviour
{
    UnityEngine.AI.NavMeshAgent agent;
    public Animator anim;
    public Transform player;
    public GameObject obj;

    void Start()
    {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mouse = Input.mousePosition;
            Ray castPoint = Camera.main.ScreenPointToRay(mouse);
            RaycastHit hit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
            {
                agent.destination = hit.point;

                anim.SetBool("walk", true);

                obj.transform.position = hit.point;
            }
            else
            {
                anim.SetBool("walk", false);
            }
        }
    }
}

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете использовать свойство NavMeshAgent.remainingDistance, чтобы проверить, находится ли оно в небольшом диапазоне. Вот do c в navmeshagent для более

(пример)

if(agent.remainingDistance > 0.1f) {
  // Play anims
  
}

Я бы порекомендовал не жестко кодировать это значение меньше значения, так как это может быть лучше для настройки в инспекторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...