Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/Cable_Procedural_Static.cs
2026-03-04 10:03:45 +08:00

53 lines
1.3 KiB
C#

using System;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
[ExecuteInEditMode]
public class Cable_Procedural_Static : MonoBehaviour
{
private LineRenderer line;
[SerializeField]
private Transform endPointTransform;
[SerializeField]
private int pointsInLineRenderer = 5;
[SerializeField]
private float sagAmplitude = 1f;
private Vector3 vectorFromStartToEnd;
private Vector3 sagDirection;
private void Start()
{
line = GetComponent<LineRenderer>();
line.positionCount = pointsInLineRenderer;
sagDirection = Physics.gravity.normalized;
Animate();
}
private void Animate()
{
if (!endPointTransform)
{
Debug.LogError("No Endpoint Transform assigned to Cable_Procedural component attached to " + base.gameObject.name);
}
else
{
vectorFromStartToEnd = endPointTransform.position - base.transform.position;
base.transform.forward = vectorFromStartToEnd.normalized;
}
for (int i = 0; i < pointsInLineRenderer; i++)
{
float num = (float)i / (float)(pointsInLineRenderer - 1);
float num2 = Mathf.Sin(num * MathF.PI);
Vector3 vector = vectorFromStartToEnd * num;
Vector3 vector2 = sagDirection * sagAmplitude;
Vector3 position = base.transform.position + vector + Vector3.ClampMagnitude(vector2, sagAmplitude) * num2;
line.SetPosition(i, position);
}
}
}