关于在Unity C#中改进我的物品放置系统的任何想法
本文关键字:系统 任何想 我的 Unity | 更新日期: 2023-09-27 18:33:25
这是我的系统:
-
在从物品栏中选择的物品上 --> 幽灵(半透明(对象被实例化、定位和旋转,根据玩家和地形
-
OnClick --> Ghost 被销毁,预制件被添加到其位置。
这个系统运行良好,看起来很棒...唯一的问题是玩家必须小心翼翼地操纵以使墙壁等笔直并与其他墙壁对齐。该系统与 Rust 非常相似。我希望玩家仍然可以将任何东西放置在他们想要的地方,但是:我希望当幽灵被固定在另一堵墙附近时,系统能够对齐墙壁,并且 4 堵墙上的屋顶会自动定位......
我对实现任何系统都没有问题(我非常了解 C#,专业(。我只是想要一些关于这样做的最佳方法的想法?
我的想法是添加一个盒子碰撞体(作为触发器(到对象并使用OnTriggerEnter来改变位置。有没有更好/更清洁/更简单的方法?
您建议的这种方式很常见。坎巴拉太空计划使用这些"安装点"来正确连接零件。
我将在通用的基础上实现带有标签的安装点系统,以便您可以使用此功能轻松创建新对象。就像你有一个安装球(预制件?(,这个球总是有一个它所属的父项和一个触发器,这可能是基于父级的尺度。然后这个球有一个标签来过滤掉任何其他不应该卡住的安装球(例如轮胎 + 墙壁 = 愚蠢(。
当具有相同标签的不同球与第一个球发生碰撞时,您应该根据父状态决定什么快照到什么(例如,已经放置的墙壁可能具有物理引擎暂停状态,另一个由玩家"保持"不会(。在此之后,您只需将第 2 面墙的球更改为第 1 面墙的球转换即可完成。
如果你保持这个足够通用,你可以很容易地用这个安装球装饰任何物体。