伊织萌 2023-02-19 04:06 采纳率: 100%
浏览 36
已结题

为什么对于生成实例化的预制体, Physics.OverlapBox获取不到?预先方放在场景中的就可以获取

为什么对于生成实例化的预制体, Physics.OverlapBox获取不到?
注意:是同一个预制体。事先放在场景中的预制体,就可以获取到。用代码实例化出来的预制体,就获取不到。

if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),
                   out hitInfo, 1000, 1 << LayerMask.NameToLayer("Ground")))
                {
                    Vector3 center = new Vector3((hitInfo.point.x + beginWorldPos.x) / 2, 2, (hitInfo.point.z + beginWorldPos.z) / 2);
                    Vector3 halfExtents = new Vector3(Mathf.Abs(hitInfo.point.x - beginWorldPos.x) / 2, 2, Mathf.Abs(hitInfo.point.z - beginWorldPos.z) / 2);
                    Collider[] colliders = Physics.OverlapBox(center, halfExtents);//获取的Collider
//对于实例化出来的预制体,获取不到Collider,但是对于预先放置好在场景中的预制体,colliders里又有。

并且,好像如果点了Play后,在游戏中同时获取“事先放的”和“实例化生成的”物体,那么实例化生成的就会恢复正常,可以获取(明天在测验确认一下)。很神奇。

  • 写回答

2条回答 默认 最新

  • 伊织萌 2023-02-19 18:59
    关注

    我知道了,是1 << LayerMask.NameToLayer("Ground")的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月21日
  • 已采纳回答 2月21日
  • 创建了问题 2月19日