fgm24/Assets/Scripts/PathFinding/NavMeshComponents/Scripts/RotateAgentInstantly.cs

40 lines
1.4 KiB
C#

using UnityEngine;
using UnityEngine.AI;
//***********************************************************************************
// Contributed by author @Lazy_Sloth from unity forum (https://forum.unity.com/)
//***********************************************************************************
namespace NavMeshPlus.Extensions
{
public class RotateAgentInstantly: IAgentOverride
{
public RotateAgentInstantly(NavMeshAgent agent, AgentOverride2d owner)
{
this.agent = agent;
this.owner = owner;
}
private NavMeshAgent agent;
private AgentOverride2d owner;
private Vector3 nextWaypoint;
public void UpdateAgent()
{
if (agent.hasPath && agent.path.corners.Length > 1)
{
if (nextWaypoint != agent.path.corners[1])
{
RotateToPoint(agent.path.corners[1], agent.transform);
nextWaypoint = agent.path.corners[1];
}
}
}
private static void RotateToPoint(Vector3 targetPoint, Transform transform)
{
Vector3 targetVector = targetPoint - transform.position;
float angleDifference = Vector2.SignedAngle(transform.up, targetVector);
transform.rotation = Quaternion.Euler(0, 0, transform.localEulerAngles.z + angleDifference);
}
}
}