【UE4C++ ActionRougelike-04】蓝图
1、操纵杆开关
1.1 创建操纵杆蓝图类
新建蓝图类leverBP,添加两个staticMesh组成操纵杆,设置对应Mesh;添加先前创建的交互组件

BP页面的Class Settings->Details->Interfaces添加先前创建的交互接口SInteraction Interface

蓝图中实现该接口

1.2 绑定Actor
添加变量SelectActor(Actor类)作为与操纵杆绑定的Actor,勾选“可编辑实例” 。

在Level中添加lever所绑定的Actor

在蓝图中添加操作操纵杆的逻辑

2、优化宝箱打开动画
2.1 修改宝箱交互接口
添加Timeline来过渡打开宝箱动画,使得LidMesh的Pitch跟随TimeLine的Value来变化(要在C++中修改LidMesh权限为:UPROPERTY(VisibleAnywhere, BlueprintReadOnly))

2.2 添加粒子效果
添加金子mesh和打开宝箱粒子效果
编写打开宝箱蓝图:添加Flip Flop控制打开和关闭,在Anim_Lid动画结束时播放粒子效果

效果如下:

3、优化攻击动画
3.1 添加攻击粒子效果
在抛体类发生碰撞的Location生成粒子系统,随后销毁抛体类

3.2 修改抛体类碰撞设置
将可能与攻击(抛体)发生碰撞的勾选为Block
这里抛体类会与Pawn进行碰撞,而玩家自身也是一个Pawn,因此魔法粒子一创建就Hit到了自身角色,导致产生粒子效果并且消失。引入Instigator(发起者)来使得魔法粒子对玩家自身隐藏。
注:Instigator常用于FPS中,比如玩家射出子弹击杀了其他玩家,此时要根据该子弹的Instigator进行奖励或战绩的更新
在MyCharacter.cpp中设置Instigator
void AMyCharacter::PrimaryAttack_TimeElapsed()
{
//参数设置
FActorSpawnParameters SpawnParams;
//设置为:总是生成;粒子在角色手部插槽生成,可能会与角色发生碰撞
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
//设置抛体的发起者为玩家自身
SpawnParams.Instigator = this;
}
蓝图中忽略抛体类Hit发起者的情况

最终效果如下:
