48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
namespace RootMotion.Demos
|
|
{
|
|
public class UserControlAI : UserControlThirdPerson
|
|
{
|
|
public Transform moveTarget;
|
|
|
|
public float stoppingDistance = 0.5f;
|
|
|
|
public float stoppingThreshold = 1.5f;
|
|
|
|
public Navigator navigator;
|
|
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
navigator.Initiate(base.transform);
|
|
}
|
|
|
|
protected override void Update()
|
|
{
|
|
float num = (walkByDefault ? 0.5f : 1f);
|
|
if (navigator.activeTargetSeeking)
|
|
{
|
|
navigator.Update(moveTarget.position);
|
|
state.move = navigator.normalizedDeltaPosition * num;
|
|
return;
|
|
}
|
|
Vector3 tangent = moveTarget.position - base.transform.position;
|
|
float magnitude = tangent.magnitude;
|
|
Vector3 normal = base.transform.up;
|
|
Vector3.OrthoNormalize(ref normal, ref tangent);
|
|
float num2 = ((state.move != Vector3.zero) ? stoppingDistance : (stoppingDistance * stoppingThreshold));
|
|
state.move = ((magnitude > num2) ? (tangent * num) : Vector3.zero);
|
|
state.lookPos = moveTarget.position;
|
|
}
|
|
|
|
private void OnDrawGizmos()
|
|
{
|
|
if (navigator.activeTargetSeeking)
|
|
{
|
|
navigator.Visualize();
|
|
}
|
|
}
|
|
}
|
|
}
|