首页 > 学院 > 开发设计 > 正文

unity之ScreenPointToRay:屏幕位置转射线

2019-11-06 08:52:38
字体:
来源:转载
供稿:网友

      

using UnityEngine;using System.Collections;public class Weapon : MonoBehaviour {    PRivate Ray ray;    private RaycastHit hit;    private Transform tran;	void Start () {        tran = gameObject.GetComponent<Transform>();	}	void Update () {        ray=Camera.main.ScreenPointToRay(Input.mousePosition);//摄像机发射射线到屏幕点。        if (Physics.Raycast(ray, out hit))//射线发出并碰撞到外壳,那么手臂就应该朝向碰撞点        {            tran.LookAt(hit.point);        }	}}

                          此方法是Camera类下的一个:从摄像机发射射线到屏幕,并返回这条射线。

                       C#: Camera.main.ScreenPointToRay(Input.mousePosition);

                       参数是屏幕中一个点,上例是鼠标在屏幕中点击的点,且由主摄像机发射射线。

                  返回的是一个射线类型  Ray ray;,可以用ray接收返回的射线。

                 

                  RaycastHit    hit;   hit记录的是射线投射碰撞信息。例如hit.collider表示碰到的碰撞器,hit.distance表示射线原点到碰撞点之间的距离,是碰撞检测中的碰撞信息

                  hit.collider.tag=="Feipan",表示被撞碰撞器的标签是FeiPan

              Physics物理类下面有个射线投射:Physics.Raycast()的方法

   

                返回布尔(bool)值,当射线和任何碰撞器相交时,返回true,否则为false。也就是说,当射线碰触到任何碰撞器时返回真,否则返回假。

        

                  参数有:(ray, out hit),ray是射线的起点和方向,hit记录射线和碰撞器碰撞的信息。

            效果:挂载脚本的物体,指向鼠标在屏幕中的点


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表