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

83 lines
2.0 KiB
C#

using System;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
[ExecuteInEditMode]
public class Cable_Procedural_Simple : MonoBehaviour
{
private LineRenderer line;
[SerializeField]
private Transform endPointTransform;
[SerializeField]
private int pointsInLineRenderer = 5;
[SerializeField]
private float sagAmplitude = 1f;
[SerializeField]
private float swayMultiplier = 1f;
[SerializeField]
private float swayXMultiplier = 1f;
[SerializeField]
private float swayYMultiplier = 0.5f;
[SerializeField]
private float swayFrequency = 1f;
private Vector3 vectorFromStartToEnd;
private Vector3 sagDirection;
private float swayValue;
private void Start()
{
line = GetComponent<LineRenderer>();
line.positionCount = pointsInLineRenderer;
sagDirection = Physics.gravity.normalized;
swayValue = UnityEngine.Random.Range(0f, 3.14f);
}
private void Update()
{
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;
}
int i = 0;
swayValue += swayFrequency * Time.deltaTime;
if (swayValue > MathF.PI * 2f)
{
swayValue = 0f;
}
if (swayValue < 0f)
{
swayValue = MathF.PI * 2f;
}
for (; 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 vector3 = swayMultiplier * base.transform.TransformDirection(new Vector3(Mathf.Sin(swayValue) * swayXMultiplier, Mathf.Cos(2f * swayValue + MathF.PI) * 0.5f * swayYMultiplier, 0f));
Vector3 position = base.transform.position + vector + (vector3 + Vector3.ClampMagnitude(vector2, sagAmplitude)) * num2;
line.SetPosition(i, position);
}
}
}