11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音

给游戏添加声音

很简单的小功能

新建两个蓝图类型是Cue和Attenuation

修改Attenuation的预设

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第1张图片

在cue内插入预设

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第2张图片

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第3张图片

给角色添加死亡动画

首先在角色蓝图的状态蓝图内添加死亡动画

添加一个bool变量Is Alive11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第4张图片

 

修改角色组件USAttributeComponent.h文件

UFUNCTION(BlueprintCallable,Category="Health") bool IsALive();

在.cpp内添加

bool USAttributeComponent::IsALive() { return Health > 0.0f; }

在角色.h蓝图内添加函数

UFUNCTION() void OnHealthChanged(AActor* InstigatorActor,USAttributeComponent* OwningComp,float NewHealth,float Delta);

virtual void PostInitializeComponents() override;

在.cpp内添加

void ASCharacter::PostInitializeComponents() { //初始化的时候绑定事件 Super::PostInitializeComponents(); AttributeComp->OnHealthChanged.AddDynamic(this,&ASCharacter::OnHealthChanged); }

void ASCharacter::OnHealthChanged(AActor* InstigatorActor, USAttributeComponent* OwningComp, float NewHealth, float Delta) { //当血量少于0的时候清除控制器的输入 if(NewHealth < 0.0f && Delta<0.0f) { APlayerController * PC = Cast(GetController()); DisableInput(PC); } }

最后在角色动画蓝图内添加11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第5张图片

 

创建物体的血量UI

新建UI11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第6张图片

 

在之前学习材质建立的Dummy物体内添加蓝图

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第7张图片

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第8张图片

##这里遇到了问题,创建出来的UI一直在画面中央不在物体上

已经解决,是Dummy的蓝图内创建错误

我一开始创建的是Object

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第9张图片

 

经过修改后是

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第10张图片

 

我们应该创建的是Widget类型而不是Object类型

##又出现了奇怪的Bug,SetRenderTranslation显示的位置错误

已解决,是因为我忘记调整UI的位置了

修改前:

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第11张图片

 

修改后:

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第12张图片

 

效果图:

最后让UI在击中的时候才会显示

11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音_第13张图片

你可能感兴趣的:(UE5,斯坦福C++,上课记录,游戏,ui,ue4)