RailScript
unknown
csharp
15 days ago
1.3 kB
6
Indexable
Never
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; } }
Leave a Comment