修改鱼线相关逻辑

This commit is contained in:
2026-04-12 21:17:29 +08:00
parent 8fbb21a66c
commit b83dfd47b1
15 changed files with 1446 additions and 1389 deletions

View File

@@ -5,7 +5,15 @@ using UnityEngine;
namespace NBF
{
public class FishingLineSolver : MonoBehaviour
public enum LineType
{
Hand,
HandDouble,
Spinning,
SpinningFloat,
}
public class FishingLineSolver : FGearBase
{
[Serializable]
public sealed class ChainPoint
@@ -36,6 +44,9 @@ namespace NBF
public int VirtualNodeCount => Mathf.Max(0, GapLengths.Length - 1);
}
[SerializeField] public LineType LineType;
[Header("References")] [SerializeField]
private Transform anchorTransform;
@@ -202,6 +213,12 @@ namespace NBF
}
}
protected override void OnInit()
{
var tipRb = Rod.Asset.LineConnectorRigidbody;
anchorTransform = tipRb.transform;
}
private void Start()
{
if (autoBuildOnStart)
@@ -312,28 +329,46 @@ namespace NBF
}
/// <summary>
/// 获取指定顺序索引的逻辑节点
/// 索引基于 logicalNodes 配置顺序;超出范围或节点为空时返回 null。
/// 根据类型获取逻辑节点类型
/// </summary>
public FishingLineNode GetLogicalNode(int logicalIndex)
/// <param name="nodeType"></param>
/// <returns></returns>
public FishingLineNode GetLogicalNode(FishingLineNode.NodeType nodeType)
{
if (logicalNodes == null || logicalIndex < 0 || logicalIndex >= logicalNodes.Length)
foreach (var fishingLineNode in logicalNodes)
{
return null;
if (fishingLineNode.Type == nodeType)
{
return fishingLineNode;
}
}
return logicalNodes[logicalIndex];
return null;
}
/// <summary>
/// 尝试获取指定顺序索引的逻辑节点。
/// 获取失败时返回 false并将 node 置为 null。
/// </summary>
public bool TryGetLogicalNode(int logicalIndex, out FishingLineNode node)
{
node = GetLogicalNode(logicalIndex);
return node != null;
}
// /// <summary>
// /// 获取指定顺序索引的逻辑节点。
// /// 索引基于 logicalNodes 配置顺序;超出范围或节点为空时返回 null。
// /// </summary>
// public FishingLineNode GetLogicalNode(int logicalIndex)
// {
// if (logicalNodes == null || logicalIndex < 0 || logicalIndex >= logicalNodes.Length)
// {
// return null;
// }
//
// return logicalNodes[logicalIndex];
// }
//
// /// <summary>
// /// 尝试获取指定顺序索引的逻辑节点。
// /// 获取失败时返回 false并将 node 置为 null。
// /// </summary>
// public bool TryGetLogicalNode(int logicalIndex, out FishingLineNode node)
// {
// node = GetLogicalNode(logicalIndex);
// return node != null;
// }
/// <summary>
/// 获取当前起点逻辑节点。