正如题目所说,ScreenPointToRay可以计算从Camera的近视口nearClip向前发射一条射线到屏幕上的点的坐标。

函数原型为:

public Ray ScreenPointToRay(Vector3 position);

其中position为屏幕位置的参考点,它是用实际像素值的方式来决定Ray到屏幕的位置。参考点position的x轴分量或y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。当Ray未碰到任何物体时,hit.point范围值为Vector3.zero即Vector3(0,0,0)。参考点的z轴分量值无效。

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;
// Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
//控制射线不断进行左右方向的扫描
v3.x = v3.x >= Screen.width ? 0.0f : v3.x + 1.0f;
ray = camera.ScreenPointToRay(v3);
if(Physics.Raycast(ray,out hit,100.0f))
{
Debug.DrawLine(ray.origin, hit.point, Color.green);
Debug.Log("射线探测到的物体名称: " + hit.transform.name);
}
}
}

运行结果为:

ScreenPointToRay - 近视口到屏幕的射线的更多相关文章

  1. Unity 点击屏幕发射射线 代码

    1,创建一根射线 2,检查射线与其他物体的碰撞,得到碰撞信息 3,通过碰撞信息对碰撞到的物体进行处理 using System.Collections; using System.Collection ...

  2. 从零开始学 Web 之 移动Web(一)屏幕相关基本知识,调试,视口,屏幕适配

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. unity3d 射线的原理,基础用法

    射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 . Ray射线类和RaycastHit射线投射信息类是射线中常用的两个工具类. 用途:射线多 ...

  4. Unity的学习笔记(射线检测)

    首先,射线检测的API是这样的,网上找了一下,这个图片看得很清楚: 接下来是自己使用这个进行测试 using System.Collections; using System.Collections. ...

  5. 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子

    原地址:http://www.cnblogs.com/xuling/archive/2013/03/04/2943154.html 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西 ...

  6. unity射线碰撞检测+LayerMask的使用

    射线在unity中是个很方便的东西,对对象查找.多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等提供了很大的帮助,在此做个总结与大家分享下 ,若有不足欢迎吐槽 好了,话补多说啦,直接进入主题: ...

  7. Unity Ray 射线

    射线:射线是3D世界一个向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射. 用途:射线范围比较广,多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等. Ray是一个结 ...

  8. U3D屏幕空间到世界空间变换

    using UnityEngine; using System.Collections; public class FPSCam : MonoBehaviour { Vector3 lastPos; ...

  9. NeHe OpenGL教程 第四十二课:多重视口

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. Spring中xml文件配置也可以配置容器list、set、map

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. 关于 二维码 与 NFC 之间的出身贫贱说

    关于 二维码 与 NFC 之间的出身贫贱说 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

  3. 微信公众号支付安卓和WP支付成功,苹果不能支付!

    花了几天时间,终于搞好了,代码是从官网上下的.NET DEMO的代码改的,测试的时候发现安卓和WP手机都能进行支付,但是苹果的怎么支付都支付不了,主要是在下面这个界面 点支付按钮就是苹果支付不了,其他 ...

  4. animation几个比較好玩的属性(alternate,及animation-fill-mode)

    <!DOCTYPE html> <html> <head> <style> div { width:100px; height:100px; backg ...

  5. 使用tesseract-ocr破解网站验证码

    首先我得承认,关注tesseract-ocr, 是冲着下面这篇文章的噱头去的,26行groovy代码破解网站验证码 http://www.kellyrob99.com/blog/2010/03/14/ ...

  6. 在IIS6上部署WebService

    在IIS6上部署WebService 2016-12-07 目录: 1 创建web service项目2 部署WebService3 浏览页面 1 创建web service项目 返回 用Visual ...

  7. 多重连接的数据库管理工具:Navicat Premium

    多重连接的数据库管理工具:Navicat Premium 2016-09-26 Navicat Premium(非免费软件)是一个可多重连接的数据库管理工具,它可让你以单一程序同时连接到MySQL.O ...

  8. jquery 替换原来的html内容

    1.replaceWith() 使用括号内的内容替换所选择的内容. $("#div").replaceWith("<div id="div2"& ...

  9. c#打印(转)

    柴门闻狗吠,风雪夜归人.野旷天低树,江清月近人.香雾云鬟湿,清辉玉臂寒.莫愁前路无知己,天下谁人不识君.常将冷眼 看螃蟹,看你横行到几时.要在vs2005中实现最基本的打印文本基本上需要以下几个步骤 ...

  10. 怎样使GridView中满足某个条件的行可编辑,其余行不可编辑?

    DXperience是个很优秀的第三方控件包,使用起来非常方便,但有时候某些功能的实现在文档中不太容易找到解决方案,比如下面要提到的这个功能我就在文档中找了很久也没找到,最后还是在官方论坛上找到的. ...