Files
Fishing2/Assets/Scripts/ArmTest.cs
2025-05-30 20:38:41 +08:00

58 lines
1.7 KiB
C#

using System;
using NBF;
using UnityEngine;
public class ArmTest : MonoBehaviour
{
public Vector3 target = new Vector3(0, 0, 0);
public Transform targetTransform;
// public float Value;
private Quaternion initialCameraRotation;
private Quaternion initialLocalRotation;
private Quaternion initialRelativeRotation;
[SerializeField] private float smoothSpeed = 5f;
private void Start()
{
// target = transform.localEulerAngles;
// 记录初始状态
initialCameraRotation = BaseCamera.Main.transform.rotation;
initialLocalRotation = transform.localRotation;
// 计算物体相对于相机的旋转
initialRelativeRotation = Quaternion.Inverse(initialCameraRotation) * transform.rotation;
}
private void Update()
{
}
private Quaternion lastCameraRotation;
[SerializeField] private float angleThreshold = 0.1f; // 角度阈值(度)
private bool needsUpdate;
private void LateUpdate()
{
if (!targetTransform) return;
Debug.LogError(targetTransform.rotation);
// 计算物体应有的世界旋转
Quaternion targetWorldRotation = BaseCamera.Main.transform.rotation * initialRelativeRotation;
// 转换为本地旋转(如果是子物体)
transform.localRotation = Quaternion.Inverse(transform.parent.rotation) * targetWorldRotation;
// // 使用Lerp平滑过渡
// transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(target.x, target.y, target.z), smoothSpeed * Time.deltaTime);
// // targetTransform.localRotation = Quaternion.Euler(target.x, target.y, target.z);
}
}