欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Unity屏幕射线碰撞

发布时间:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Unity屏幕射线碰撞 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Layers层:

从Layers设置看来,最多支持32层.  图层的值开始依次 0^2,1^2, 2^2, 3^3 依次增加.

当摄像机Culling Mask属性

Nothing= –1

Evening = 全部图层之和, 项目开始默认设置了7个图层. 值就是0^2,1^2, 2^2, 3^3 .. 6^2  = 279

如果我们选择Defulat图层,所在第0位置值 0^2 = 1

如果我们选择Defualt,Transparent,图层位置0,1 = 0^2+1^2 = 3

 

组合:

假设在游戏中出现这种情况: A,B,C 我们需要通过设计一个数字来表示 [A,B,C,AB,AC,BC] 这6中组合,  我们只需要把A=0,B=1,C=2. 根据数字的^2方

A = 0 ,B = 1, C = 2,AB = 3,AC = 5,BC = 6

这样我们就可以通过一个数值来知道,角色有哪些权限.

 

 

向屏幕发射一条射线,检测是否碰撞到物体:

RaycastHit 获取到碰物体的信息

Ray 定义射线的规则

向屏幕发射一条射线

bool Physics.Raycast(Ray ray,out RaycastHit  hit, float distance, int layerMask)

代码:

using UnityEngine; using System.Collections;public class Test : MonoBehaviour {private int index = 0;// Use this for initializationvoid Start () {int index = LayerMask.NameToLayer("UIMode");}// Update is called once per framevoid Update () {RaycastHit hit;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//以鼠标为原点,向世界发射一条长度100f的射线,只有UIMode图层的物体进行碰撞if (Physics.Raycast(ray, out hit, 100f, index)){Debug.Log("碰撞到UIMode的物体: " + hit.collider.gameObject.name);}} }

 

 

转载于:https://www.cnblogs.com/plateFace/p/4264815.html

总结

以上是生活随笔为你收集整理的Unity屏幕射线碰撞的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。