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;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|