Help us understand the problem. What is going on with this article?

Unityでピンチイン・ピンチアウトを実装する

More than 3 years have passed since last update.

Unityでピンチイン・ピンチアウトの機能を実現するために作成しました。
今回は地図(GUITextureで作成したmapというオブジェクト)が拡大、縮小しているようにしていますが、実際はカメラの視角値を変えている方法をとっています。

スクリプト

C#
using UnityEngine;
using System.Collections;

public class PinchInOut : MonoBehaviour {

    //public Camera camera;
    public GUITexture map;

    //カメラ視覚の範囲
    float viewMin = 20.0f;
    float viewMax = 60.0f;

    float vMin = 1.0f;
    float vMax = 5.0f;

    //直前の2点間の距離.
    private float backDist = 0.0f;
    //初期値
    float view = 60.0f;
    float v = 1.0f;

    // Update is called once per frame
    void Update () {
        // マルチタッチかどうか確認
        if (Input.touchCount >= 2)
        {
            // タッチしている2点を取得
            Touch t1 = Input.GetTouch (0);
            Touch t2 = Input.GetTouch (1);

            //2点タッチ開始時の距離を記憶
            if (t2.phase == TouchPhase.Began)
            {
                backDist = Vector2.Distance (t1.position, t2.position);
            }
            else if (t1.phase == TouchPhase.Moved && t2.phase == TouchPhase.Moved)
            {
                // タッチ位置の移動後、長さを再測し、前回の距離からの相対値を取る。
                float newDist = Vector2.Distance (t1.position, t2.position);
                view = view + (backDist - newDist) / 100.0f;
                v = v + (newDist - backDist) / 1000.0f;

                // 限界値をオーバーした際の処理
                if(v > vMax)
                {
                    v = vMax;
                }
                else if(v < vMin)
                {
                    v = vMin;
                }

                // 相対値が変更した場合、カメラに相対値を反映させる
                if(v != 0)
                {
                    map.transform.localScale = new Vector3(v, v, 1.0f);
                }
            }
        }
    }
}

今回はカメラの視角値を調整していますが、オブジェクトの大きさを変更する方法もできるかと思います。
値の大きさや速度、変更するコンテンツなどは作成するアプリにより最適な方法をお取りください。

aivick
創意工夫でお客様の課題を解決し続ける古都京都のシステム開発会社です。ベンチャー精神を忘れず、ヘルスケア業界に革新をもたらす新サービスの実現も目指しています。
https://www.aivick.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away