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记录射线和碰撞器碰撞的信息。
效果:挂载脚本的物体,指向鼠标在屏幕中的点
新闻热点
疑难解答