diff --git a/Assets/Scripts/Fishing/Gear/FGear.cs b/Assets/Scripts/Fishing/Gear/FGear.cs
deleted file mode 100644
index e936a7ffb..000000000
--- a/Assets/Scripts/Fishing/Gear/FGear.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using UnityEngine;
-
-namespace NBF
-{
- public class FGear : MonoBehaviour
- {
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/Gear/FTackle.cs b/Assets/Scripts/Fishing/Gear/FTackle.cs
new file mode 100644
index 000000000..6015b7e31
--- /dev/null
+++ b/Assets/Scripts/Fishing/Gear/FTackle.cs
@@ -0,0 +1,223 @@
+using System.Collections;
+using Fantasy;
+using UnityEngine;
+
+namespace NBF
+{
+ ///
+ /// 钓组
+ ///
+ public class FTackle : MonoBehaviour
+ {
+ private ItemInfo _itemInfo;
+
+ public static FTackle Create(ItemInfo itemInfo)
+ {
+ var root = SceneSettings.Instance.GearNode;
+ var obj = new GameObject($"Rod_{itemInfo.ConfigId}").AddComponent();
+ obj.transform.SetParent(root.transform);
+ obj.transform.localPosition = Vector3.zero;
+ obj.transform.localRotation = Quaternion.identity;
+ obj.transform.localScale = Vector3.one;
+ return obj;
+ }
+
+ public IEnumerator Show(ItemInfo itemInfo)
+ {
+ _itemInfo = itemInfo;
+ yield return 1;
+
+ // var parent = GearParent;
+ // parent.position = Player.transform.position;
+ //
+ // var data = Player.Data.currentGear;
+ // var rodConfig = data.rod.Config;
+ // var cloneObj = rodConfig.Instantiate(parent, Vector3.zero, Player.MainArm.RodContainer.rotation);
+ // if (cloneObj == null)
+ // {
+ // yield break;
+ // }
+ //
+ // Rod = cloneObj.GetComponent();
+ // if (Rod == null)
+ // {
+ // Rod = cloneObj.AddComponent();
+ // }
+ //
+ //
+ // if (Rod)
+ // {
+ // Rod.transform.localPosition = Vector3.zero;
+ // Rod.transform.rotation = Player.MainArm.RodContainer.rotation;
+ //
+ // if (rodConfig.ring > 0)
+ // {
+ // var ringConfig = GameRings.Get(rodConfig.ring);
+ // var ringObject = ringConfig.Instantiate(Rod.transform);
+ // ringObject.SetActive(false);
+ // Rod.SetRing(ringObject.GetComponent());
+ // }
+ // }
+ // else
+ // {
+ // yield break;
+ // }
+ //
+ // if (data.line != null)
+ // {
+ // var linePrefab = data.line.Config.Instantiate(parent);
+ // Line = linePrefab.GetComponent();
+ // }
+ //
+ // if (data.reel != null)
+ // {
+ // var reelPrefab = data.reel.Config.Create(parent);
+ // Reel = reelPrefab.GetComponent();
+ // }
+ //
+ // if (data.bobber != null)
+ // {
+ // var bobberPrefab = data.bobber.Config.Create(parent);
+ // Bobber = bobberPrefab.GetComponent();
+ // }
+ //
+ // if (data.hook != null)
+ // {
+ // var hookPrefab = data.hook.Config.Create(parent);
+ // Hook = hookPrefab.GetComponent();
+ // }
+ //
+ // if (data.bait != null)
+ // {
+ // var baitPrefab = data.bait.Config.Create(parent);
+ //
+ // if (baitPrefab.TryGetComponent(out var bait))
+ // {
+ // Bait = bait;
+ // }
+ // }
+ //
+ // if (data.lure != null)
+ // {
+ // var baitPrefab = data.lure.Config.Create(parent);
+ // if (baitPrefab.TryGetComponent(out var lure))
+ // {
+ // Lure = lure;
+ // }
+ // }
+ //
+ //
+ // if (data.weight != null)
+ // {
+ // var weightPrefab = data.weight.Config.Instantiate(parent);
+ // Weight = weightPrefab.GetComponent();
+ // }
+ //
+ // Debug.LogError("CreateOrHideGear");
+ // yield return 1;
+ // Rod.Initialize(Player, data.rod);
+ // Rod.CreateFishingHandler();
+ //
+ // if (Line)
+ // {
+ // Line.Initialize(Player, data.line);
+ //
+ //
+ // if ((bool)Rod.lineHandler.obiRopeSegment_1)
+ // {
+ // Rod.lineHandler.obiRopeSegment_1.GetComponent().material =
+ // Line.lineMat;
+ // }
+ //
+ // if ((bool)Rod.lineHandler.obiRopeSegment_2)
+ // {
+ // Rod.lineHandler.obiRopeSegment_2.GetComponent().material =
+ // Line.lineMat;
+ // }
+ //
+ // if ((bool)Rod.lineHandler.obiRopeSegment_3)
+ // {
+ // Rod.lineHandler.obiRopeSegment_3.GetComponent().material =
+ // Line.lineMat;
+ // }
+ // }
+ //
+ // if (Reel)
+ // {
+ // // Reel.maxReelStrength = data.reel.Config.strength;
+ // // Reel.reelingSpeed = 0.5f; //slotsEquip.reel.currentSpeed;
+ // Reel.reelingDrag = 0.699f; //slotsEquip.reel.currentDrag;
+ // Reel.transform.SetParent(Rod.rodAsset.ReelConnector);
+ // Reel.transform.localPosition = Vector3.zero;
+ // Reel.transform.localEulerAngles = Vector3.zero;
+ // // Reel.reelAsset.szpulaObject.GetComponent().material = Line.szpulaMat;
+ // Reel.Initialize(Player, data.reel);
+ // }
+ //
+ // if (Bobber)
+ // {
+ // Bobber.floatDisplacement = data.bobber.Config.displacement;
+ // // if ((double)slotsEquip.ffloat.lastSetGroundValue > 0.2)
+ // // {
+ // // Bobber.newDeepth = slotsEquip.ffloat.lastSetGroundValue;
+ // // }
+ //
+ // Bobber.newDeepth = 0.5f;
+ //
+ // Bobber.Initialize(Player, data.bobber);
+ // Bobber.transform.position = Rod.lineHandler.LineConnector_1.transform.position;
+ // Bobber.gameObject.GetComponent().connectedBody =
+ // Rod.lineHandler.LineConnector_1.GetComponent();
+ // }
+ //
+ //
+ // if (Hook)
+ // {
+ // Hook.Initialize(Player, data.hook);
+ //
+ // Hook.transform.position = Rod.lineHandler.LineConnector_2.transform.position;
+ // Hook.transform.rotation = Rod.lineHandler.LineConnector_2.transform.rotation; // 确保旋转也同步
+ // var target = Rod.lineHandler.LineConnector_2.GetComponent();
+ // var joint = Hook.gameObject.GetComponent();
+ // // // 关键设置:关闭自动锚点计算,手动设置锚点
+ // // joint.autoConfigureConnectedAnchor = false;
+ // // joint.anchor = Vector3.zero; // 以 Hook 自身中心为锚点
+ // // joint.connectedAnchor = Vector3.zero; // 以目标物体的中心为锚点
+ // joint.connectedBody = target;
+ // // // 强制物理引擎立即更新变换(避免1帧延迟)
+ // // Physics.SyncTransforms();
+ // // joint.autoConfigureConnectedAnchor = false;
+ // // joint.anchor = Vector3.zero;
+ // // joint.connectedAnchor = Vector3.zero;
+ // Rod.LureHookWaterDisplacement = Hook.GetComponent();
+ // }
+ //
+ // if (Bait)
+ // {
+ // Bait.Initialize(Player, data.bait);
+ // Bait.transform.position = Hook.hookAsset.baitConnector.position;
+ // Bait.transform.SetParent(Hook.hookAsset.baitConnector);
+ // }
+ //
+ // if (Lure)
+ // {
+ // Lure.Initialize(Player, data.bait);
+ // Lure.transform.position = Rod.lineHandler.LineConnector_1.transform.position;
+ // Lure.gameObject.GetComponent().connectedBody =
+ // Rod.lineHandler.LineConnector_1.GetComponent();
+ // Rod.LureHookWaterDisplacement = Lure.GetComponent();
+ // }
+ //
+ // if (Weight)
+ // {
+ // Weight.weight = data.weight.Config.weight;
+ // Weight.Initialize(Player, data.weight);
+ // }
+ }
+
+ public IEnumerator Remove()
+ {
+ yield return 1;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/Gear/FGear.cs.meta b/Assets/Scripts/Fishing/Gear/FTackle.cs.meta
similarity index 100%
rename from Assets/Scripts/Fishing/Gear/FGear.cs.meta
rename to Assets/Scripts/Fishing/Gear/FTackle.cs.meta
diff --git a/Assets/Scripts/Fishing/Player/FPlayer.Input.cs b/Assets/Scripts/Fishing/Player/FPlayer.Input.cs
index 901b24195..28834db39 100644
--- a/Assets/Scripts/Fishing/Player/FPlayer.Input.cs
+++ b/Assets/Scripts/Fishing/Player/FPlayer.Input.cs
@@ -1,4 +1,5 @@
using NBC;
+using NBF.Utils;
using UnityEngine;
using UnityEngine.InputSystem;
@@ -48,6 +49,11 @@ namespace NBF
{
var index = int.Parse(action.Replace(InputDef.Player.QuickStarts, string.Empty));
Log.Info($"快速使用===={index}");
+ var item = RoleModel.Instance.GetSlotItem(index - 1);
+ if (item != null)
+ {
+ Game.Instance.StartCoroutine(UseItem(item));
+ }
}
}
diff --git a/Assets/Scripts/Fishing/Player/FPlayer.cs b/Assets/Scripts/Fishing/Player/FPlayer.cs
index 87db3ea4e..6775258e5 100644
--- a/Assets/Scripts/Fishing/Player/FPlayer.cs
+++ b/Assets/Scripts/Fishing/Player/FPlayer.cs
@@ -1,8 +1,11 @@
using System;
+using System.Collections;
+using System.Collections.Generic;
using ECM2;
using ECM2.Examples.FirstPerson;
using Fantasy;
using NBF.Fishing2;
+using NBF.Utils;
using UnityEngine;
using UnityEngine.InputSystem;
@@ -23,6 +26,9 @@ namespace NBF
public FPlayerData Data { get; private set; }
+ public readonly List Tackles = new List();
+ public FTackle HandTackle { get; private set; }
+
protected override void OnAwake()
{
Character = gameObject.GetComponent();
@@ -48,7 +54,6 @@ namespace NBF
RemoveInputEvent();
}
-
#region 角色模型
@@ -62,5 +67,29 @@ namespace NBF
}
#endregion
+
+ #region 使用物品
+
+ public IEnumerator UseItem(ItemInfo item)
+ {
+ var itemType = item?.ConfigId.GetItemType();
+ if (itemType == ItemType.Rod)
+ {
+ if (HandTackle)
+ {
+ yield return HandTackle.Remove();
+ Tackles.Remove(HandTackle);
+ HandTackle = null;
+ }
+
+ //判断旧的是否要收回
+ var tackle = FTackle.Create(item);
+ HandTackle = tackle;
+ yield return tackle.Show(item);
+ Tackles.Add(tackle);
+ }
+ }
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Init.cs b/Assets/Scripts/Init.cs
index ad622f2c3..d92cb2539 100644
--- a/Assets/Scripts/Init.cs
+++ b/Assets/Scripts/Init.cs
@@ -1,12 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Threading.Tasks;
-using FairyGUI;
-using Fantasy.Async;
-using NBC;
-using NBF.Fishing2;
-using UnityEngine;
+using UnityEngine;
using UnityEngine.Video;
namespace NBF
diff --git a/Assets/Scripts/Model/RoleModel.cs b/Assets/Scripts/Model/RoleModel.cs
index 3ce2f00cc..0249128f0 100644
--- a/Assets/Scripts/Model/RoleModel.cs
+++ b/Assets/Scripts/Model/RoleModel.cs
@@ -35,9 +35,8 @@ namespace NBF
Info = response.RoleInfo;
}
-
#endregion
-
+
#region 背包
public readonly List Items = new List();
@@ -131,6 +130,7 @@ namespace NBF
return ret;
}
+
#region 数据操作
diff --git a/Fishing2.sln.DotSettings.user b/Fishing2.sln.DotSettings.user
index 2bc83cd89..910c9efdf 100644
--- a/Fishing2.sln.DotSettings.user
+++ b/Fishing2.sln.DotSettings.user
@@ -34,6 +34,7 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded