该项目很有意思,每个小物品都做的很真,在游戏里和现实中给人的感觉一样
可交互物品基类:BP_AmbientPhysicalActor
该Actor下有一个StaticMesh和AudioComponent,配置的参数:
在构造函数中:
(1)设置StaticMesh
(2) 勾选Syncronize OverNet,开启网络复制
(3)设置Sound
(4)设置动态材质
(5)根据bool判断是否随机着色
如果是,对动态材质参数TintColor和UV_Paning和TintIntensity设置随机变量,如果否,则设置为默认参数变量
在PlayCollisionSound函数中(规定基于物体速度播放声音的时间和声音)
在Hit回调中:
它这里调用的Hit,不是StaticMesh的On Component Hit,而是Collision的Hit回调
保存了HitLocation等信息,如果Mesh速度大于可破碎速度,就调用Break方法,如果速度大于最小声音的速度,就调用PlayCollisionSound方法
Break方法:
如果没有DestructibleComponent,添加一个DestructibleComponent,设置位置旋转信息,Mesh,Material,然后在对DestructibleComponent进行ApplyDamage之前先Destroy StaticMeshComponent,再让其破碎,最后销毁,销毁这里不是用的Destroy,而是SetLifeSpan
HitByTrace方法:
直接调用了Break方法
1 纸杯
子类叫BP_obj_Generic_Plastic继承于基类,构造函数配置参数如下
在StaticMesh中
在PM_PhysicalObjects中的参数
2 书本
3 铁棍
4 易拉罐
5 酒瓶
6 鞋子
7 布料
8 水桶
在水桶类中除了水桶mesh,还有提手的StaticMesh1,为了让提手和水桶有拉着的效果,多加了Physics Constraint Component,将水桶mesh和提手mesh束缚起来
9 自行车
在该类中,Wheel1Constrain是Physics Constraint Component,负责把后轮Wheel1和车身StaticMeshComponent链接起来,
Wheel2Constrain也是Physics Constraint Component,负责把前轮Wheel2和车前把Handle链接起来,
后面几个Physics Constraint Component是将两个脚踏板和铁杆相连,铁杆和车身相连,这样在游戏中才能看到车子倒地,车踏板还在车子上转动效果
最后在游戏场景中将各种小物件放在一起,效果就和现实世界的感觉一样