【问题标题】:Prefab in Unity "loses" Collision Detection after transformUnity中的预制件在转换后“丢失”碰撞检测
【发布时间】:2016-04-07 04:37:06
【问题描述】:

我有一个基本的立方体预制件,碰撞检测效果很好。

void OnCollisionEnter(Collision collision) {

        Debug.Log ("Diram...");
        //onplatform = true;

    }

但是,当我复制预制件并更改位置/旋转时, 对撞机停止工作并且不会触发任何碰撞事件。

我不想使用触发器,因为对象失去了所有碰撞并且游戏停止工作。

这里有什么建议吗?

【问题讨论】:

  • 那么复制预制件的代码在哪里?
  • 这里是 txt 文件:dropbox.com/s/t2nsba75qmg0k9f/code.txt?dl=0 它基本上创建了一个带有立方体对象的曲折型车道:dropbox.com/s/jx7v82xx8dptml4/…
  • 不是每个人都使用 Dropbox。请将您的文本文件的代码粘贴到问题本身上。
  • @NahuelIanni 代码很长。您不必下载它。只需单击链接,您就可以在 Dropbox 网站上阅读它。在这里发帖很长。
  • Uuh...@Programmer,您不应该鼓励会员在场外发布代码,尤其是当它可能包含相关信息时。如果代码太长而无法在此处发布,正确的方法是通过调试缩小问题代码的范围,以便原始问题包含重现问题所需的所有内容。

标签: c# unity3d


【解决方案1】:

尝试以下方法:

1变化:

Rigidbody obj1 = ....
Rigidbody rb1 = obj1.GetComponent<Rigidbody> ();
obj1.transform.position = newPos;

Rigidbody obj1 = ....
Rigidbody rb1 = obj1.GetComponent<Rigidbody> ();
obj1.transform.position = newPos;
rb1.MovePosition(newPos+transform.forward);

2 确保在实例化预制件后将isKinematic 设置为false

rb1.isKinematic = false;

【讨论】:

  • 感谢您的回答,我会尝试并让您知道它是否有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多