首页 > 解决方案 > 如何用捏缩放游戏对象?

问题描述

如何在 Android/iOS 中用捏(2 根手指)缩放游戏对象(立方体)?如果捏在扩大,那么立方体的比例(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;
         }
    }

}

标签: c#iosunity3d

解决方案


看看 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;
    }
}

推荐阅读