UE4 可交互植被项目

任务一、实现一个力对树木的冲击效果

思路:

按1键时在红点出生成一个风力的蓝图(Force_Impulse BP)并在该点产生一个特效

在Force_Impulse BP的BeginPlay中实现三个功能:

1、配置参数

先拿到世界中的树木生成器蓝图(Tree Manager BP),

调用Tree Manager BP的Add Impulse函数,配置好风力的点Location,风力强度Strength,风力半径Radius,配置TimeLineComponent

这里可以看到设置了TimeLine的播放速率(Set Play Rate),设置TimeLine曲线(Set Float Curve),设置了风力的Location和风力的半径Radius放到了一个材质参数集中(ForceParameters)的参数Foce1_Loc和参数Force1_Radius 中(通过Set  Vector Parameter  Value函数)

ForceParameters里的参数配置如下:

播放TimeLine,把曲线的输出值乘以风强度ForceStrength赋给了材质(ForceParameters)的参数Foce_Strength中,由此可见,Force_Strength不是静态在ForceParameter中设定的,而是在蓝图中动态赋值到参数中的

2、拿到范围内的所有叶子组件蓝图,调用该蓝图里的从风力中生成落叶,生成废墟,生成水果三个函数

找到半径范围内(MultiSphereTraceByChannel)的所有物体,起点和终点设置为一个点,设置搜索半径即可输出所有的物体,遍历所有的Hit物体,拿到Hit信息,Break分离出HitComponent,  转成叶子蓝图的ComponentFoliageComp_Tree_BP

然后调用叶子蓝图中的从风力中生成落叶,生成残渣,生成水果三个函数

我又仔细看了下,好像确实是有风时,有落叶和残渣掉下来

(1)在生成落叶函数中:在叶子组件旁边播放落叶的特效

(2)在生成残渣(小树枝等)函数中:计算 生成残渣位置,残渣的位置的x和y是该树static mesh的x和y,z等于mesh的z*scale大小*2*0.6+位置的z

力的冲击影响因子Impulse Influence(树的位置和风力位置距离长度除以风的范围半径),如果风的强度(Impulse Strength和力的冲击影响因子Impulse Influence)大于最小下落的推力(Min Impulse Strength to Fall),就分别拿到所有Bark(不知道翻译叫什么)和落叶(Leaves)的材质,如果风力大就生成残渣多一点如果,风力小就生成少一点,更加真实

这里对废渣设置了初始力的推力=风力和废渣位置的方向*风力强度*风力影响因子*系数

(3)在生成水果函数中:计算生成位置,力的冲击影响因子,同上生成不同水果

 

3、销毁Force_Impulse_BP

 

 

所有的Actor解析:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值