Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/RopeTestLogic.cs
2026-02-21 16:45:37 +08:00

79 lines
1.9 KiB
C#

using UnityEngine;
public class RopeTestLogic : MonoBehaviour
{
public GameObject fishingRod;
public GameObject bait;
public GameObject baitStartPos;
public GameObject rodEndPos;
public UltimateRope rope;
public float throwStrength = 10f;
public float ropeLengthMargin = 3f;
private bool isThrown;
private void Start()
{
rope.Regenerate();
rope.GetComponent<RopeAdditionalParams>().UpdateNodes(rope);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.T))
{
ThrowBait();
}
if (Input.GetKeyDown(KeyCode.R))
{
ResetBait();
}
if (Input.GetKeyDown(KeyCode.Z))
{
rope.ExtendRope(UltimateRope.ERopeExtensionMode.LinearExtensionIncrement, -0.1f);
}
else if (Input.GetKeyDown(KeyCode.X))
{
rope.ExtendRope(UltimateRope.ERopeExtensionMode.LinearExtensionIncrement, 0.1f);
}
if (isThrown)
{
UpdateRope();
}
}
public void UpdateRope()
{
float num = Vector3.Distance(rodEndPos.transform.position, bait.transform.position);
if (rope.m_fCurrentExtension < num + ropeLengthMargin - rope.RopeNodes[0].fLength)
{
rope.ExtendRope(UltimateRope.ERopeExtensionMode.LinearExtensionIncrement, num + ropeLengthMargin - rope.RopeNodes[0].fLength - rope.m_fCurrentExtension);
}
}
public void ThrowBait()
{
bait.transform.localRotation = Quaternion.Euler(0f, 0f, 0f);
Vector3 forward = base.transform.forward;
bait.GetComponent<Rigidbody>().isKinematic = false;
bait.GetComponent<Rigidbody>().AddForce(forward * throwStrength);
isThrown = true;
}
public void ResetBait()
{
bait.transform.position = baitStartPos.transform.position;
bait.GetComponent<Rigidbody>().isKinematic = true;
bait.GetComponent<Rigidbody>().velocity = Vector3.zero;
bait.GetComponent<Rigidbody>().angularVelocity = Vector3.zero;
rope.ExtendRope(UltimateRope.ERopeExtensionMode.LinearExtensionIncrement, 0f - rope.m_fCurrentExtension);
isThrown = false;
}
}