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