大修改调整

This commit is contained in:
2026-03-09 23:41:13 +08:00
parent 27b85fd875
commit 0526fe5f13
67 changed files with 780 additions and 545 deletions

View File

@@ -0,0 +1,61 @@
using UnityEngine;
namespace NBF
{
public abstract class PlayerStageViewBase
{
public Player Player { get; private set; }
public PlayerViewComponent PlayerView { get; private set; }
protected float EnterTime { get; set; }
protected PlayerState PreviousState { get; private set; }
protected StateEnterParams Params;
public void Init(Player player)
{
Player = player;
PlayerView = player.GetComponent<PlayerViewComponent>();
}
/// <summary>
/// 检查状态超时
/// </summary>
public void CheckStateTimeout(float time)
{
if (Time.time - EnterTime >= time)
{
Player.ChangeState(PlayerState.Idle);
}
}
public void Enter(StateEnterParams par = null, PlayerState prevState = PlayerState.None)
{
Params = par;
PreviousState = prevState;
EnterTime = Time.time;
OnEnter();
}
protected virtual void OnEnter()
{
}
public void Exit()
{
OnExit();
}
protected virtual void OnExit()
{
}
public void Update()
{
OnUpdate();
}
protected virtual void OnUpdate()
{
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cce89f03f80b4fb8a0e36e66e9ffb3a9
timeCreated: 1773063081

View File

@@ -0,0 +1,6 @@
namespace NBF
{
public class PlayerStageViewFight : PlayerStageViewBase
{
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a9445a6593604dc19dea2bb8bb0819bc
timeCreated: 1773064542

View File

@@ -0,0 +1,99 @@
using UnityEngine;
namespace NBF
{
public class PlayerStageViewFishing : PlayerStageViewBase
{
protected override void OnEnter()
{
Debug.LogError("enter PlayerStateFishing");
PlayerView.Unity.ModelAsset.PlayerAnimator.BaitThrown = true;
}
protected override void OnExit()
{
PlayerView.Unity.ModelAsset.PlayerAnimator.BaitThrown = false;
}
protected override void OnUpdate()
{
PlayerState ret = PlayerState.None;
var isUpRod = false;
var isSubLine = false;
if (InputManager.IsOp1)
{
if (!Player.IsLureRod)
{
//抬杆
isUpRod = true;
}
else
{
//收线
isSubLine = true;
}
}
if (InputManager.IsOp2)
{
if (Player.IsLureRod)
{
//抬杆
isUpRod = true;
}
}
//Player.ModelAsset.PlayerAnimator.FishingUp = 0;
if (isUpRod || PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp > 0)
{
var upForce = 1;
var addNum = upForce * Time.deltaTime;
if (!isUpRod)
{
addNum *= -1;
}
else
{
addNum *= 0.5f;
}
// Debug.Log($"addNum={addNum}");
PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp += addNum;
// Debug.LogError($"ishingFinal={Player.ModelAsset.PlayerAnimator.FishingUp}");
if (PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp >= 1)
{
PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp = 1;
}
else if (PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp < 0)
{
PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp = 0;
}
if (PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp >= 0.8f)
{
ret = CheckTackFish();
}
}
else
{
PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp = 0;
}
if (ret != PlayerState.None)
{
Player.ChangeState(ret);
}
}
#region
private PlayerState CheckTackFish()
{
return PlayerState.Idle;
}
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 84665b6bc7c84642b365db024c7759fd
timeCreated: 1773064529

View File

@@ -0,0 +1,25 @@
namespace NBF
{
public class PlayerStageViewIdle : PlayerStageViewBase
{
protected override void OnEnter()
{
InputManager.OnOp1Action += OnOp1Action;
}
private void OnOp1Action(bool performed)
{
if (Player.HandItem == null) return;
if (performed)
{
Player.ChangeState(PlayerState.Prepare);
// _nextState = true;
}
}
protected override void OnExit()
{
InputManager.OnOp1Action -= OnOp1Action;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1fca81636d7246e7a5f84684a8563ca3
timeCreated: 1773063824

View File

@@ -0,0 +1,73 @@
using NBC;
using UnityEngine;
namespace NBF
{
public class PlayerStageViewPrepare : PlayerStageViewBase
{
public enum Phase
{
None,
/// <summary>
/// 蓄力
/// </summary>
Charged,
/// <summary>
/// 确认蓄力结果
/// </summary>
Confirm,
}
public Phase Stage = Phase.Charged;
public float ChargedProgress;
protected override void OnEnter()
{
Log.Info("enter PlayerStatePrepare");
Stage = Phase.Charged;
PlayerView.Unity.ModelAsset.PlayerAnimator.PrepareThrow = true;
PlayerView.Unity.ModelAsset.PlayerAnimator.FishingUp = 0;
}
protected override void OnUpdate()
{
if (Stage == Phase.Charged)
{
ThrowPowerCharged();
}
else if (Stage == Phase.Confirm)
{
//确认蓄力结果,
Debug.Log($"确认蓄力结果,ChargedProgress={ChargedProgress}");
var par = new StateEnterParams();
par.SetFloat(StateParamsConst.ChargedProgress, ChargedProgress);
Player.ChangeState(PlayerState.Throw);
Stage = Phase.None;
}
}
#region
private void ThrowPowerCharged()
{
if (ChargedProgress < 1)
{
ChargedProgress += Time.deltaTime;
}
else if (ChargedProgress > 1)
{
ChargedProgress = 1;
}
if (!InputManager.IsOp1)
{
Stage = Phase.Confirm;
}
}
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 77cce716a7f94e0083789eb2953d5f79
timeCreated: 1773064499

View File

@@ -0,0 +1,75 @@
using NBC;
using UnityEngine;
namespace NBF
{
public class PlayerStageViewThrow : PlayerStageViewBase
{
private bool _nextState = false;
public float ChargedProgress;
protected override void OnEnter()
{
Log.Info("enter PlayerStateThrow");
PlayerView.Unity.ModelAsset.PlayerAnimator.StartThrow = true;
ChargedProgress = 0;
if (Params != null)
{
ChargedProgress = Params.GetFloat(StateParamsConst.ChargedProgress);
}
Debug.Log($"PlayerThrow ChargedProgress={ChargedProgress}");
_nextState = false;
// Stage = Phase.Waiting;
// _owner.Gears.Reel?.Unlock();
}
protected override void OnUpdate()
{
CheckStateTimeout(10);
if (_nextState)
{
// return (uint)PlayerState.Fishing;
_nextState = false;
Player.ChangeState(PlayerState.Fishing);
}
}
// IEnumerator ThrowCoroutine(float distance)
// {
// float startLength = 0.5f;
// Debug.Log($"REST LENGTH : {rope.restLength}");
// do
// {
// float a = Vector3.Distance(rodTipTarget.position, attachedBody.transform.position);
// attachedBody.RBody.AddForce(playerForward.Value, ForceMode.VelocityChange);
// startLength = Mathf.Max(a, startLength);
// UnwindLine(attachedBody.RBody.linearVelocity.magnitude * Time.deltaTime);
// yield return null;
// }
// while ((bool)isBailOpen);
// }
#region
/// <summary>
/// 抛竿动画事件
/// </summary>
public void OnRodThrowStart()
{
Debug.LogError("OnRodThrowStart");
PlayerView.Unity.ModelAsset.PlayerAnimator.PrepareThrow = false;
PlayerView.Unity.ModelAsset.PlayerAnimator.StartThrow = false;
}
public void OnRodThrownEnd()
{
Debug.LogError("OnRodThrownEnd");
_nextState = true;
}
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 240bbc6c969a4d2e9759ac1df5e6ccf2
timeCreated: 1773064512