rokojori_action_library/Runtime/Animation/MoveOnSpline.cs

42 lines
656 B
C#

using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
using Godot;
using Rokojori.Extensions;
namespace Rokojori;
[Tool]
[GlobalClass]
public partial class MoveOnSpline:Action
{
[Export]
public Node3D target;
[Export]
public Spline spline;
[Export]
public float duration;
[Export]
public Timeline timeline;
protected override void _OnTrigger()
{
var curve = spline.GetCurve();
var position = ( timeline.position % duration ) / duration;
// RJLog.Log( timeline.position, position );
target.GlobalPosition = curve.PositionAt( position );
}
}