1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using UnityEngine;
- using System.Collections;
- namespace RootMotion.Demos {
-
- /// <summary>
- /// User input for an AI controlled character controller.
- /// </summary>
- 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(transform);
- }
- protected override void Update () {
- float moveSpeed = walkByDefault? 0.5f: 1f;
- // If using Unity Navigation
- if (navigator.activeTargetSeeking)
- {
- navigator.Update(moveTarget.position);
- state.move = navigator.normalizedDeltaPosition * moveSpeed;
- }
- // No navigation, just move straight to the target
- else
- {
- Vector3 direction = moveTarget.position - transform.position;
- float distance = direction.magnitude;
- Vector3 normal = transform.up;
- Vector3.OrthoNormalize(ref normal, ref direction);
- float sD = state.move != Vector3.zero ? stoppingDistance : stoppingDistance * stoppingThreshold;
- state.move = distance > sD ? direction * moveSpeed : Vector3.zero;
- state.lookPos = moveTarget.position;
- }
- }
- // Visualize the navigator
- void OnDrawGizmos()
- {
- if (navigator.activeTargetSeeking) navigator.Visualize();
- }
- }
- }
|