关于在Unity C#中改进我的项目放置系统的任何想法?

时间:2014-12-05 15:54:26

标签: c# unity3d system building

这是我的系统:

  1. 从库存中选择的项目 - > Ghost(半透明)对象根据玩家和地形进行实例化和定位和旋转

  2. OnClick - > Ghost被摧毁,并在其位置添加了预制件。

  3. 这个系统效果很好,看起来很棒......唯一的问题是玩家必须小心翼翼地将墙壁等直接与其他墙壁对齐。该系统与Rust非常相似。我希望玩家仍然可以放置他们想要的任何东西但是:我希望系统能够在鬼魂靠近另一面墙和四面墙的屋顶自动定位时对齐墙壁......

    我实现任何系统都没有问题(我非常了解C#,专业)。我只是想知道最好的方法是什么?

    我的想法是将一个盒子对撞机(作为触发器)添加到对象并使用OnTriggerEnter来改变位置。是否有更好/更清洁/更简单的方式?

1 个答案:

答案 0 :(得分:1)

这种方式你提出的很常见。 Kerbal Space Program使用这些“安装点”正确连接零件。

我会在通用基础上实现带标签的安装点系统,这样您就可以轻松地使用此功能创建新对象。就像你有一个安装球(预制?)这个球总是有一个它所属的父母和一个触发器,这可能是基于父母的规模。然后这个球有一个标签来过滤掉任何不应该与之相撞的其他安装球(例如轮胎+墙壁=愚蠢)。

当具有相同标签的另一个球与第一个标签发生碰撞时,您应该根据父母状态(例如,已经放置的墙壁可能具有物理引擎暂停状态,另一个“保持“由玩家不会)。在此之后,您只需将第二个墙的球改为第一个墙的球变换即可。

如果你保持足够的通用性,你可以用这个安装球轻松装饰任何物体。