using UnityEngine;
using System.Collections;public class MoveObject : MonoBehaviour {/// <summary>  /// 射线碰撞的结构/// </summary>  private RaycastHit m_rayhit;/// <summary>  /// 鼠标拾取的有效距离  /// </summary>  private float m_fDistance = 20f;/// <summary>/// 射线选取的游戏物体/// </summary>private GameObject m_obSelected;/// <summary>/// 记录鼠标移动前一帧的位置/// </summary>private Vector3 m_v3OldMousePos;void Update () {// 当鼠标按下时选取if (Input.GetMouseButtonDown(0)){Ray selectedRay = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit selectedRayHit;if (Physics.Raycast(selectedRay, out selectedRayHit, m_fDistance, LayerMask.GetMask("Ornament"))){m_obSelected = selectedRayHit.collider.gameObject;}}// 撤销选中目标if (Input.GetMouseButtonUp(0)){m_obSelected = null;}// 鼠标长按投射参照物(地面,墙体),进行位移if (Input.GetMouseButton(0) && m_obSelected){Vector3 v3CurMousePos = Input.mousePosition;//拖拽if (v3CurMousePos != m_v3OldMousePos){Ray ray = Camera.main.ScreenPointToRay(v3CurMousePos);//选取标记为Ref的游戏物体(地面,墙体)if (Physics.Raycast(ray, out m_rayhit, m_fDistance, LayerMask.GetMask("Ref"))){MoveOrnament();}}m_v3OldMousePos = v3CurMousePos;}}/// <summary>/// 移动选中的摆件/// </summary>private void MoveOrnament(){//获取射线碰撞到的点Vector3 movePos = m_rayhit.point;// 限制y轴坐标movePos.y = m_obSelected.transform.position.y;m_obSelected.transform.position = movePos;}
}

Unity3D 类似COC的鼠标拾取游戏物体并在限定区域摆放相关推荐

  1. Unity3D 入门小技巧——鼠标拾取并移动物体

    一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...

  2. Unity3d鼠标与游戏物体的交互(方法体)

    - OnMouseEnter() 当鼠标悬停于该物体上时执行 OnMouseEnter(){}花括号中的代码,鼠标移上去一次就执行一次 - OnMouseExit() 当鼠标移出该游戏物体时执行方法, ...

  3. 【Fracturing Destruction】点破小球——Unity3D中达到条件才触发的物体爆裂、炸裂、碎裂效果

    在<[Fracturing & Destruction]Unity3D的物体爆裂.炸裂.碎裂效果>(点击打开链接)提到了Unity3D的物体爆裂.炸裂.碎裂效果到底是用哪些组件去制 ...

  4. unity3d游戏物体跟着鼠标方向移动

    效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样. 思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动. 如果你看到这的 ...

  5. unity3D 鼠标点击游戏物体碰撞 (射线)

    先把与射线发生碰撞的游戏物体的Layer层改成MapCube 添加脚本

  6. 关于Unity3D中鼠标移动指定物体的解决方案

    一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...

  7. Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数

    Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临 ...

  8. 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )

    文章目录 一.创建 Unity 脚本 二.Visual Studio 2019 中打开 C# 脚本 三.编译 C# 脚本 四.挂载 C# 脚本到游戏物体 GameObject 1.添加组件方式 2.直 ...

  9. 【Unity3D】游戏物体操作 ① ( 场景简介 | 添加游戏物体 | 操作游戏物体 | 选中游戏物体 | 场景显示效果缩放 | 重命名游戏物体 | 复制游戏物体 | 删除游戏物体 | 移动物体 )

    文章目录 一.Scene 场景简介 二.添加游戏物体 三.操作游戏物体 1.选中游戏物体 2.场景显示效果缩放 3.重命名游戏物体 4.复制游戏物体 5.删除游戏物体 6.Inspector 检查器窗 ...

最新文章

  1. 如何写出让 CPU 跑得更快的代码?
  2. Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理
  3. nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法
  4. Windows server 2003域下全局组、本地域组及通用组之间的关系详解
  5. JavaScript数据结构和算法简述——数组
  6. 吴恩达深度学习 —— 4.5 搭建深层神经网络块
  7. mysql数据库enum部分乱码_要慎用mysql的enum字段的原因
  8. 【EOS】2.2 发行Token,转移Token
  9. topcoder srm 540 div1
  10. linux系统上安装远程软件下载,如何安装向日葵远程控制软件Linux被控端?
  11. couldn't open file: data/coco.names
  12. 领克01、领克02、领克03,百度地图新系统安装第三方软件教程
  13. 全国电子地图矢量数据行政区划POI矢量道路矢量河流水系测试样例数据下载
  14. 量子计算机介绍ppt,量子信息ppt
  15. 少子寿命测试仪 硅片少子寿命测试系统美国Sinton WCT-120少子寿命测试仪
  16. 民宿类APP开发功能
  17. 浅谈MySQL查询优化
  18. python实现键盘记录木马
  19. [转载] 毕业半年,我在富士康的日日夜夜
  20. 2023数学建模(提供个人latex、word模板)

热门文章

  1. 语音的基本概念(理解senone时看的较好的文章)
  2. springboot整合BeetSQL
  3. ROS学习之自定义srv类型
  4. HTML a 标签的以及 target 属性
  5. 机器人钩阿木木_英雄联盟:机器人不敢钩的四大英雄,只要你敢钩我就让你们团灭!...
  6. mysql.user表_mysql.user表详解
  7. 【Linux练习生】高级IO
  8. uniapp中checkbox复选框动态绑定数据
  9. 逻辑、移位操作与空指令的实现
  10. linux跟踪内存检测原理,wooyun/Linux下基于内存分析的Rootkit检测方法.html at master · exitmsconfig/wooyun · GitHub...