首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Physics.OverlapBox太大了

Physics.OverlapBox太大了
EN

Stack Overflow用户
提问于 2020-10-06 13:26:56
回答 2查看 460关注 0票数 0

我在做一个魔方模拟器。为了使侧面转动,我在每一边都有一个对撞机,我让对撞机把它们里面的所有东西都按一下,然后只转动侧面。

为了获取对撞机中的每个对象,我使用Physics.OverlapBox,并将除其他外的所有对象都放在如下列表中:

代码语言:javascript
复制
public List<GameObject> children = new List<GameObject>();

    private void Awake()
    {
        UpdateCubes();
    }

    void UpdateCubes()
    {
        Mesh mesh = GetComponent<MeshFilter>().mesh;

        children.Clear();

        foreach (Collider child in Physics.OverlapBox(transform.localPosition, 
            Vector3.Scale(mesh.bounds.size, transform.lossyScale) / 2, transform.rotation))
        {
            if (!child.transform.CompareTag("Side"))
            {
                children.Add(child.gameObject);
            }
        }
    }

问题是:Physics.OverlapBox看起来太大了,因为它获取了所有立方体和一些奇怪的丢失的游戏对象,如下所示:

我尝试过将transform.localScale / 2更改为transform.lossy Scale / 2,但它不起作用。我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-07 16:12:01

我让它起作用了!来自其他方面的碎片与其他方面重叠,因为它们是如此接近。我通过在它们之间加上更多的补偿来解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2020-10-06 21:18:22

两种变换尺度(有损和局部)都是乘子而不是单位,而OverlapBox使用单位来表示它的位置和大小。如果你的比例尺是1,网格大小是0.1,那么这个对象占用0.1单位,而不是1。为了确保你是准确的,你需要使用Mesh.bounds.size并乘以transform.lossyScale。这将给你准确的大小单位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64226799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档