学習記録として、残しておきます。
準備
図のような構成にします。 ![2020-10-24_21h03_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672817/c630f7d2-f759-98a4-b17c-db5e676c1d8c.png)Script2つ用意
Dragするものに対して
Imageに次のようなスクリプトをあててください。using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Drag : MonoBehaviour, IPointerDownHandler, IBeginDragHandler, IEndDragHandler, IDragHandler
{
private RectTransform rectTransform;
private CanvasGroup canvasGroup;
private void Awake()
{
rectTransform = GetComponent<RectTransform>();
canvasGroup = GetComponent<CanvasGroup>();
}
public void OnBeginDrag(PointerEventData eventData)
{
canvasGroup.alpha = .6f;
canvasGroup.blocksRaycasts = false;
}
public void OnDrag(PointerEventData eventData)
{
rectTransform.anchoredPosition += eventData.delta;//anchoredPositionは中心からの距離
}
public void OnEndDrag(PointerEventData eventData)
{
canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = true;
}
}
Dropするものに対して
Image(1)に次のスクリプトをあててください。using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Drop : MonoBehaviour, IDropHandler
{
public void OnDrop(PointerEventData eventData)
{
if (eventData.pointerDrag != null)
{
eventData.pointerDrag.GetComponent<RectTransform>().anchoredPosition = GetComponent<RectTransform>().anchoredPosition;
}
}
}
最後にすること
Dragされる、Imageに対して、CanvasGroupをつけてください。これで動きます。