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
/* 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); |
|
} |
|
} |
|
} |