Unity3D 类似COC的鼠标拾取游戏物体并在限定区域摆放
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的鼠标拾取游戏物体并在限定区域摆放相关推荐
- Unity3D 入门小技巧——鼠标拾取并移动物体
一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...
- Unity3d鼠标与游戏物体的交互(方法体)
- OnMouseEnter() 当鼠标悬停于该物体上时执行 OnMouseEnter(){}花括号中的代码,鼠标移上去一次就执行一次 - OnMouseExit() 当鼠标移出该游戏物体时执行方法, ...
- 【Fracturing Destruction】点破小球——Unity3D中达到条件才触发的物体爆裂、炸裂、碎裂效果
在<[Fracturing & Destruction]Unity3D的物体爆裂.炸裂.碎裂效果>(点击打开链接)提到了Unity3D的物体爆裂.炸裂.碎裂效果到底是用哪些组件去制 ...
- unity3d游戏物体跟着鼠标方向移动
效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样. 思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动. 如果你看到这的 ...
- unity3D 鼠标点击游戏物体碰撞 (射线)
先把与射线发生碰撞的游戏物体的Layer层改成MapCube 添加脚本
- 关于Unity3D中鼠标移动指定物体的解决方案
一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...
- Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数
Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临 ...
- 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )
文章目录 一.创建 Unity 脚本 二.Visual Studio 2019 中打开 C# 脚本 三.编译 C# 脚本 四.挂载 C# 脚本到游戏物体 GameObject 1.添加组件方式 2.直 ...
- 【Unity3D】游戏物体操作 ① ( 场景简介 | 添加游戏物体 | 操作游戏物体 | 选中游戏物体 | 场景显示效果缩放 | 重命名游戏物体 | 复制游戏物体 | 删除游戏物体 | 移动物体 )
文章目录 一.Scene 场景简介 二.添加游戏物体 三.操作游戏物体 1.选中游戏物体 2.场景显示效果缩放 3.重命名游戏物体 4.复制游戏物体 5.删除游戏物体 6.Inspector 检查器窗 ...
最新文章
- Bzoj3730 震波
- mysql工具使用意义_MySQL性能分析、及调优工具使用详解
- PLSQL Developer连接Oracle数据库
- 逻辑回归优点_逻辑回归:优点
- 软件测试工程师-Linux介绍、命令
- java 线程的join_多线程中join()
- 【linux】ssh 远程执行命令
- 计算机的组成 —— 鼠标
- 若有下列共用体定义_练习题-第十章 结构体与共用体(有答案)
- booleanfield()和booleanfield(default=True)在数据库的表中无法插入
- 集成电路的技术极限之后,怎么办?
- csdn官网(csdn官网免费下载)
- Hping3 拒绝服务攻击手册
- php 到处excel 乱码,php 导出excel 乱码怎么办
- SPPnet论文总结
- 三次方在python中如何表示_python中计算三次方怎么表示
- C#快递单号查询源码
- openshift/origin学习记录(9)——S2I镜像定制(基于Git)
- 怎么样可以把pdf合并在一起呢
- 微信登录开发-java