检查项目是否重叠

2024-01-12

我有几个房间是随机放置的,所以我必须检查房间是否重叠。房间的大小为 10x10,出于测试原因,房间完全并排放置(它们在场景中不重叠)。地板是一种变换,由 1 个或多个变换组成(在本例中,由一个正方形组成,但对于其他形式,它可能是 2 个或更多)。

为了检查它们是否重叠,我有这个不起作用的功能。调试日志始终介于 3 和 61 之间。

public bool Overlapping()
{
    //Lists for the position and of the size of each floor transform
    List<Vector3> positions = new List<Vector3>();
    List<Vector3> sizes = new List<Vector3>();
    //Check if floor consists out of more than 1 transform
    if (Floor.childCount > 0)
        foreach (Transform t in Floor)
        {
            positions.Add(t.position);
            sizes.Add(t.lossyScale);
        }
    else
    {
        positions.Add(Floor.position);
        sizes.Add(Floor.lossyScale);
    }

    //Save old room pos and move it out of the way
    Vector3 position = this.transform.position;
    this.transform.position = new Vector3(0, 100, 0);

    //Check if any floor transform would overlap
    for (int i = 0; i < positions.Count; i++)
    {
        //Make overlap box visible
        GameObject rec = GameObject.CreatePrimitive(PrimitiveType.Cube);
        rec.transform.localScale = sizes[i];
        rec.transform.localPosition = positions[i];
        rec.transform.localRotation = Quaternion.Euler(0, 0, 0);

        //Returns the colliders which are overlapping
        if (Physics.OverlapBox(positions[i], sizes[i] / 2).Length > 0)
        {
            Debug.Log(Physics.OverlapBox(positions[i], sizes[i] / 2).Length);
            //return this room to it's old position
            this.transform.position = position;
            return true;
        }
    }

    //return this room to it's old position
    this.transform.position = position;
    return false;
}

顺便说一句,对于正在阅读的人 (2/2016)OverlapBox是Unity最新版本刚刚添加的全新调用。

Edit:按照 Joe 的建议,我使 OverlapBox“可见”,但它们似乎处于正确的位置和正确的尺寸(红色是我的房间,灰色是碰撞器)......


我现在已经可以使用了。每个 OverlapBox 都放置正确,但它们仍然发生碰撞,因为它们距离对象“太近”。此更改修复了它:

