C# 是否可以捕捉垂直于表面的预制件?
我想,我正试图在一个小星球上建造一个有许多预制件的场景。我面临的问题是,虽然我可以使用Control+Shift轻松地将预制件放置在球体上,但它们不会旋转,因此会出现可怕的旋转。我的目标是使它们垂直放置 目前我知道三种解决方案:C# 是否可以捕捉垂直于表面的预制件?,c#,unity3d,3d,C#,Unity3d,3d,我想,我正试图在一个小星球上建造一个有许多预制件的场景。我面临的问题是,虽然我可以使用Control+Shift轻松地将预制件放置在球体上,但它们不会旋转,因此会出现可怕的旋转。我的目标是使它们垂直放置 目前我知道三种解决方案: 使用Control+Shift将对象放置在场景中,然后手动将其旋转到位 像前面一样将对象放置在场景中,然后向其每个更新方法添加一段代码:transform.rotation=Quaternion.FromToRotation(transform.up,transform
transform.rotation=Quaternion.FromToRotation(transform.up,transform.position-origin)*transform.rotation代码>
第一个是乏味的,很难正确对齐,第二个很容易,但使场景生成器无法代表最后一场比赛,我不知道从哪里开始第三个。有更好的方法吗?最后,我决定使用Control+Shift手动执行所有方向。正如约翰建议的那样,你可以编写自己的
[ExecuteInEditMode]
编辑器脚本,如果我所居住的星球要大得多,我会仔细研究它
请注意,如果您沿着脚本路径冒险,则对象不会浮动并完全剪辑通过曲面。毕竟,手动放置可能是必要的。我也尝试过顶点捕捉,但它也不能垂直定向预制件。这里似乎有两个问题:(1)如何垂直于曲面定向对象,以及(2)如何在编辑器中实现这一点,以生成已保存的场景。是这样吗?问题1或问题2是否给您带来更多麻烦?您可以尝试向类中添加[ExecuteInEditMode]头。这将使您的更新代码在编辑模式下运行。另一种方法是创建一个编辑器脚本,但这需要更多的工作