Files
F2RopeLine/Assets/Scripts/FishingFloatNodeBehaviour.cs
2026-04-06 21:12:32 +08:00

33 lines
1.1 KiB
C#

using UnityEngine;
public class FishingFloatNodeBehaviour : FishingLineNodeBehaviour
{
[SerializeField] private Transform waterSurface;
[SerializeField] private float fallbackWaterHeight = 0f;
[SerializeField] private float surfaceOffset = 0f;
[SerializeField] [Min(0f)] private float buoyancy = 16f;
[SerializeField] [Range(0f, 1f)] private float waterDrag = 0.22f;
[SerializeField] [Min(0.01f)] private float fullBuoyancyDepth = 0.35f;
public override void Evaluate(ref FishingLineNodeInfluence influence, in FishingLineNodeContext context)
{
if (!BehaviourEnabled)
{
return;
}
float surfaceY = waterSurface != null ? waterSurface.position.y : fallbackWaterHeight;
surfaceY += surfaceOffset;
float depth = surfaceY - context.Position.y;
if (depth <= 0f)
{
return;
}
float normalizedDepth = Mathf.Clamp01(depth / fullBuoyancyDepth);
influence.AdditionalAcceleration += Vector3.up * (buoyancy * normalizedDepth);
influence.ExtraDamping = Mathf.Max(influence.ExtraDamping, waterDrag);
}
}