if (Physics.OverlapBox(positions[i], new Vector3(sizes[i].x - 0.01f, sizes[i].y - 0.01f, sizes[i].z - 0.01f) / 2, rotations[i]).Length > 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查项目是否重叠 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 使用c#选择excel中的工作表

    在 Visual Studio 2008 中使用 NET 3 5 中的 C 我尝试在打开的工作簿中设置焦点 或激活 特定工作表 以下是一些属性 public Excel Application xlApp get set public Ex
  • 如何在 HTTP 请求中接收客户端证书?

    我已经生成了自签名 SSL 证书并发送给客户 每次客户端发送 REST 请求时 我都会在服务器上进行客户端证书身份验证 我需要在java代码中获取证书的数据 我怎么做 我使用了球衣框架 您可以使用 Context 注解来提取 HttpSer
  • SUMIFS) 与 VLOOKUP

    我正在尝试将 VLOOKUP 函数与 sumif 函数一起使用 我有一个下拉框 其中包含名称列表和组合列表 e g Salesman1 Salesman2 Salesman3 Salesman4 Salesman5 Salesman6 Re
  • 如何配置发布配置文件以使用 NTLM 身份验证

    在 Visual Studio 2012 中 使用发布配置文件和 Web 部署大大简化了部署 然而它仍然缺少一些东西 或者可能我还不知道如何使用它 我更喜欢使用 NTLM 身份验证 而不将用户名和密码 尤其是 存储在发布配置文件中 如何才能
  • 批处理文件中的子程序

    给出以下代码 Echo off ECHO Start ECHO Calling SUB A CALL SUB A ECHO Calling SUB B CALL SUB B SUB A ECHO In SUB A GOTO EOF SUB
  • Mac 光标文件夹

    我已经研究了几个小时了 我想找到我的 Mac 系统默认光标 没有任何鼠标悬停 我只想要默认光标 我正在运行旧版本的 Mac 之一 即 10 4 11 有人告诉我光标在这里 System Library Frameworks Applicat
  • mysql SELECT NOT IN () -- 不相交集?

    我在查询工作时遇到问题 我认为这应该有效 它的形式是 SELECT DISTINCT a b c FROM t1 WHERE NOT IN SELECT DISTINCT a b c FROM t2 AS alias 但是 mysql 在
  • 收到内存警告和应用程序崩溃[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 由于收到内存警告 我的应用程序崩溃了
  • git 仅推送一个文件到 Heroku

    是否可以只将一个文件推送到 Heroku 而不是关闭所有已更改的文件 谢谢 不会 Git 跟踪内容而不是文件 因此您要么推送全部内容 要么不推送任何内容 如果有您不想推送的文件 请将它们添加到 gitignore文件 但是 如果您已经提交了
  • C_CPP.intellisense 已禁用。如何再次启用

    我在 Visual Studio 代码中尝试过的扩展似乎禁用了 C C 智能感知 无法再次开启 修改设置对话框中的设置没有任何效果 证据 切换源 标头会导致弹出消息 指出 C CPP intellisense 设置为禁用 现在花了几个小时
  • 我可以为 localhost 配置 cron 作业吗

    这是一个单行问题 我不知道如何描述它 mysystem config os windows Xp server Wamp server latest 这可能吗 Cron 是类 Unix 计算机操作系统中基于时间的作业调度程序 这意味着您无法
  • 为什么 OpenMP 缩减子句对于静态调度循环是不确定的?

    我一直在从事一个多 GPU 项目 在该项目中我在获得非确定性结果方面遇到了问题 当我发现由于 CPU 上执行的归约子句而获得非确定性结果时 我感到很惊讶 在书里使用 OpenMP 下一步据说 线程组合其值来构建的顺序 共享结果的价值是不确定
  • 有没有办法拦截和修改asp.net中的html输出流,以结合javascript?

    有没有办法拦截asp net中的HTML输出流并进行修改 例如使用httpmodules之类的 我知道使用 java servlet 是可能的 并且假设必须有一种优雅的方法来使用 ASP NET 来做到这一点 我的目的是将许多 JavaSc
  • 如何为 pytest 测试类的所有方法共享同一个实例

    我有一个简单的测试课 pytest mark incremental class TestXYZ def test x self print self def test y self print self def test z self p
  • JPA:OptimisticLockException 和级联

    在我当前的项目中 我将 Spring Data JPA 与 Hibernate 结合使用 但将此视为一个更普遍的问题 也应该涵盖 普通 JPA 我不确定我应该如何处理OptimisticLockException使用时 Version 由于
  • 如何修复 FileNotFoundError: [WinError 2] 系统找不到 AudioSegment.from_mp3() 指定的文件

    我一直在尝试找到视频音频中音频静音空间的位置 但我无法通过在 python 3 中使用 pydub 导入音频文件 我已经尝试将 pydub 检查 ffmpeg 的目录更改为项目内的目录 并且该文件位于我运行脚本的目录中 但它似乎仍然返回相同
  • GitLab 页面:可以从项目 wiki 生成静态站点吗?

    所以我知道 GitLab 页面可用于从项目的存储库生成静态网站 然而 我想做的是从项目生成一个静态站点wiki 这是一个单独的存储库 我还知道我可以将静态站点生成器挂钩到 webhook 事件以通知 wiki 更改 我正在尝试弄清楚这个明显
  • jQuery - 是否可以复制和粘贴 HTML?

    jQuery 是否可以复制和粘贴 HTML 从一个例子开始 如果我有以下 HTML 行 div somethings like 100 lines of code div 我想知道我是否可以将此 div 复制并粘贴多次 我尝试放置一个 jQ
  • 永久添加 hive jar

    有什么方法可以永久添加 hive jar 而不是在 hive shell 中的会话级别添加 任何帮助 将不胜感激 在 hiveserver2 主机中 创建一个类似 var lib hive 的位置 并在该文件夹中添加所有必需的 jar 编辑
  • 检查项目是否重叠

    我有几个房间是随机放置的 所以我必须检查房间是否重叠 房间的大小为 10x10 出于测试原因 房间完全并排放置 它们在场景中不重叠 地板是一种变换 由 1 个或多个变换组成 在本例中 由一个正方形组成 但对于其他形式 它可能是 2 个或更多