42 lines
656 B
C#
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 );
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|