Files
2026-03-05 18:07:55 +08:00

135 lines
3.7 KiB
C#

using UnityEngine;
namespace NBF
{
public class PlayerFishing : PlayerStateBase
{
public override uint StateId => States.Player.Fishing;
protected override void onExit()
{
_owner.PlayerAnimatorCtrl.PodsakAction = false;
}
protected override void onEnter()
{
Debug.Log("进入钓鱼中");
if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Spin)
{
_owner.PlayerAnimatorCtrl.PodsakAction = true;
_owner.PlayerAnimatorCtrl.Telestick = false;
}
else
{
_owner.PlayerAnimatorCtrl.PodsakAction = false;
_owner.PlayerAnimatorCtrl.Telestick = true;
}
}
protected override uint onUpdate()
{
var ret = States.None;
var isUpRod = false;
var isSubLine = false;
if (Input.GetKeyDown(KeyCode.P))
{
return States.Player.Idle;
}
if (InputManager.IsOp1)
{
if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Float)
{
//抬杆
isUpRod = true;
}
else if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Spin)
{
//收线
isSubLine = true;
}
}
if (InputManager.IsOp2)
{
if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Spin)
{
//抬杆
isUpRod = true;
}
}
if (isUpRod || _owner.PlayerAnimatorCtrl.FishingFinal > 0)
{
var upForce = 1;
var addNum = upForce * Time.deltaTime;
if (!isUpRod)
{
addNum *= -1;
}
else
{
addNum *= 0.5f;
}
// Debug.Log($"addNum={addNum}");
_owner.PlayerAnimatorCtrl.FishingFinal += addNum;
Debug.LogError($"ishingFinal={_owner.PlayerAnimatorCtrl.FishingFinal}");
if (_owner.PlayerAnimatorCtrl.FishingFinal >= 1)
{
_owner.PlayerAnimatorCtrl.FishingFinal = 1;
}
else if (_owner.PlayerAnimatorCtrl.FishingFinal < 0)
{
_owner.PlayerAnimatorCtrl.FishingFinal = 0;
}
if (_owner.PlayerAnimatorCtrl.FishingFinal >= 0.8f)
{
ret = CheckTackFish();
}
_owner.PlayerAnimatorCtrl.PullUpRod = true;
}
else
{
_owner.PlayerAnimatorCtrl.PullUpRod = false;
}
if (isSubLine)
{
var subLineSpeed = 2;
var addNum = subLineSpeed * Time.deltaTime;
if (_owner.Data.lineLength > 0.4f)
{
_owner.Data.lineLength -= addNum;
}
_owner.Data.reelSpeed = 1;
if (_owner.Data.lineLength <= 0.4f)
{
_owner.Data.lineLength = 0.4f;
ret = CheckTackFish();
}
}
else
{
_owner.Data.reelSpeed = 0;
}
return ret;
}
#region
private uint CheckTackFish()
{
return States.Player.Idle;
}
#endregion
}
}