Files
Fishing2/Assets/Scripts/Fishing/Gear/FTackle.cs
Bob.Song 875960d3fd player
2025-12-24 18:01:56 +08:00

223 lines
8.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections;
using Fantasy;
using UnityEngine;
namespace NBF
{
/// <summary>
/// 钓组
/// </summary>
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<FTackle>();
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<FRod>();
// if (Rod == null)
// {
// Rod = cloneObj.AddComponent<FRod>();
// }
//
//
// 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<RodRingAsset>());
// }
// }
// else
// {
// yield break;
// }
//
// if (data.line != null)
// {
// var linePrefab = data.line.Config.Instantiate(parent);
// Line = linePrefab.GetComponent<FLine>();
// }
//
// if (data.reel != null)
// {
// var reelPrefab = data.reel.Config.Create(parent);
// Reel = reelPrefab.GetComponent<FReel>();
// }
//
// if (data.bobber != null)
// {
// var bobberPrefab = data.bobber.Config.Create(parent);
// Bobber = bobberPrefab.GetComponent<FFloat>();
// }
//
// if (data.hook != null)
// {
// var hookPrefab = data.hook.Config.Create(parent);
// Hook = hookPrefab.GetComponent<FHook>();
// }
//
// if (data.bait != null)
// {
// var baitPrefab = data.bait.Config.Create(parent);
//
// if (baitPrefab.TryGetComponent<FBait>(out var bait))
// {
// Bait = bait;
// }
// }
//
// if (data.lure != null)
// {
// var baitPrefab = data.lure.Config.Create(parent);
// if (baitPrefab.TryGetComponent<FLure>(out var lure))
// {
// Lure = lure;
// }
// }
//
//
// if (data.weight != null)
// {
// var weightPrefab = data.weight.Config.Instantiate(parent);
// Weight = weightPrefab.GetComponent<FWeight>();
// }
//
// 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<MeshRenderer>().material =
// Line.lineMat;
// }
//
// if ((bool)Rod.lineHandler.obiRopeSegment_2)
// {
// Rod.lineHandler.obiRopeSegment_2.GetComponent<MeshRenderer>().material =
// Line.lineMat;
// }
//
// if ((bool)Rod.lineHandler.obiRopeSegment_3)
// {
// Rod.lineHandler.obiRopeSegment_3.GetComponent<MeshRenderer>().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<MeshRenderer>().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<ConfigurableJoint>().connectedBody =
// Rod.lineHandler.LineConnector_1.GetComponent<Rigidbody>();
// }
//
//
// 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<Rigidbody>();
// var joint = Hook.gameObject.GetComponent<ConfigurableJoint>();
// // // 关键设置:关闭自动锚点计算,手动设置锚点
// // 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<FWaterDisplacement>();
// }
//
// 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<ConfigurableJoint>().connectedBody =
// Rod.lineHandler.LineConnector_1.GetComponent<Rigidbody>();
// Rod.LureHookWaterDisplacement = Lure.GetComponent<FWaterDisplacement>();
// }
//
// if (Weight)
// {
// Weight.weight = data.weight.Config.weight;
// Weight.Initialize(Player, data.weight);
// }
}
public IEnumerator Remove()
{
yield return 1;
}
}
}