コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】スプライトをドラッグする時にクリックした位置を保持しておく方法

概要

using UnityEngine;
using UnityEngine.EventSystems;

public class Example :
    MonoBehaviour,
    IPointerDownHandler,
    IDragHandler
{
    private Vector3 m_offset;

    void IPointerDownHandler.OnPointerDown( PointerEventData eventData )
    {
        var worldPoint = Camera.main.ScreenToWorldPoint( eventData.position );
        worldPoint.z = 0;

        m_offset = transform.position - worldPoint;
    }

    void IDragHandler.OnDrag( PointerEventData eventData )
    {
        var worldPoint = Camera.main.ScreenToWorldPoint( eventData.position );
        worldPoint.z = 0;

        transform.position = worldPoint + m_offset;
    }
}