Я делаю 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);
}
}
код, который я использую для вращения спрайта.Любые идеи о том, как я могу заставить его вращаться с определенной скоростью и не превышать эту скорость, независимо от того, насколько быстро игрок тянет палец?