RailScript
unknown
csharp
a year ago
1.3 kB
14
Indexable
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Splines;
public class RailScript : MonoBehaviour
{
public bool normalDir;
public SplineContainer railSpline;
public float totalSplineLength;
private void Start()
{
railSpline = GetComponent<SplineContainer>();
totalSplineLength = railSpline.CalculateLength();
}
public Vector3 LocalToWorldConversion(float3 localPoint)
{
return transform.TransformPoint(localPoint);
}
public float3 WorldToLocalConversion(Vector3 worldPoint)
{
return transform.InverseTransformPoint(worldPoint);
}
public float CalculateTargetRailPoint(Vector3 playerPos, out Vector3 worldPosOnSpline)
{
float3 nearestPoint;
float time;
SplineUtility.GetNearestPoint(railSpline.Spline, WorldToLocalConversion(playerPos), out nearestPoint, out time);
worldPosOnSpline = LocalToWorldConversion(nearestPoint);
return time;
}
public void CalculateDirection(float3 railForward, Vector3 playerForward)
{
float angle = Vector3.Angle(railForward, playerForward.normalized);
normalDir = angle <= 90f;
}
}Editor is loading...
Leave a Comment