【Unity3D日常开发】(八)Unity3D中实现手指任意拖动物体

举报
恬静的小魔龙 发表于 2021/10/24 18:22:07 2021/10/24
【摘要】 推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 一、前言手指拖动物体,也是交互中比较常见的一种操作,那么就让我们来看看怎么实现吧效果图: 二、实现接下来说一下实现步骤新建一个Cube,设置好物体的坐标大小新建脚本Drag.cs,叫脚本Drag.cs挂在Cube上编写脚本Drag.csusing System.Collection...

推荐阅读

一、前言

手指拖动物体,也是交互中比较常见的一种操作,那么就让我们来看看怎么实现吧

效果图:
这里写图片描述

二、实现

接下来说一下实现步骤

  1. 新建一个Cube,设置好物体的坐标大小
  2. 新建脚本Drag.cs,叫脚本Drag.cs挂在Cube上
  3. 编写脚本Drag.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Drag : MonoBehaviour
{
    //偏移值
    Vector3 m_Offset;
    //当前物体对应的屏幕坐标
    Vector3 m_TargetScreenVec;
   
    private IEnumerator OnMouseDown()
    {
        //当前物体对应的屏幕坐标
        m_TargetScreenVec = Camera.main.WorldToScreenPoint(transform.position);
        //偏移值=物体的世界坐标,减去转化之后的鼠标世界坐标(z轴的值为物体屏幕坐标的z值)
        m_Offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3
        (Input.mousePosition.x, Input.mousePosition.y, m_TargetScreenVec.z));
        //当鼠标左键点击
        while (Input.GetMouseButton(0))
        {
            //当前坐标等于转化鼠标为世界坐标(z轴的值为物体屏幕坐标的z值)+ 偏移量
            transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
             Input.mousePosition.y, m_TargetScreenVec.z)) + m_Offset;
            //等待固定更新
            yield return new WaitForFixedUpdate();
        }
    }
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。