LemonteaのUnity部屋

LemonteaのUnity部屋

Unityの使い方とかです~

Unity Input.Touches[n].positionでピンチ操作

こんにちは。レモンティーです。

Unityのマルチタップを
今まであまり使っていなかったので、
今回はマルチタップの試しに
二本指の代表的操作…ピンチ操作をつくってみます。

参考にしたのはここです
tasogare-games.hatenablog.jp


今回は、カメラを動かすことで再現しました。

そのままだとUIはカメラについてくるので
CanvasコンポーネントのRenderModeをWorldSpaceにしておきます↓

f:id:sawalemontea:20170912193429p:plain

これでOK。
あとはスクリプトでカメラを動かします

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Zoom : MonoBehaviour {
    Vector3 Pre, Now;
	void Update () {
		if(Input.touchCount == 2)
        {
            if(Pre == Vector3.zero)
            {
                Pre = Input.touches[1].position - Input.touches[0].position;
            }
           Now = Input.touches[1].position - Input.touches[0].position;
           float Change = Now.magnitude / Pre.magnitude;
           gameObject.transform.position *= Change;
           Pre = Input.touches[1].position - Input.touches[0].position;
        }
        else
        {
            Pre = Vector3.zero;
        }
	}
}

これをカメラに付ければピンチ操作ができます。

仕組みは、二本の指の距離が前のフレームの時と比べてn倍になったら、
カメラの原点からの距離もn倍する…というものです。

nが1より大きければ拡大、
小さければ縮小です。

しかしカメラを動かすというのは…ちょっと
強引な気もするのでもっといい方法があるかもしれませんね笑

今回はこれでおしまいです。