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
原创粉丝点击