unity3d - Unity - 删除在另一个实例之上产生的其他实例,但保留原始实例
问题描述
因此,我正在 Unity 中进行一些关卡生成工作,并且我在世界各地生成了一些立方体。我现在让它工作的方式是,每块地砖都会检查它周围是否有“空气”,如果有,它会生成一堵墙。但是,如果我遇到这样的情况,即这是两层楼之间的空气块,它会产生两堵墙。有没有一种方法可以检查同一位置是否有多个,但要防止其中一个被破坏?谢谢!
ps 同样一文不值,我使用 Raycast 放置墙壁,因此地板将使用一击检查 4 个方向。我认为它在放置立方体时会不停地检查所有 4 个方向。所以,可能是个问题...
解决方案
你可以尝试在光线投射的地方制作一个重叠球体,这样就可以检测到某个半径内的所有对象(彼此之间的对象也是如此)
void GetWalls(Vector3 raycastTargetPosition, float radius)
{
Collider[] hitColliders = Physics.OverlapSphere(center, radius);
int i = 0;
while (i < hitColliders.Length)
{
hitColliders[i].SendMessage("AddDamage");
i++;
}
}
推荐阅读
- python - 如何在通过 selenium 自动化时使用 beautifulsoup 打印 href 属性?
- git - git diff 两个不同存储库的简单方法
- django - Ingress 和 Ingress 控制器如何将它们与 NodePort 服务一起使用?
- sql-server - SSRS 将报表导出到 excel 中而不在浏览器中呈现并删除隐藏列
- java - 带有域 smtp 的 Java 邮件?
- tensorflow - tf.Dataset.from_tensor_slices 性能问题
- html - div 的 padding 被列布局破坏
- r - 如何编写循环来优化给定的数字
- ios - 黑屏出现在呈现的视图控制器下方
- angular - 使用 Angular6 将图像拖放到 div 中并显示预览