NRE的编程笔记

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Unity3D之物理射线

射线:从一个点往一个方向,发射一根无限长的射线,这根射线会与场景中带有 Collider 组件的物体发生碰撞。

射线的使用:

复制代码
 1 public class Test
 2 {
 3     private void Start()
 4     {
 5         if (Input.GetMouseButtonDown(0))
 6         {
 7             //从主摄像机发射一条射线至鼠标点击的位置。
 8             Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
 9             //从自己的位置,向世界坐标轴的 forward 方向发射一条射线。
10             Ray ray2 = new Ray(this.transform.position, Vector3.forward);
11             //声明一个 RaycastHit 类型的变量,存储射线的碰撞信息。
12             RaycastHit hitInfo;
13             //检查射线是否碰撞到物体
14             if (Physics.Raycast(ray1,out hitInfo))
15             {
16                 //执行代码
17             }
18         }
19     }
20 }
复制代码

根据上面的代码:

hitInfo.point:表示碰撞点的坐标。

Physics.Raycast():使用这个方法检测射线时,因为该方法重载很多,一定要弄清楚自己使用的是哪个重载方法,填对参数,不然很容易出错。

 

因为射线是看不见的,我们可以通过画线的方式来模拟射线,方便我们调试,方法如下:

Debug.DrawRay(Vector3 pos,Vector3 dir,Color c):画线。

pos:起点坐标。

dir:方向。

c:颜色。

posted on   NRE  阅读(1267)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示