【问题标题】:Remove Box collider of object in unity 3d在统一 3d 中删除对象的 Box 对撞机
【发布时间】:2013-01-31 02:12:39
【问题描述】:

这是我在Update 函数中的代码。该对象有一个盒子碰撞器。

if (Input.GetMouseButtonDown(0)) { 
    Ray ray = camera.ScreenPointToRay(Input.mousePosition); 
    if (Physics.Raycast (ray, out hit3, 400.0F)) {
        wName = hit3.collider.gameObject.name;
        Destroy(hit3.collider.gameObject);
    }
}

但是盒子对撞机并没有被破坏。

我怎样才能销毁它?

【问题讨论】:

  • 尝试禁用对撞机而不是破坏。你想得到什么效果?
  • 只想摧毁对撞机
  • 但是 wName 在这个脚本工作后有一些价值吗?
  • wName 是该游戏对象的名称。不要打扰它。只是我已经删除了它的对撞机。
  • 我为什么要问。尝试 Debug.Log(wName) 并查看是否有值。您的代码是正确的,它应该可以正常工作。我认为你的光线投射不会像你期望的那样工作并且没有得到游戏对象。

标签: c# object scripting unity3d raycasting


【解决方案1】:

它现在可以使用代码

 Destroy(hit3.collider);

【讨论】:

    【解决方案2】:

    根据Destroy() 上的文档,“实际的对象销毁总是延迟到当前更新循环之后,但总是在渲染之前完成。”

    这可能是问题吗?如果您在当前的 Update 函数中检查该对象可能尚未被销毁。否则 Destroy() 应该删除该游戏对象的所有组件。

    【讨论】:

    • 刚刚遇到了这个问题。无法弄清楚为什么我的光线投射会击中“被摧毁”的物体。在销毁对象之前禁用对撞机解决了这个问题。
    猜你喜欢
    • 2021-10-15
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多