Files
F2RopeLine2/Assets/Scripts/FishingLine/FishingLineTestController.cs
2026-04-07 20:52:50 +08:00

74 lines
2.0 KiB
C#

using UnityEngine;
namespace F2RopeLine2.FishingLine
{
public class FishingLineTestController : MonoBehaviour
{
[Header("References")]
[SerializeField] private FishingLineSolver solver;
[Header("Length Test")]
[Min(0f)]
[SerializeField] private float initialFirstSegmentLength = 1.2f;
[Min(0f)]
[SerializeField] private float minFirstSegmentLength = 0.1f;
[Min(0f)]
[SerializeField] private float maxFirstSegmentLength = 5f;
[Min(0f)]
[SerializeField] private float lineAdjustSpeed = 1f;
[Header("Input")]
[SerializeField] private KeyCode extendKey = KeyCode.UpArrow;
[SerializeField] private KeyCode retractKey = KeyCode.DownArrow;
private float targetFirstSegmentLength;
private void Reset()
{
if (solver == null)
{
solver = GetComponent<FishingLineSolver>();
}
}
private void Start()
{
if (solver == null)
{
return;
}
targetFirstSegmentLength = Mathf.Clamp(initialFirstSegmentLength, minFirstSegmentLength, maxFirstSegmentLength);
solver.SetLenght(targetFirstSegmentLength);
solver.BuildLine();
}
private void Update()
{
if (solver == null)
{
return;
}
var input = 0f;
if (Input.GetKey(extendKey))
{
input += 1f;
}
if (Input.GetKey(retractKey))
{
input -= 1f;
}
if (!Mathf.Approximately(input, 0f))
{
targetFirstSegmentLength += input * lineAdjustSpeed * Time.deltaTime;
targetFirstSegmentLength = Mathf.Clamp(targetFirstSegmentLength, minFirstSegmentLength, maxFirstSegmentLength);
solver.SetLenght(targetFirstSegmentLength);
}
}
}
}