[Unity3D]⿏标点击图⽚移动效果
高校专业目录
1using UnityEngine;
2using UnityEngine.EventSystems;
3using UnityEngine.UI;
4
5public class LoginMoveWithMou : MonoBehaviour, IDragHandler, IPointerDownHandler {
6//偏移值
7private Vector3 offt;
8//⽗物体变换组件
9private RectTransform PrentRTF;
10
11private void Start() {
12//查找⽗物体变换组件,仅需要执⾏⼀次即可,所以写在Start()⽅法
13 PrentRTF = ansform.parent as RectTransform;
14 }
15
16
17//拖拽时执⾏⽅法
红楼之他不想弯18public void OnDrag(PointerEventData eventData) {
19可爱的小蛋糕
20/*
21仅限于Canvas overlay渲染模式模式,⿏标拖动图⽚移动
22如果考虑偏移量问题,可以直接写下边的代码.简单
23 ansform.position = eventData.position;
24*/
25
26
27/*
28通⽤模式
哺乳期感冒能吃什么药29将屏幕坐标转换为世界坐标
30 RectTransformUtility.ScreenPointToWorldPointInRectangle
31 (⽗物体的变换组件,屏幕坐标,摄像机,out 世界坐标)
32*/
33 Vector3 wordPoint;
34 RectTransformUtility.ScreenPointToWorldPointInRectangle(PrentRTF, eventData.position, eventData.pressEventCamera, out wordPoint); 35/*移动,并计算偏移量*/
37
38
39
40
41 }
42
43///<summary>
44///当光标按下物体时执⾏,此⽅法⽤于记录偏移值
中医调理月经
45///</summary>
46///<param name="eventData">获取到的信息</param>
现实的英语47public void OnPointerDown(PointerEventData eventData) {
48/*通⽤模式,⿏标拖动图⽚移动
49将屏幕坐标转换为世界坐标
50 //RectTransformUtility.ScreenPointToWorldPointInRectangle(⽗物体的变换组件,屏幕坐标,摄像机,out 世界坐标)
51*/
52 Vector3 wordPoint;
轻拿轻放标志图片
53 RectTransformUtility.ScreenPointToWorldPointInRectangle(PrentRTF, eventData.position, eventData.pressEventCamera, out wordPoint); 54//记录偏移值(图⽚的轴⼼点 - ⿏标点下的位置)
55 offt = ansform.position - wordPoint;
56 }
目的词语
57 }
第⼆种⽅法:将代码挂在到需要移动的对象⾝上
1using UnityEngine;
2using UnityEngine.EventSystems;
3
4public class MoveBag : MonoBehaviour,IDragHandler
5 {
6 RectTransform currentRect;
7
8private void Awake() {
9 currentRect = GetComponent<RectTransform>();
10 }
11
12///<summary>
13///当拖拽时触发
14///</summary>
15///<param name="eventData"></param>
16public void OnDrag(PointerEventData ed) {
17//中⼼锚点位置 += ⿏标的移动
18 currentRect.anchoredPosition += ed.delta;
19 }
20 }
附GIF图,注意⿏标点击的位置,只要是点击在图⽚上,任意位置都能移动且计算并修复偏移值
如不想考虑偏移值,请看23⾏代码