Unity基础的射线使用和坐标转换
来源:互联网 发布:电话销售数据货源qq群 编辑:程序博客网 时间:2024/06/05 03:20
前段时间有个Kinect的项目,是人体绑定模型之后推车,说是推车其实是触摸场景中车尾部的三个球体,摸左边代表向右推,摸右边代表向左推,中间代表直行。当时的想法是将三个球体和手部模型的坐标换算到屏幕上,判断距离。说实话很不精确,也怪当时太蠢,还有事多,还有懒,还有态度的不端正。
现在我重新做个demo,因为没有Kinect的关系就用鼠标来控制模型。
首先搭建场景,三个球一个cube
首先要让cube跟着鼠标移动
void Update () {
Vector3 mouse = Input.mousePosition;
Vector3 pos = Camera.main.ScreenToWorldPoint(mouse);
pos.z = 1;//没有这句 cube的Z轴就会跟相机等值 所以显示不出cube 实际在后面的代码中,cube是不是相对于球体在前面并没有区别
cube.transform.position = pos;
}
然后将cube从世界坐标转到屏幕坐标然后发出射线
void LateUpdate() {
Vector3 cubePos = Camera.main.WorldToScreenPoint(cube.transform.position);
Ray ray = Camera.main.ScreenPointToRay(cubePos);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100f))
{
Debug.Log(hit.transform.name);
hit.transform.GetComponent<MeshRenderer>().material.color = new Color32(237, 240, 0, 70);
}
else {
for (int i = 0; i < CubeControllers.childCount; i++) {
CubeControllers.GetChild(i).GetComponent<MeshRenderer>().material.color = new Color32(255, 255, 255, 70);
}
}
}
- Unity基础的射线使用和坐标转换
- Unity Ugui射线坐标转换总结
- Unity 射线 (之鼠标点击的坐标)
- unity 射线的基础使用方法
- Unity基础,Line Renderer 和射线的应用
- 射线检测地表高度和世界坐标和屏幕坐标间的转换
- [Unity]Ray射线物理检测碰撞和LayerMask的使用
- Unity基础—射线概念和API
- Unity 世界坐标 和 NGUI 屏幕坐标间的转换
- unity中世界坐标和绝对坐标之间的转换
- [Unity&射线]鼠标点击发射射线的坐标点怎么获得
- unity射线碰撞检测+LayerMask的使用
- 学习Unity射线的创建使用
- Unity射线检测使用
- unity基础开发 1. 射线&碰撞器的原理和用法
- unity 世界坐标 屏幕坐标和ngui坐标转换
- Unity3D【脚本】点击物体后屏幕放大 - (射线、坐标的转换、摄像机的移动和改变属性)
- Unity中的世界坐标和NGUI中的坐标的相互转换
- Easy-20
- 使用ionic2开发项目
- Count the Sheep
- 安卓面试问题
- SDUT 1269 走迷宫
- Unity基础的射线使用和坐标转换
- 无线 WIFI 的13个信道频率范围
- 线程的信号pthread_kill()函数(线程四)
- Java中如何调用匿名内部类
- Flexible, organic and biodegradable: Stanford researchers develop new wave of electronics
- .net C# 程序控制IIS 添加站点域名绑定
- angular-单页面跳转ui-view
- 二叉树初始化
- 104. Maximum Depth of Binary Tree