Files
beyond/Assets/ThirdParty/PlayMaker/Actions/Vector2/Vector2RotateTowards.cs
2024-11-20 15:21:28 +01:00

56 lines
1.4 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2016. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Vector2)]
[Tooltip("Rotates a Vector2 direction from Current towards Target.")]
public class Vector2RotateTowards : FsmStateAction
{
[RequiredField]
[Tooltip("The current direction. This will be the result of the rotation as well.")]
public FsmVector2 currentDirection;
[RequiredField]
[Tooltip("The direction to reach")]
public FsmVector2 targetDirection;
[RequiredField]
[Tooltip("Rotation speed in degrees per second")]
public FsmFloat rotateSpeed;
private Vector3 current;
private Vector3 target;
public override void Reset()
{
currentDirection = new FsmVector2 { UseVariable = true };
targetDirection = new FsmVector2 { UseVariable = true };
rotateSpeed = 360;
}
public override void OnEnter()
{
current = new Vector3(currentDirection.Value.x,currentDirection.Value.y,0f);
target = new Vector3(targetDirection.Value.x,targetDirection.Value.y,0f);
}
public override void OnUpdate()
{
current.x = currentDirection.Value.x;
current.y = currentDirection.Value.y;
current = Vector3.RotateTowards(current, target,
rotateSpeed.Value * Mathf.Deg2Rad * Time.deltaTime, 1000);
currentDirection.Value = new Vector2(current.x, current.y);
}
}
}