目录
这节将会完成课程设置的第二次作业之一 —— 实现角色的黑洞技能,即发出一个特殊的黑洞粒子,该粒子会吸引周围的物体。
1. 代码结构更改
随着课程内容的深入,我们将会添加的技能会越来越多,单纯在SurCharacter.cpp里不断添加新代码会使结构变得愈发臃肿。为了后续开发的可扩展性,需要重构技能部分的代码。
因为Gideon这个角色的技能都是从右手发出不同的粒子,那从右手发出这个功能的代码是可以复用的。因此把这部分代码单独封装,只需要传入需要生成的类即可。于是,在SurCharacter中加入一个负责生成粒子的函数SpawnProjectile(记得在.h文件中声明):
void ASurCharacter::SpawnProjectile(TSubclassOf<AActor> ClassToSpawn)
{
if (ensureAlways(ClassToSpawn)) {
// 此前PrimaryAttack_TimeElapsed中的内容,省略。。。
// 生成传入的类
GetWorld()->SpawnActor<AActor>(ClassToSpawn, SpawnTM, SpawnParams);
}
}
相应的,此前PrimaryAttack_TimeElapsed函数就保留一行代码:
void ASurCharacter::PrimaryAttack_TimeElapsed() {