Надеюсь найду помощь здесь.
Уже несколько дней бьюсь с запуском и остановкой анимации, не получается.
Движение персонажа осуществляется по клику в определенную точку.
При клике, персонаж движется, проблем нет. Можно даже запустить анимацию, все работает.
Проблема начинается, когда подключаю анимацию остановки персонажа. В этом случае начинают постоянно чередоваться анимация ходьбы и остановки. При достижении персонажем точки назначения, чередование продолжается.
При этом, когда отслеживаю через консоль (Debug.Log) ходьбу и остановку, выводит все корректно.
Ниже код, на котором остановился (пробовал разные варианты):
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class PlayerMovement : MonoBehaviour
{
NavMeshAgent nav;
Animator animPlayer;
void Start()
{
nav = GetComponent<NavMeshAgent>();
animPlayer = GetComponent<Animator>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
nav.isStopped = false;
animPlayer.SetBool("Walk", true);
nav.SetDestination(hit.point);
}
}
if (nav.destination == transform.position)
{
nav.isStopped = true;
animPlayer.SetBool("Stop", true);
}
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class PlayerMovement : MonoBehaviour
{
NavMeshAgent nav;
Animator animPlayer;
void Start()
{
nav = GetComponent<NavMeshAgent>();
animPlayer = GetComponent<Animator>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
nav.isStopped = false;
animPlayer.SetBool("Walk", true);
nav.SetDestination(hit.point);
}
}
if (nav.destination == transform.position)
{
nav.isStopped = true;
animPlayer.SetBool("Stop", true);
}
}
}