Как масштабировать игровой объект с помощью пинча? - PullRequest
0 голосов
/ 23 января 2020

Как масштабировать gameObject (куб) с помощью щепотки (2 пальца) в Android / iOS ?. Если щепотка расширяется, то масштаб куба (x, y, z) становится больше, а если щепотка закрывается, то масштаб куба становится меньше.

У меня есть скрипт для перетаскивания мышью, но масштабируется только по 2 осям (x, y).

public class Drag : MonoBehaviour
{
    Vector3 lastMousePosition;
    float scaleSensitivity = 2f;
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) {
             lastMousePosition = Input.mousePosition;
         }
         if (Input.GetMouseButton(0)) {
             transform.localScale += ((Input.mousePosition - lastMousePosition) * Time.deltaTime * scaleSensitivity);
             lastMousePosition = Input.mousePosition;
         }
    }

}

1 Ответ

0 голосов
/ 23 января 2020

Взгляните на Input.Touches: Input.Touches и используйте разность (Input.Touches[0] - Input.Touches[1]).magnitude, фиксируя каждый кадр этой разницы. Если он становится больше с каждым кадром, это означает, что пользователь увеличивает масштаб, иначе, если он становится меньше, это означает, что пользователь уменьшает

float? _prevFrameDiff;

void Update()
{
    if (Input.touches.Length < 2)
    {
        _prevFrameDiff = null;
        return;
    }

    var diff = (Input.touches[0].position - Input.touches[1].position).magnitude;

    if (!_prevFrameDiff.HasValue)
    {
        _prevFrameDiff = diff;
        return;
    }
    else
    {
        var scaleFactor = diff / _prevFrameDiff.Value;

        this.transform.localScale = Vector3.one * scaleFactor;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...