修改脚本

This commit is contained in:
2026-03-22 09:33:56 +08:00
parent 1e1fec02cd
commit ba5da38dde
127 changed files with 31514 additions and 22327 deletions

View File

@@ -0,0 +1,85 @@
using UnityEngine;
namespace NBF
{
public class JointPinchController : MonoBehaviour
{
// 配置参数
[SerializeField] private float moveSpeed = 5f;
[SerializeField] private float snapDistance = 0.1f;
// 组件引用
private ConfigurableJoint originalSpringJoint;
private FixedJoint pinchJoint;
private Rigidbody rb;
private Transform targetTransform;
private float originalSpring;
public bool isPinched { get; private set; }
private bool moveToTargetDone;
private float _speed;
void Start()
{
rb = GetComponent<Rigidbody>();
originalSpringJoint = GetComponent<ConfigurableJoint>();
}
void FixedUpdate()
{
if (isPinched && targetTransform != null)
{
transform.position =
Vector3.MoveTowards(transform.position, targetTransform.position, Time.deltaTime * _speed);
if (!moveToTargetDone)
{
if (Vector3.Distance(transform.position, targetTransform.position) < 0.1f)
{
moveToTargetDone = true;
}
}
if (moveToTargetDone)
{
transform.position = targetTransform.position;
}
}
}
// 外部调用:开始捏住流程
public void StartPinch(Transform fingerTransform, float speed = 3)
{
_speed = speed;
Rigidbody fingerRb = fingerTransform.GetComponent<Rigidbody>();
if (fingerRb == null)
{
Debug.LogError("目标必须带有Rigidbody");
return;
}
isPinched = true;
rb.useGravity = false;
rb.isKinematic = true;
moveToTargetDone = false;
targetTransform = fingerTransform;
}
// 外部调用:释放捏住
public void ReleasePinch()
{
isPinched = false;
rb.useGravity = true;
rb.linearVelocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
rb.isKinematic = false;
rb.linearVelocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
targetTransform = null;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1de1bec90e454664a860c5248170ff95
timeCreated: 1773588197

View File

@@ -152,6 +152,7 @@ namespace NBF
/// </summary>
public void OnRodThrowStart()
{
Debug.LogError("OnRodThrowStart");
if (Player.State == PlayerState.Throw)
{
var playerStateView = Player.GetComponent<PlayerStateView>();
@@ -167,6 +168,7 @@ namespace NBF
/// </summary>
public void OnRodThrownEnd()
{
Debug.LogError("OnRodThrownEnd");
if (Player.State == PlayerState.Throw)
{
var playerStateView = Player.GetComponent<PlayerStateView>();