【UE4C++ ActionRougelike-04】蓝图


【UE4C++ ActionRougelike-04】蓝图

1、操纵杆开关

1.1 创建操纵杆蓝图类

新建蓝图类leverBP,添加两个staticMesh组成操纵杆,设置对应Mesh;添加先前创建的交互组件

创建LeverBP类

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

添加交互接口

蓝图中实现该接口

蓝图实现交互接口

1.2 绑定Actor

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

添加变量SelectActor

在Level中添加lever所绑定的Actor

绑定SelectActor

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

蓝图实现交互接口

2、优化宝箱打开动画

2.1 修改宝箱交互接口

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

添加TimeLine

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发起者的情况

忽略抛体所属发起者

最终效果如下:

攻击时粒子效果

文章作者: Woilin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Woilin !
评论
  目录