是否可以将预制件垂直于表面咬合?

时间:2017-02-21 23:59:52

标签: c# unity3d 3d

我试图建立一个场景,将一些预制件放在一个小小的星球上,想想something like this。我面临的问题是,虽然我可以使用Control + Shift轻松地将预制件放置在球体上,但它们不会旋转,因此会出现可怕的旋转。我瞄准他们垂直放置。

目前我了解三种解决方案:

  1. 使用Control + Shift将对象放置在场景中,然后手动将它们旋转到位。
  2. 像以前一样将对象放在场景中,然后为每个更新方法添加一段代码:transform.rotation = Quaternion.FromToRotation(transform.up, transform.position - origin) * transform.rotation;
  3. 与选项2一样,运行代码并找到一些方法将世界状态保存到场景中,但是that is easier said than done。对于一些应该是微不足道的事情似乎付出了很多努力。
  4. 第一个是繁琐且难以正确对齐,第二个很容易但是让你的场景构建器无法代表你的最终游戏,我不知道从哪里开始第三个。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

最后,我决定使用Control + Shift手动执行所有方向。正如约翰建议你可以编写自己的[ExecuteInEditMode]编辑器脚本,如果我正在进行森林砍伐的行星明显更大,我会调查它。

请注意,如果您冒险沿着脚本路径冒险,该对象没有浮动并完全剪切通过曲面。毕竟可能需要手动放置。