目录
在Unity中,射线检测(Raycasting)是一种用于从特定点向特定方向投射一条射线并检测这条射线是否与任何对象(如碰撞体)相交的技术。射线检测在游戏开发中有很多用途,比如检测玩家的视线、实现点击选择、物理碰撞检测等。
场景搭建
添加射线检测脚本
编写脚本
这个脚本在Unity中实现了一个简单的射线检测。当用户按下鼠标左键时,从主摄像机位置发射一条射线,检测是否与场景中的任何物体发生碰撞。如果发生碰撞,打印碰撞点的坐标并将当前物体的位置移动到该碰撞点。
脚本代码
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
public class RayTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//方式1
//Ray ray = new Ray(Vector3.zero, Vector3.up);
}
// Update is called once per frame
void Update()
{
//方式2
if (Input.GetMouseButtonDown(0))
{
//按下鼠标左键发射射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//声明一个碰撞信息类
RaycastHit hit;
//碰撞检测
bool res = Physics.Raycast(ray, out hit);
//如果碰撞到的情况下,hit就有内容了
if (res == true)
{
UnityEngine.Debug.Log(hit.point);
transform.position = hit.point;
}
}
}
}