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. Bzoj3730 震波
  2. mysql工具使用意义_MySQL性能分析、及调优工具使用详解
  3. PLSQL Developer连接Oracle数据库
  4. 逻辑回归优点_逻辑回归:优点
  5. 软件测试工程师-Linux介绍、命令
  6. java 线程的join_多线程中join()
  7. 【linux】ssh 远程执行命令
  8. 计算机的组成 —— 鼠标
  9. 若有下列共用体定义_练习题-第十章 结构体与共用体(有答案)
  10. booleanfield()和booleanfield(default=True)在数据库的表中无法插入
  11. 集成电路的技术极限之后,怎么办?
  12. csdn官网(csdn官网免费下载)
  13. Hping3 拒绝服务攻击手册
  14. php 到处excel 乱码,php 导出excel 乱码怎么办
  15. SPPnet论文总结
  16. 三次方在python中如何表示_python中计算三次方怎么表示
  17. C#快递单号查询源码
  18. openshift/origin学习记录(9)——S2I镜像定制(基于Git)
  19. 怎么样可以把pdf合并在一起呢
  20. 微信登录开发-java

热门文章

  1. linux 按字符串分割文件 sed awk
  2. Css弦乐弱音器奏键位,小提琴弱音器的种类选择
  3. C#界面里的winform AutoValidate和CausesValidation属性
  4. 西安交通大学计网考后总结及复习资料汇总
  5. 如何在CSDN写文章
  6. sas retain和_all_
  7. ORACLE 基本入门
  8. [原创]中国大陆民谣盘点3 老狼《恋恋风尘》
  9. 深度学习准备之Ubuntu下装显卡驱动
  10. Google AutoML图像分类模型 | 使用指南