おれ、Unity2Dでゲーム作るんだ。

Unity2Dをメインに、覚書などを記事にしていきます。

Unity - EasyTouch4でスプライトをドラッグするサンプル

スプライトオブジェクトを作成

適当なスプライトオブジェクトを追加します。

f:id:xev:20150203030235p:plain

 

 

コライダーくっつける

スプライトにコライダーをくっつけておかないと触れない。

f:id:xev:20150203030328p:plain

コライダーの形状は、くっつけるスプライトに合わせて適当に選んでください。  
 

EasyTouchを追加

追加方法は、前の記事を参照ください。  
 

EasyTouchが2Dのイベントも拾うように設定

EasyTouchの[Automatic selection]で[Enable 2D collider]にチェックを入れます。  
デフォルトでは、3Dしかチェックが入ってないので、
2Dで利用する場合はチェックを入れてください。
 
イベントを拾うレイヤーもスプライトと合わせておきます。

f:id:xev:20150203030829p:plain

 
 

スクリプトをスプライトに追加

以下の様にスクリプトを作成して、スクリプトに追加します。

using UnityEngine;
using System.Collections;

public class MyEasyTouchDrag : MonoBehaviour
{
    private Vector3 deltaPosition;

    // Subscribe to events
    void OnEnable ()
    {
        EasyTouch.On_Drag += On_Drag;
        EasyTouch.On_DragStart += On_DragStart;
        EasyTouch.On_DragEnd += On_DragEnd;
    }

    void OnDisable ()
    {
        UnsubscribeEvent ();
    }

    void OnDestroy ()
    {
        UnsubscribeEvent ();
    }

    void UnsubscribeEvent ()
    {
        EasyTouch.On_Drag -= On_Drag;
        EasyTouch.On_DragStart -= On_DragStart;
        EasyTouch.On_DragEnd -= On_DragEnd;
    }

    void Start ()
    {
    }

    //dragスタート
    void On_DragStart (Gesture gesture)
    {
        //オブジェクト判定
        if (gesture.pickedObject == gameObject) {
            //タッチ位置をワールド座標に変換
            Vector3 position = gesture.GetTouchToWorldPoint (gesture.pickedObject.transform.position);
            deltaPosition = position - transform.position;
        }   
    }

    //ドラッグ中
    void On_Drag (Gesture gesture)
    {
        if (gesture.pickedObject == gameObject) {
            Vector3 position = gesture.GetTouchToWorldPoint (gesture.pickedObject.transform.position);
            transform.position = position - deltaPosition;
        }
    }

    //ドラッグ終了
    void On_DragEnd (Gesture gesture)
    {

    }
}

これでRun

これで、ドラッグ出来ると思います。