c# - Unity - 如何使对象忽略光线投射
问题描述
我有一个游戏对象(比如说Enemy
),它上面有一个Audio Trigger
带有Sphere Collider
.
现在攻击系统用来检测图层,但是当你指向一个上面有一个但不识别它Ray Casting
的敌人时。你如何解决这个问题?Audio Trigger
Sphere Collider
Ray casting
解决方案
除了 Rony_y 的回答之外,还应注意该Physics.Raycast()
方法(以及其他类似方法,例如 RaycastAll、SphereCast 等)LayerMask
在其重载之一中采用参数。
此参数可让您指定要对哪些图层进行射线投射作为位掩码(因此只能通过传递 a 来1
对 Default 图层进行投射,而对 Default 和第 8 层(您可以命名的第一层)进行投射将是通过传递完成257
:例如。1<<8 + 1<<0
)。
通过这种方式,您可以根据需要将对象设置为具有不同的物理层(最多 32 个不同的层,其中前 8 个不可重命名),例如,您的所有音频对撞机体积都可以有自己的Audio
层,然后您可以只是不包括在您的光线投射中。
推荐阅读
- systemd - 无法从 systemd 自动启动服务
- java - 运行程序时找不到主类
- sql - SQL - 选择具有多个列和条件的不同
- python - 在 python 中,如何在 utc/gmt 中生成日期?
- c# - SQLite 连接“||” 查询在 C# 数据网格视图中不起作用
- python - 如何将用户输入写入excel文件?
- node.js - DynamoDB DocumentClient 获取与所选值匹配的所有项目
- node.js - Heroku 上的 Mern Stack 应用程序部署(远程:npm ERR!在 server@1.0.0 heroku-postbuild 脚本中失败。)
- assembly - 谁能解释一下这个功能是做什么的?
- c - 如果标准输入超过缓冲区大小,c 在 while(1) 循环中使用标准输入将循环多次