40 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
} |