Unity 工具 之 简单 镭射 Laser Ray 交互的封装可交互物体 GameObject 和 UI(结合 Curved UI)Unity 工具 之 简单 镭射 Laser Ray 交互的封装可交互物体 GameObject 和 UI(结合 Curved UI)基于/可用于眼镜插手机上交互
目录
一、简单介绍
Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。
本节介绍,使用镭射方式,进行 UI 和 物体GameObject 交互,这里简单说明,若有不对,或者您有更好的方法,欢迎留言指正和交流。
二、实现原理
1、Editor 通过 鼠标移动转换为旋转为 镭射线的旋转数据
2、手机设备中通过获取陀螺仪 gyro 数据旋转为 镭射线的旋转数据
3、镭射使用(这里使用LookAt方式,具体见代码)上边获取到的旋转数据,然后作为射线发射方向,碰撞到物体的距离作为 镭射实体的长度
4、物体GameObject 挂载脚本,继承 ILaserRayGameObjectListener ,即可获取到镭射进入,退出,点击,抬起,按下等事件
5、UI 使用 Curved UI ,设置为 Custom_Ray 交互,更改对应 EventSystem 交互系统,即可正常 UGUI world 模式使用
6、Shake Phone 摇晃手机 可以Reset 镭射交互方向置于屏幕中间位置区域,便于简单修复由于手机陀螺仪自己漂移造成镭射飘走
三、注意事项
1、手机设备上,转动移动手机改变镭射方向,选择交互对象,手指点击手机屏幕,进行点击,抬起,按下等事件交互
2、交互关键就是 Ray 交互到 Collider
3、因为 UI 是 World 模式,且交互也是有 Collider 的,所有注意 Canvas 的大小,空处也会阻挡射线(目前该版本是这样)
4、你可以根据交互事件,实现物体的移动等
四、效果预览
五、实现步骤
1、打开 Unity,新建一个空工程
2、导入 Curved UI 工具包
3、 编写 LaserRayTool等 相关代码,实现 Editor 和 Device 端的射线交互
4、实现 ShakePhoneWithVibrateWrapper 等脚本 Device 手机摇一摇修正重置镭射到中央功能