Files
beyond/Assets/ThirdParty/PlayMaker/Actions/Vector2/Vector2MoveTowards.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("Moves a Vector2 towards a Target. Optionally sends an event when successful.")]
public class Vector2MoveTowards : FsmStateAction
{
[RequiredField]
[Tooltip("The Vector2 to Move")]
public FsmVector2 source;
[Tooltip("A target Vector2 to move towards.")]
public FsmVector2 target;
[HasFloatSlider(0, 20)]
[Tooltip("The maximum movement speed. HINT: You can make this a variable to change it over time.")]
public FsmFloat maxSpeed;
[HasFloatSlider(0, 5)]
[Tooltip("Distance at which the move is considered finished, and the Finish Event is sent.")]
public FsmFloat finishDistance;
[Tooltip("Event to send when the Finish Distance is reached.")]
public FsmEvent finishEvent;
public override void Reset()
{
source = null;
target = null;
maxSpeed = 10f;
finishDistance = 1f;
finishEvent = null;
}
public override void OnUpdate()
{
DoMoveTowards();
}
void DoMoveTowards()
{
source.Value = Vector2.MoveTowards(source.Value, target.Value, maxSpeed.Value * Time.deltaTime);
var distance = (source.Value - target.Value).magnitude;
if (distance < finishDistance.Value)
{
Fsm.Event(finishEvent);
Finish();
}
}
}
}