Unity中拖动的简单实现(UGUI以及3D物体)
2016-12-02 15:46
686 查看
拖动的基本代码如下
场景中需要一个EventSystem,一般创建UGUI的时候会自动生成
另外物体上需要有Collider
场景中需要一个EventSystem
将上面脚本拖到需要拖动的物体对象上即可
扩展:其实我们可以继承许多的接口,参考上面的方法可以实现许多我么需要的效果。包括点击等等。
[RequireComponent(typeof( RectTransform))] using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class UGUIDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { private bool isDrag = false; //偏移量 private Vector3 offset = Vector3.zero; public void OnBeginDrag(PointerEventData eventData) { isDrag = false; SetDragObjPostion(eventData); } public void OnDrag(PointerEventData eventData) { isDrag = true; SetDragObjPostion(eventData); } public void OnEndDrag(PointerEventData eventData) { SetDragObjPostion(eventData); } void SetDragObjPostion(PointerEventData eventData) { RectTransform rect = this.GetComponent<RectTransform>(); Vector3 mouseWorldPosition; //判断是否点到UI图片上的时候 if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.pressEventCamera, out mouseWorldPosition)) { if (isDrag) { rect.position = mouseWorldPosition + offset; } else { //计算偏移量 offset = rect.position - mouseWorldPosition; } //直接赋予position点到的时候回跳动 //rect.position = mouseWorldPosition; } } }
UGUI中
只需要将上面的代码拖到想要移动的物体上即可场景中需要一个EventSystem,一般创建UGUI的时候会自动生成
3D物体上
需要在摄像机上加入 Physics RayCaster 组件另外物体上需要有Collider
场景中需要一个EventSystem
将上面脚本拖到需要拖动的物体对象上即可
扩展:其实我们可以继承许多的接口,参考上面的方法可以实现许多我么需要的效果。包括点击等等。
相关文章推荐
- unity 3d中简单巧妙的实现拖动鼠标旋转物体
- Unity 通过UGUI实现3D物体点击事件
- Unity 实现鼠标拖动3D物体
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- unity 2D 透明遮罩 简单实现物体一半透明
- Unity 3D - 鼠标拖动物体Demo
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- Unity开发HTC vive 三、远处拖动3D物体
- Unity 3D鼠标操作实现旋转、缩放观察物体
- Unity 3D 移动端简单阴影的实现
- Unity里用最简单的办法实现一个物体一直看另一个物体
- Unity 3D物体的点击事件响应以及NGUI坐标和世界坐标的互相转换
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- Unity从UI拖物体到场景中以及鼠标拖动物体
- Unity中实现3D物体跳跃
- 时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现
- Unity简单利用屏幕坐标转换实现鼠标控制物体移动
- 高通ar,unity实现3D物体识别,图片识别
- 实现3d物体与Ugui的混合显示