24 lines
754 B
C#
24 lines
754 B
C#
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace VOID.Generic.Trajectory
|
|
{
|
|
[TypeRegistryItem("Parabolic")]
|
|
public sealed class ParabolicTrajectory : AbstractTrajectory
|
|
{
|
|
[SerializeField, Required, MinValue(0)]
|
|
public float height;
|
|
|
|
protected override void OnInit()
|
|
{
|
|
if (height > 0f) trajectoryDistance = Mathf.PI*Mathf.Sqrt(Mathf.Pow(lineDistance/2,2)*Mathf.Pow(height,2)/2);
|
|
}
|
|
|
|
public override Vector3 GetPositionByProgress(float progress)
|
|
{
|
|
var result = Vector3.Lerp(startPosition, endPosition, Mathf.Clamp01(progress));
|
|
result.y += Mathf.Sin(progress * Mathf.PI) * height;
|
|
return result;
|
|
}
|
|
}
|
|
} |