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; } } }