You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.AI;
|
|
|
|
|
|
|
|
|
|
internal class MoveToSelectedResource : AIState
|
|
|
|
|
{
|
|
|
|
|
private readonly Gatherer _gatherer;
|
|
|
|
|
private readonly NavMeshAgent _navMeshAgent;
|
|
|
|
|
private readonly Animator _animator;
|
|
|
|
|
private static readonly int Speed = Animator.StringToHash("Speed");
|
|
|
|
|
|
|
|
|
|
private Vector3 _lastPosition = Vector3.zero;
|
|
|
|
|
|
|
|
|
|
public float TimeStuck;
|
|
|
|
|
|
|
|
|
|
public MoveToSelectedResource(Gatherer gatherer, NavMeshAgent navMeshAgent, Animator animator)
|
|
|
|
|
{
|
|
|
|
|
_gatherer = gatherer;
|
|
|
|
|
_navMeshAgent = navMeshAgent;
|
|
|
|
|
_animator = animator;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void Tick()
|
|
|
|
|
{
|
|
|
|
|
if (Vector3.Distance(_gatherer.transform.position, _lastPosition) <= 0f)
|
|
|
|
|
TimeStuck += Time.deltaTime;
|
|
|
|
|
|
|
|
|
|
_lastPosition = _gatherer.transform.position;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void OnEnter()
|
|
|
|
|
{
|
|
|
|
|
TimeStuck = 0f;
|
|
|
|
|
_navMeshAgent.enabled = true;
|
|
|
|
|
_navMeshAgent.SetDestination(_gatherer.Target.transform.position);
|
|
|
|
|
_animator.SetFloat(Speed, 1f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void OnExit()
|
|
|
|
|
{
|
|
|
|
|
_navMeshAgent.enabled = false;
|
|
|
|
|
_animator.SetFloat(Speed, 0f);
|
|
|
|
|
}
|
|
|
|
|
}
|