Unity 预制件的行为不同,具体取决于是将它们静态拖动到场景中还是让它们由代码动态生成
Posted
技术标签:
【中文标题】Unity 预制件的行为不同,具体取决于是将它们静态拖动到场景中还是让它们由代码动态生成【英文标题】:Unity prefabs acting differently based on whether dragging them into the scene statically or having them dynamically generated by code 【发布时间】:2017-08-27 20:07:26 【问题描述】:如果我像这样实例化一个预制件:
GameObject asteroid = GameObject.Instantiate(thing2spawn);
//then set the location and some other stuff
预制小行星的碰撞根本没有记录,但如果我只是将小行星拖到场景中,碰撞就会完全按照预期工作。
【问题讨论】:
【参考方案1】:想通了。
我的小行星物体有两个子物体,其中包含做不同事情的对撞机。击中小行星的某个部分会治愈你,而击中另一部分会伤害你。这两个孩子有刚体组件,所以当我在代码中设置小行星(父对象)的速度时,这两个孩子不会随之移动。所以看起来对撞机似乎没有工作,而实际上它们只是被留在了其他地方。从孩子身上移除刚体解决了这个问题。
很奇怪。
【讨论】:
如你所见,你不能真正将刚体作为另一个刚体的孩子,否则你会遇到这样的随机非工作行为。以上是关于Unity 预制件的行为不同,具体取决于是将它们静态拖动到场景中还是让它们由代码动态生成的主要内容,如果未能解决你的问题,请参考以下文章