Горячее ли ограничение MouseDrag определенной скоростью? - PullRequest
0 голосов
/ 21 июня 2019

Я делаю 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);
    }
}

код, который я использую для вращения спрайта.Любые идеи о том, как я могу заставить его вращаться с определенной скоростью и не превышать эту скорость, независимо от того, насколько быстро игрок тянет палец?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...