44 lines
1.6 KiB
C#
Raw Normal View History

2025-09-08 14:51:28 +08:00
using UnityEngine;
2025-09-08 17:37:12 +08:00
namespace DongWuYiXue.DaoNiaoShu
2025-09-08 14:51:28 +08:00
{
public class Rotator : MonoBehaviour
{
public Transform pointToRotateAround; // ҪΧ<D2AA><CEA7><EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD>
public Vector3 rotationAxis = Vector3.up; // Χ<>Ƶ<EFBFBD><C6B5><EFBFBD>ת<EFBFBD>ᣬĬ<E1A3AC><C4AC><EFBFBD><EFBFBD>y<EFBFBD><79>
public float minRotationAngle = 0f; // <20><>С<EFBFBD><D0A1>ת<EFBFBD>Ƕ<EFBFBD>
public float maxRotationAngle = 360f; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
private float currentRotationAngle; // <20><>ǰ<EFBFBD><C7B0>ת<EFBFBD>Ƕ<EFBFBD>
// ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
public enum RotationDirection
{
Clockwise,
CounterClockwise
}
public RotationDirection rotationDirection = RotationDirection.Clockwise; // <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>˳ʱ<CBB3><CAB1>
//void Update()
//{
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
// if (Input.GetKeyDown(KeyCode.Space))
// {
// SetRotationAngle(Random.Range(minRotationAngle, maxRotationAngle));
// }
//}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȵķ<C8B5><C4B7><EFBFBD>
public void SetRotationAngle(float angle)
{
// <20><><EFBFBD>ƽǶȷ<C7B6>Χ
angle = Mathf.Clamp(angle, minRotationAngle, maxRotationAngle);
// <20>õ<EFBFBD><C3B5><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float rotationFactor = (rotationDirection == RotationDirection.Clockwise) ? 1f : -1f;
// <20><><EFBFBD><EFBFBD><EFBFBD>ǶȲ<C7B6>
float angleDelta = angle - currentRotationAngle;
// <20><><EFBFBD>ǶȲ<C7B6>Ӧ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
transform.RotateAround(pointToRotateAround.position, rotationAxis, angleDelta * rotationFactor);
// <20><><EFBFBD>µ<EFBFBD>ǰ<EFBFBD><C7B0>ת<EFBFBD>Ƕ<EFBFBD>
currentRotationAngle = angle;
}
}
}