BuildingSystemPlugin使用指南
使用方法
1.先按顺序在新项目中添加CollisionChannel

2.将Plugins复制到新项目中


3.在新项目的PlayerController中添加两个对应的Component:

原理
1.主要原理
在LocallyController中通过屏幕中心点发出一条射线,来生成一个没有碰撞、没有复制的Buildable并设置其Material为红色或绿色作为PreviewBuildable,检测该Preview的盒碰撞,下面是否悬空等,来判断是红色还是绿色。在Server执行一样的操作,但只在服务器执行正真的放置操作,将Buildable设置为网络复制从而复制到客户端
2.对于SnappingPoint
主要是在当前Buildable蓝图中添加各种使用不同TraceChannel的CheckBox,如果Preview的射线检测到了与该TraceChannel一致的CheckBox,则获取SnappingPoint的Transform并设置Preview的Transform

3.添加新的SnappingPoint:
添加对应的CheckBox,并通过修改BoxExtent来实现放大缩小(不能直接放大Scale),并将其对应的TraceChannel设置为Block

在蓝图中创建每个CheckBox,并将所有CheckBox(包括SameTypeCheckBox)添加到CheckBoxes中,如果有SameTypeCheckBox,则添加到SameTypeCheckBoxes中

4.SameTypeCheckBox:
在Preview时,为了防止Preview与自身TraceChannel一致的CheckBox发生碰撞,应该先禁用SameTypeCheckBox,然后放置Buildable后再启用。但Preview时不能禁用全部的CheckBox,因为在重新启用时,我们只知道当前的SameTypeCheckBox的TraceChannel,其他的CheckBox无法知道
5.DataTable:
蓝图中有一个DataTable,是用于初始化BuildingMenu的,为每个Slot创建一个BP_Buildable类和一个Icon Image

6.创建新的建筑:
通过创建BuildableMaster的子类来创建新的建筑,其中DoorFrame和WindowFrame是Wall的子类,创建新的Buildable后,可以继承此类来添加对应的Wood,Stone,Metal类的建筑。其中需要注意的是:确保建筑的中心点在Mesh的中心点上(否则创建的CheckBox会有重叠,效果不好),门的中心点在门Mesh的左下角(用于旋转)

7.FieldSystem:
用于对破裂的Buildable添加一个力,来实现破碎分裂效果

8.设置Destructible Mesh:
将需要破碎的Mesh拖入到世界中,进入破碎模式,点击对应的Mesh,New->Uniform(均匀破碎)->Fracture



9.添加新的建筑时,需要添加新的碰撞通道然后将该建筑的碰撞通道设置为这个

若需要使用自定义碰撞,则需要开启Use Custom Overlay,然后调整OverlappingBox的BoxExtent来实现放大缩小(不能直接放大Scale)
Can Place on Any Where, 三者只能开启其一
Can Only Place on Floor Plane, 三者只能开启其一
Can Only Place on Ground for Foundation三者只能开启其一

10.连锁摧毁逻辑:
在Server执行建筑放置逻辑中,
-
若有SnappingPoint,则将射线检测的HitActor设置为MainBuidlable,需要放置的建筑为附属对象。
-
若只能放在地板平面上,则将地板平面作为MainBuildable。
-
若可以放在任何位置,则判断其检测到的是否为建筑,若是建筑,则将此建筑设置为MainBuildable。
在检查完毕并生成建筑后,判断生成的建筑是否为地基,因为地基只能放在地面或与其他地基相连,所以地基之间不能算附属概念,所以返回,若不是地基,则将Buildable添加到主建筑的附属建筑列表中
MainBuildable->SupportedBuildings.Add(Buildable);
在BuildableMaster的销毁逻辑中,如果存在附属物品,则递归调用摧毁函数,实现连锁摧毁效果
11.伤害逻辑:
在Weapon中,创建ApplyDamage函数,在BuildableMaster中创建对应的TakeDamage函数。若Health减少为0,则调用销毁函数
12.Build Distance:
若小于当前最小建造距离,则不能建造->可以建造对面远一点的一边


浙公网安备 33010602011771号