У меня есть скрипт, который я использую внутри редактора для вращения спрайта, и я хочу перевести этот скрипт, чтобы использовать сенсорный ввод вместо мыши.
У меня есть следующий скрипт, который я использую длявращать спрайт в моей игре на основе перетаскивания мышью.У меня нет опыта работы с сенсорным вводом, поэтому я попробовал кое-что, что я видел в другом коде с использованием сенсорных входов.По сути, я изменил оператор if: с
if (Input.GetMouseButtonDown(0))
{
deltaRotation = 0f;
previousRotation = angleBetweenPoints(transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
}
на:
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
deltaRotation = 0f;
previousRotation = angleBetweenPoints(transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
}
}
Сейчас это мой код, который я использую для вращения моего спрайта с помощью мыши:
void Update()
{
if (Input.GetMouseButtonDown(0))
{
deltaRotation = 0f;
previousRotation = angleBetweenPoints(transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
}
else if (Input.GetMouseButton(0))
{
currentRotation = angleBetweenPoints(transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
deltaRotation = Mathf.DeltaAngle(currentRotation, previousRotation);
if (Mathf.Abs(deltaRotation) > deltaLimit)
{
deltaRotation = deltaLimit * Mathf.Sign(deltaRotation);
}
previousRotation = currentRotation;
transform.Rotate(Vector3.back * Time.deltaTime, deltaRotation);
}
else
{
transform.Rotate(Vector3.back * Time.deltaTime, deltaRotation);
deltaRotation = Mathf.Lerp(deltaRotation, 0, deltaReduce * Time.deltaTime);
}
}