Unity Ray 射线检测
来源:互联网 发布:铁盒下料软件 编辑:程序博客网 时间:2024/04/27 15:31
首先在PC端实现鼠标点击某个物体执行某个操作时我们用Input.GetMouseButtonDown(0),获取鼠标点击事件。
再通过Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition)获取鼠标点击屏幕的坐标。
最后判定该坐标是否点击到某个物体:
if(Physics.Raycast(ray,out hit,1000f)
{
if(hit.collider.name==" ")
执行对应操作。
}
具体代码如下:
// 桌面系统鼠标操作
void DesktopInput()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 1000f))
{
hitname = hit.collider.name;
if (hitname == "moviePlayerCtl")
{
moviePlayer.gameObject.SetActive(true);
maincamer.GetComponent<PosStateRecord>().location("org");
goodsShower.gameObject.SetActive(false);
}
else if (hitname == "showsOnline")
{
maincamer.GetComponent<PosStateRecord>().location("ui");
moviePlayer.gameObject.SetActive(false);
goodsShower.gameObject.SetActive(true);
}
}
}
}
在移动平台操作时,由于没有鼠标,只能用手触屏,所以需要把
if(Input.GetMouseButtonDown(0))改成if(Input.touchCount>0)
触屏坐标的取值方式改成Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position)
移动平台触屏代码如下:
//移动平台触屏操作
void MobileInput()
{
if (Input.touchCount >0)
{
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position );
if (Physics.Raycast(ray, out hit, 1000f))
{
hitname = hit.collider.name;
if (hitname == "moviePlayerCtl")
{
moviePlayer.gameObject.SetActive(true);
maincamer.GetComponent<PosStateRecord>().location("org");
goodsShower.gameObject.SetActive(false);
}
else if (hitname == "showsOnline")
{
maincamer.GetComponent<PosStateRecord>().location("ui");
moviePlayer.gameObject.SetActive(false);
goodsShower.gameObject.SetActive(true);
}
}
}
}
最后,如果想实现多平台性只需要在Update中检测是哪个平台,再对应调用该平台需要的方法即可:
void Update()
{
#if !UNITY_EDITOR && ( UNITY_IOS || UNITY_ANDROID )
MobileInput();
#else
DesktopInput();
#endif
}
- Unity Ray 射线检测
- [Unity]Ray射线物理检测碰撞和LayerMask的使用
- Ray创建射线,碰撞检测
- Unity 碰撞检测、射线
- Unity射线检测使用
- Unity 射线检测碰撞
- Unity之射线检测
- Unity Layers 射线检测
- unity射线检测
- 射线 Ray
- Ray射线
- Unity 碰撞检测和射线
- Unity中的分层射线检测
- 【Unity&3D射线检测】
- unity学习日记:Ray(射线)相关知识
- 射线与平面的相交检测(Ray-Plane intersection test)
- 射线与平面的相交检测(Ray-Plane intersection test)
- 射线与平面的相交检测(Ray-Plane intersection test)
- 黑马程序员--C基础--各类读取函数
- 三.最小堆统计文章中频率前K个最高的词汇
- 小胖说事21------如何利用开发者账号重签ipa文件,并部署到IOS设备做测试(ipa重新签名)
- Android 屏幕适配方案
- 关于SpringMVC上传与导出excel问题
- Unity Ray 射线检测
- ldap 身份验证的通用步骤
- typedef 函数指针用法
- Linux中cp文件或目录时如何显示进度?
- kxmovie ffmpeg 移植
- Js获取当前日期时间及格式化操作
- hadoop学习
- 定积分之旋转曲面的面积
- opencv学习笔记(二)