c# - Unity C# 检测上面的所有游戏对象
问题描述
我希望我的玩家检测第 8 层中的所有游戏对象。我找到了一个检测上面所有游戏对象的代码,但它只是在 x=0 线上检测到,就像在这些图中一样,
RaycastHit[] hitsUp = Physics.RaycastAll(transform.position, transform.up, distance);
RaycastHit[] hitsDown = Physics.RaycastAll(transform.position, -transform.up, distance);
foreach (RaycastHit hit in hitsUp)
{
if (hit.collider.gameObject.layer == 8)
{
Physics.IgnoreCollision(hit.collider, GetComponent<Collider>());
}
}
foreach (RaycastHit hit in hitsDown)
{
if (hit.collider.gameObject.layer == 8)
{
Physics.IgnoreCollision(hit.collider, GetComponent<Collider>(), false);
}
}
我该如何解决这个问题?谢谢您的回复。
解决方案
只需将图层蒙版滤镜添加到您的 Raycast 中。
int layerMask = 1 << 8; // - detects raycasts only on 8 layer
RaycastHit[] hitsUp = Physics2D.Raycast(transform.position, transform.up, distance, layerMask);
RaycastHit[] hitsDown = Physics.RaycastAll(transform.position, -transform.up, distance, layerMask);
foreach
不需要。
推荐阅读
- python - 用于多项式除法的 `numpy.polydiv()` 和 `scipy.signal.deconvolve()` 之间的区别
- azure-devops - 如何升级“基本 + 测试计划”的 devops 访问级别的用户许可证?
- javascript - 在 Windows 上仅定位 Google Chrome
- sql - SQL Server 中的填充函数 - 处理多个主键
- java - 如何在我的 Java 游戏中正确实现 JScrollPane GUI?
- python - AsyncResult 在 tensorflow 的 keras 的 fit_generator 的意外情况下挂起
- python-3.x - 返回soup.select时收到列表索引超出范围错误
- python - 如何避免在 Django 中使用会话?
- python - 熊猫条形图切断了 x 轴的末端
- python - 删除数据框系列的数组列中带有空格的空字符串(“”)