Files
Fishing2/Assets/Scripts/Fishing/Player/States/PlayerFishing.cs
2025-05-10 12:49:47 +08:00

129 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.IsMouseLeft)
{
if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Float)
{
//抬杆
isUpRod = true;
}
else if (_owner.PlayerAnimatorCtrl.ThrowMode == ThrowModeEnum.Spin)
{
//收线
isSubLine = true;
}
}
if (InputManager.IsMouseRight)
{
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;
// // _owner.currentRod.
// // _owner.currentRod.RodData.LineLength -= addNum;
// // _owner.currentRod.currentReel.animator.SetFloat("Reeling", 1);
// _owner.Gears.Reel.AnimatorCtrl.Reeling = 1;
// }
// else
// {
// // _owner.currentRod.currentReel.animator.SetFloat("Reeling", 0);
// _owner.Gears.Reel.AnimatorCtrl.Reeling = 0;
// }
return ret;
}
#region
private uint CheckTackFish()
{
return States.Player.Idle;
}
#endregion
}
}