我正在制作一个2D游戏,其中玩家通过用手指在屏幕上拖动来围绕它的轴心旋转来控制圆形精灵。我需要一种方法来限制玩家旋转精灵的速度,因为现在,如果他旋转得太快,会使混乱的碰撞变得混乱,则精灵会因为高速而通过碰撞器。
我尝试了多种方法来执行此操作,使用了多个脚本,在互联网上搜索了此问题的答案,但没有找到与我所寻找的内容相近的东西。我尝试过使用变量来提高速度,即使一开始它会使速度变慢,但如果多次快速旋转精灵,仍然可以使其旋转得太快。
public class Rotation : MonoBehaviour
{
[SerializeField]
private float turnSpeed = 5;
private Vector2 movement;
void Update()
{
Vector2 currentPosition = transform.position;
#if UNITY_EDITOR
if (Input.GetButton("Fire1"))
{
Vector2 moveTowards = Camera.main.ScreenToWorldPoint(Input.mousePosition);
movement = moveTowards - currentPosition;
movement.Normalize();
}
#else
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
Vector2 moveTowards = Camera.main.ScreenToWorldPoint(touch.position);
movement = moveTowards - currentPosition;
movement.Normalize();
}
}
#endif
float targetAngle = Mathf.Atan2(movement.y, movement.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, 0, targetAngle), turnSpeed * Time.deltaTime);
}
}
这是我用来旋转精灵的代码。关于如何使它以一定速度旋转而又不超过该速度的任何想法,无论玩家拖动手指有多快?