写一段Unity代码用射线再物体上衍生判断距离物体最近点以及距离
时间: 2024-09-13 15:03:34 浏览: 54
Unity3D实现射线使物体移动
5星 · 资源好评率100%
在Unity中,要使用射线检测距离物体最近的点以及计算距离,通常会用到`Physics.Raycast`方法来投射一条射线,并通过射线碰撞得到的信息来计算距离。以下是一个简单的Unity C#脚本示例,它使用射线检测从相机指向鼠标点击位置的射线,并找到最近的碰撞点以及计算与该点的距离:
```csharp
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
void Update()
{
// 当鼠标左键被点击时执行射线检测
if (Input.GetMouseButtonDown(0))
{
// 创建射线,从相机位置出发,沿着鼠标点击的方向
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// 如果射线击中了某物体
if (Physics.Raycast(ray, out hit))
{
// 打印出最近点的世界坐标和距离
Debug.Log("最近点的世界坐标: " + hit.point);
Debug.Log("距离: " + hit.distance);
// 如果需要在物体上显示这个点,可以这样做:
GameObject hitPointObject = GameObject.CreatePrimitive(PrimitiveType.Capsule);
hitPointObject.transform.position = hit.point;
hitPointObject.transform.parent = hit.transform; // 如果需要将点放在被击中的物体下作为子对象
}
}
}
}
```
要使用这段代码,请将其附加到Unity场景中的一个游戏对象上,并确保场景中有相机组件。当你在游戏运行时点击鼠标左键,射线检测会执行,并在控制台输出最近点的坐标和距离,同时在被击中的物体上生成一个胶囊形体作为标记。
阅读全文