Unity3D中ScreenPointToRay方法使用解析
来源:互联网 发布:淘宝消保加入步骤图 编辑:程序博客网 时间:2024/04/28 17:18
2.2.3 ScreenPointToRay方法:近视口到屏幕的射线
基本语法:public Ray ScreenPointToRay(Vector3 position);
其中参数position为屏幕位置参考点。
功能说明:此方法的作用是可以从Camera的近视口nearClip向前发射一条射线到屏幕上的position点。参考点position用实际像素值的方式来决定Ray到屏幕的位置。参考点position的X轴分量或Y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。当Ray未能碰撞到物体时hit.point返回值为Vector3(0,0,0)。参考点position的Z轴分量值无效。
实例演示:下面通过实例演示方法ScreenPointToRay的使用。
using UnityEngine;using System.Collections;public class ScreenPointToRay_ts : MonoBehaviour{ Ray ray; RaycastHit hit; Vector3 v3 = new Vector3(Screen.width / 2.0f, Screen.height / 2.0f, 0.0f); Vector3 hitpoint = Vector3.zero; void Update() { //射线沿着屏幕X轴从左向右循环扫描 v3.x = v3.x >= Screen.width ? 0.0f : v3.x + 1.0f; //生成射线 ray = camera.ScreenPointToRay(v3); if (Physics.Raycast(ray, out hit, 100.0f)) { //绘制线,在Scene视图中可见 Debug.DrawLine(ray.origin, hit.point, Color.green); //输出射线探测到的物体的名称 Debug.Log("射线探测到的物体名称:" + hit.transform.name); } }}
在这段代码中,首先声明了一个变量v3,用于记录射线到屏幕上的实际像素坐标,然后在Update方法中更改v3的x分量值,使得射线从屏幕的左方向右方不断循环扫描,接着调用方法ScreenPointToRay生成射线ray,最后绘制射线和打印射线探测到的物体的名称。如果想要观察绘制的射线请在运行程序后在Scene视图中查看,图2-11是射线探测到的屏幕上的物体的名称的输出。
本文章内容摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474
0 0
- Unity3D中ScreenPointToRay方法使用解析
- Unity3D中ScreenPointToRay函数的分析-个人见解
- ScreenPointToRay
- Unity3D中Camera类ScreenToViewportPoint方法使用解析
- Unity3D中Camera类ScreenToWorldPoint方法使用解析
- Unity3D中Quaternion.Euler方法解析
- Unity3D中Quaternion.Euler方法解析
- Unity3D中Quaternion类SetLookRotation方法和LookRotation方法使用解析
- Unity3D中Camera类的RenderWithShader方法和SetReplacementShader方法使用解析
- Unity3D中Quaternion类SetLookRotation方法和LookRotation方法使用解析
- Unity3D中HideFlags.DontSave使用解析
- Unity3d中Quaternion.SetFromToRotation和Quaternion.FromToRotation方法解析
- 在Unity3d中解析Lua脚本的方法
- 在Unity3d中解析Lua脚本的方法
- Unity3D中使用MiniJson解析json的例子
- Unity3D中使用MiniJson解析json的例子
- unity3d中使用DLL库和解析json
- Unity3D中使用MiniJson解析json的例子
- 【BestCoder】 HDOJ 5018 Revenge of Fibonacci
- Effective C++:条款41:了解隐式接口和编译期多态
- ubuntu14.04开启wifi热点(二)
- HDU-#5018 Revenge of Fibonacci(模拟)
- C语言实现windows1251编码转utf-8编码
- Unity3D中ScreenPointToRay方法使用解析
- Android修改gen下包名
- 使用Handler实现主线程与子线程之间互相传递消息
- cocos2d-x 3.0rc开发指南:Windows下Android环境搭建
- RF software comment check
- 【BestCoder】 HDOJ 5019 Revenge of GCD
- 浅谈AJAX 技术与优缺点
- iOS uiscrollview 自动循环滚动
- 大话设计模式——策略模式(C++实现)