Files
Bombaleila/Assets/ThunderWire Studio/UHFPS/Content/Scripts/Runtime/Interact/Zipline/ZiplineBuilder.cs
2026-03-03 05:27:03 +05:00

63 lines
1.9 KiB
C#

using UnityEngine;
using UHFPS.Tools;
namespace UHFPS.Runtime
{
public class ZiplineBuilder : MonoBehaviour
{
public GameObject ZiplineRack;
public Axis ZiplineForward;
public Axis ZiplineUpward;
public Vector3 ZiplineEnd;
public Vector3 CenterOffset;
public ProceduralCable.CableSettings CableSettings;
public ProceduralCable Cable;
public bool PreviewCable;
public bool PreviewPlayer;
public float PlayerRadius = 0.3f;
public float PlayerHeight = 1.8f;
private void Reset()
{
ResetEndPosition();
}
public void ResetEndPosition()
{
ZiplineEnd = transform.position + new Vector3(1, 0, 0);
}
private void OnDrawGizmosSelected()
{
if (!PreviewCable || Cable == null || Cable.curvatorePoints == null)
return;
Gizmos.color = Color.red;
for (int i = 1; i < Cable.curvatorePoints.Count; i++)
{
Vector3 start = transform.TransformPoint(Cable.curvatorePoints[i - 1]) + CenterOffset;
Vector3 end = transform.TransformPoint(Cable.curvatorePoints[i]) + CenterOffset;
Gizmos.DrawLine(start, end);
if (i == 1) Gizmos.DrawWireSphere(start, 0.05f);
Gizmos.DrawWireSphere(end, 0.05f);
}
if (PreviewPlayer)
{
Vector3 eval = Cable.EvalRaw(0.5f);
Vector3 center = eval + CenterOffset;
float height = (PlayerHeight - 0.6f) / 2f;
Vector3 p1 = new Vector3(center.x, center.y - height, center.z);
Vector3 p2 = new Vector3(center.x, center.y + height, center.z);
Gizmos.color = Color.green;
GizmosE.DrawWireCapsule(p1, p2, PlayerRadius);
}
}
}
}