射线检测
简介作用代码实现实际用法
简介
射线检测是Unity开发游戏中经常会用到的一个东西,其原理是鼠标点击之后,从摄像机发出一条射线,选中第一个所照射到的物体,需要注意的是,这里的射线只是假象的,并不真实存在,但是它确实能帮我们完成大部分的游戏中的点击事件。
作用
在游戏中我们经常会希望点击人物进行对话、点击怪兽进行攻击、点击物品进行拾取等功能,这些东西又都不是Button,所以这里我们就能用到射线检测,实现点击不同物体有不同的效果。
代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class RayMove : MonoBehaviour {
public NavMeshAgent nav;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
//如果点击鼠标左键,从主相机发射一条射线,射向鼠标点击的位置
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//定义一个RaycastHit变量用来保存被撞物体的信息;
RaycastHit hit;
//如果碰撞到了物体,hit里面就包含该物体的相关信息;
if (Physics.Raycast(ray,out hit))
{
nav.SetDestination(hit.point);
}
}
}
}
实际用法
hit.point; //碰撞点的位置;
hit.collider.gameobject; //碰撞到的物体;
//假设我们点击该物体之后销毁该物体
Destroy(hit.collider.gameobject);
//假设我们点击地面生成一个该物体
Instantiate(gameobject, hit.point, transform.rotation);
// 代码挂载上的物体,点击的位置,原角度
|