修改鱼线相关逻辑

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

@@ -1,173 +1,173 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using NBC;
// using Obi;
using UnityEngine;
namespace NBF
{
public enum LineType
{
Hand,
HandDouble,
Spinning,
SpinningFloat,
}
public class FLine : FGearBase
{
public LineType LineType;
[SerializeField] private bool isLureConnect;
[SerializeField] private RodLine rodLine;
/// <summary>
/// 主线
/// </summary>
[SerializeField] private Rope fishingRope;
/// <summary>
/// 浮漂和鱼钩线
/// </summary>
[SerializeField] private Rope bobberRope;
public LureController Lure;
public BobberController Bobber;
public JointPinchController PinchController;
public float LinelenghtDiferent;
protected override void OnInit()
{
var tipRb = Rod.Asset.LineConnectorRigidbody;
if (isLureConnect)
{
Lure.SetJoint(tipRb);
Lure.EnableCollision(false);
}
else
{
fishingRope.startAnchor = tipRb;
Bobber.SetJoint(tipRb);
Lure.SetJoint(Bobber.rbody);
Lure.gameObject.SetActive(true);
Lure.EnableCollision(false);
Lure.SetKinematic(false);
}
GetComponentsInChildren<Transform>(includeInactive: true).ToList().ForEach(delegate(Transform i)
{
i.gameObject.SetActive(true);
});
StartCoroutine(LureUseGravity());
if (isLureConnect)
{
fishingRope.Init(Rod);
}
else
{
fishingRope.Init(Rod);
bobberRope.Init(Rod);
}
// rodLine.GenerateLineRendererRope(guides.ToArray(), _LineThickness);
}
public void InitTest(Rigidbody tipRb)
{
if (isLureConnect)
{
Lure.SetJoint(tipRb);
Lure.EnableCollision(false);
}
else
{
fishingRope.startAnchor = tipRb;
Bobber.SetJoint(tipRb);
Lure.SetJoint(Bobber.rbody);
Lure.gameObject.SetActive(true);
Lure.EnableCollision(false);
Lure.SetKinematic(false);
}
GetComponentsInChildren<Transform>(includeInactive: true).ToList().ForEach(delegate(Transform i)
{
i.gameObject.SetActive(true);
});
StartCoroutine(LureUseGravity());
if (isLureConnect)
{
fishingRope.Init(Rod);
}
else
{
fishingRope.Init(Rod);
bobberRope.Init(Rod);
}
}
private IEnumerator LureUseGravity()
{
yield return 1;
Lure.gameObject.SetActive(false);
Lure.gameObject.SetActive(true);
yield return 1;
Lure.RBody.useGravity = true;
}
public void SetTargetLength(float value)
{
Log.Error($"SetObiRopeStretch={value}");
if (value > 3)
{
// value -= 0.2f;
}
fishingRope.SetTargetLength(value);
}
public void SetLureLength(float value)
{
Log.Error($"SetObiRopeStretch={value}");
bobberRope.SetTargetLength(value);
}
private void Update()
{
LinelenghtDiferent = GetLineDistance();
//非钓鱼状态
Rod.PlayerItem.Tension = Mathf.Clamp(LinelenghtDiferent, 0f, 0.05f);
}
#region Tension
private float GetLineDistance()
{
if (!Bobber.JointRb)
{
return 0;
}
// return 0;
//第一个节点到竿稍的位置-第一段鱼线长度
return Vector3.Distance(Bobber.transform.position, Bobber.JointRb.transform.position) -
fishingRope.GetCurrentLength();
}
public float GetTension(float weight)
{
return weight * GetLineDistance();
}
#endregion
}
}
// using System;
// using System.Collections;
// using System.Collections.Generic;
// using System.Linq;
// using NBC;
// // using Obi;
// using UnityEngine;
//
// namespace NBF
// {
// public enum LineType
// {
// Hand,
// HandDouble,
// Spinning,
// SpinningFloat,
// }
//
// public class FLine : FGearBase
// {
// public LineType LineType;
//
// [SerializeField] private bool isLureConnect;
// [SerializeField] private RodLine rodLine;
//
// /// <summary>
// /// 主线
// /// </summary>
// [SerializeField] private Rope fishingRope;
//
// /// <summary>
// /// 浮漂和鱼钩线
// /// </summary>
// [SerializeField] private Rope bobberRope;
//
// public LureController Lure;
// public BobberController Bobber;
//
// public JointPinchController PinchController;
//
//
// public float LinelenghtDiferent;
//
// protected override void OnInit()
// {
// var tipRb = Rod.Asset.LineConnectorRigidbody;
// if (isLureConnect)
// {
// Lure.SetJoint(tipRb);
// Lure.EnableCollision(false);
// }
// else
// {
// fishingRope.startAnchor = tipRb;
// Bobber.SetJoint(tipRb);
// Lure.SetJoint(Bobber.rbody);
// Lure.gameObject.SetActive(true);
// Lure.EnableCollision(false);
// Lure.SetKinematic(false);
// }
//
// GetComponentsInChildren<Transform>(includeInactive: true).ToList().ForEach(delegate(Transform i)
// {
// i.gameObject.SetActive(true);
// });
//
// StartCoroutine(LureUseGravity());
// if (isLureConnect)
// {
// fishingRope.Init(Rod);
// }
// else
// {
// fishingRope.Init(Rod);
// bobberRope.Init(Rod);
// }
//
// // rodLine.GenerateLineRendererRope(guides.ToArray(), _LineThickness);
// }
//
// public void InitTest(Rigidbody tipRb)
// {
// if (isLureConnect)
// {
// Lure.SetJoint(tipRb);
// Lure.EnableCollision(false);
// }
// else
// {
// fishingRope.startAnchor = tipRb;
// Bobber.SetJoint(tipRb);
// Lure.SetJoint(Bobber.rbody);
// Lure.gameObject.SetActive(true);
// Lure.EnableCollision(false);
// Lure.SetKinematic(false);
// }
//
// GetComponentsInChildren<Transform>(includeInactive: true).ToList().ForEach(delegate(Transform i)
// {
// i.gameObject.SetActive(true);
// });
//
// StartCoroutine(LureUseGravity());
// if (isLureConnect)
// {
// fishingRope.Init(Rod);
// }
// else
// {
// fishingRope.Init(Rod);
// bobberRope.Init(Rod);
// }
// }
//
// private IEnumerator LureUseGravity()
// {
// yield return 1;
// Lure.gameObject.SetActive(false);
// Lure.gameObject.SetActive(true);
// yield return 1;
// Lure.RBody.useGravity = true;
// }
//
// public void SetTargetLength(float value)
// {
// Log.Error($"SetObiRopeStretch={value}");
// if (value > 3)
// {
// // value -= 0.2f;
// }
//
// fishingRope.SetTargetLength(value);
// }
//
// public void SetLureLength(float value)
// {
// Log.Error($"SetObiRopeStretch={value}");
// bobberRope.SetTargetLength(value);
// }
//
//
// private void Update()
// {
// LinelenghtDiferent = GetLineDistance();
//
// //非钓鱼状态
// Rod.PlayerItem.Tension = Mathf.Clamp(LinelenghtDiferent, 0f, 0.05f);
// }
//
// #region Tension
//
// private float GetLineDistance()
// {
// if (!Bobber.JointRb)
// {
// return 0;
// }
//
// // return 0;
//
// //第一个节点到竿稍的位置-第一段鱼线长度
// return Vector3.Distance(Bobber.transform.position, Bobber.JointRb.transform.position) -
// fishingRope.GetCurrentLength();
// }
//
// public float GetTension(float weight)
// {
// return weight * GetLineDistance();
// }
//
// #endregion
// }
// }