UE求职Demo开发日志#13 完善所有伤害判定
1 相关思路
1.1 添加相关倍率属性和完善工具函数
添加了这四个要用到的变量:
SpecialSkill_1_Multi
SpecialSkill_2_Multi
PowerSkillSumMulti
DodgeAttackSumMulti
1.2 普攻第五段有四段伤害,四段平分总倍率(也可以按比例分)
1.3 SpecialSkill在强化的动画里加入通知,一个在开头重置cnt,一个在第一段结束后cnt++,没强化的动画开头也要重置
1.4 终结技动画通知状态开始检测一次,记录范围内的敌人的引用,然后通过通知的总时间和伤害段数SetTimer来延时应用伤害,暂时还是均分总倍率
1.5 DodgeAttack放五次isAttacking通知状态来应用伤害
2 实现过程
2.1 添加相关倍率属性和完善工具函数
过程跟之前一样,还是添加到AS里,就不贴了
2.2 实现1.2
if(comboCnt==0)
{
return Cast<UMyPlayerAttributeSet>(AttributeSet)->NA_5_Multi.GetCurrentValue()/4.0;
}
2.3 实现1.3
添加计数变量:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite,Category = "MyPlayer|SpecialSkill")
int SpecialSkill_Cnt=0;
添加两个动画通知:
重载接收通知:
在GetCurrentAttackMulti里加入这几行:
if(myAttackType==EMyAttackType::SpecialSkill)
{
UE_LOG(LogTemp,Warning,TEXT("GetCurrentAttackMulti-->SpeciallSkill"));
if(SpecialSkill_Cnt==0)
{
return Cast<UMyPlayerAttributeSet>(AttributeSet)->SpecialSkill_1_Multi.GetCurrentValue();
}
if(SpecialSkill_Cnt==1)
{
return Cast<UMyPlayerAttributeSet>(AttributeSet)->SpecialSkill_2_Multi.GetCurrentValue();
}
}
两段攻击之间AddCnt
测试一下倍率没啥问题:
2.4 实现1.4
添加变量记录目标:
UPROPERTY(EditAnywhere, BlueprintReadWrite,Category = "MyPlayer|PowerAttack")
TArray<AActor*> Targets;
添加一个状态通知来管理Targets,开始时检测并加入Array,结束时清空数组:
Begin:
End:
再添加一个动画通知,应用伤害:
经过测试多个敌人都正常扣血,这个0.1的倍率是测试的时候改的
2.5 实现1.5
添加五段动画通知:
效果:
好的到这终于每种攻击的伤害判定就完善了,除了一些特殊的需求,比如按比例来分每段的伤害