You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.8 KiB
50 lines
1.8 KiB
4 years ago
|
/* This file is part of the "NavMesh Extension" project by Rebound Games.
|
||
|
* You are only allowed to use these resources if you've bought them directly or indirectly
|
||
|
* from Rebound Games. You shall not license, sublicense, sell, resell, transfer, assign,
|
||
|
* distribute or otherwise make available to any third party the Service or the Content.
|
||
|
*/
|
||
|
|
||
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
|
||
|
namespace NavMeshExtension
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Mecanim motion animator for movement scripts.
|
||
|
/// Passes speed and direction to the Mecanim controller.
|
||
|
/// <summary>
|
||
|
public class AgentAnimator : MonoBehaviour
|
||
|
{
|
||
|
//movement script references
|
||
|
private UnityEngine.AI.NavMeshAgent nAgent;
|
||
|
//Mecanim animator reference
|
||
|
//private Animator animator;
|
||
|
public Animator animator;
|
||
|
|
||
|
//getting component references
|
||
|
void Start()
|
||
|
{
|
||
|
animator = GetComponentInChildren<Animator>();
|
||
|
nAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
|
||
|
}
|
||
|
|
||
|
|
||
|
//method override for root motion on the animator
|
||
|
void OnAnimatorMove()
|
||
|
{
|
||
|
//init variables
|
||
|
float speed = 0f;
|
||
|
float angle = 0f;
|
||
|
|
||
|
//calculate variables based on movement script:
|
||
|
//get the agent's speed and calculate the rotation difference to the last frame
|
||
|
speed = nAgent.velocity.magnitude;
|
||
|
Vector3 velocity = Quaternion.Inverse(transform.rotation) * nAgent.desiredVelocity;
|
||
|
angle = Mathf.Atan2(velocity.x, velocity.z) * 180.0f / 3.14159f;
|
||
|
|
||
|
//push variables to the animator with some optional damping
|
||
|
animator.SetFloat("Speed", speed);
|
||
|
//animator.SetFloat("Direction", angle, 0.15f, Time.deltaTime);
|
||
|
}
|
||
|
}
|
||
|
}
|