Unity中实现拖拽操作
发布日期:2021-06-30 19:57:06 浏览次数:2 分类:技术文章

本文共 1155 字,大约阅读时间需要 3 分钟。

一:UI元素 ——使用UI事件接口

using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class Test : MonoBehaviour,IDragHandler{    private GameObject nowDrag_go;//当前拖拽的物体    public void OnDrag(PointerEventData eventData)    {        FollowMouse(eventData);    }    private void FollowMouse(PointerEventData eventData)    {        Vector3 globalMousePos;        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(GameObject.Find("Canvas").transform as RectTransform,             eventData.position, eventData.pressEventCamera, out globalMousePos))        {            nowDrag_go.transform.position = globalMousePos;        }    }}

二:2D/3D物体——使用生命周期函数

using System;using UnityEngine;public class Test : MonoBehaviour{    private void Awake()    {        Input.multiTouchEnabled = false;    }    private void OnMouseDrag()    {        //得到摄像机到物体的向量        Vector3 v = transform.position - Camera.main.transform.position;        //得到摄像机与物体所在平面的距离        float dis = Vector3.Dot(v, Camera.main.transform.forward);        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, dis));    }}

转载地址:https://liuhaowen.blog.csdn.net/article/details/104008490 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Unity中的UGUI事件系统
下一篇:Unity编辑器扩展——标签属性Attribute

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月25日 07时45分12秒