Section 13: The Enemy Class - Lecture 271
Grux Physics Asset
This commit is contained in:
parent
e70a5a290b
commit
5352846678
|
@ -114,6 +114,5 @@ DoubleClickTime=0.200000
|
|||
DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
|
||||
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
|
||||
DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
|
||||
-ConsoleKeys=Tilde
|
||||
+ConsoleKeys=Tilde
|
||||
|
||||
|
|
BIN
Content/ParagonGrux/Characters/Heroes/Grux/Meshes/Grux_Extents.uasset (Stored with Git LFS)
BIN
Content/ParagonGrux/Characters/Heroes/Grux/Meshes/Grux_Extents.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/_Game/Enemies/EnemyBP.uasset (Stored with Git LFS)
BIN
Content/_Game/Enemies/EnemyBP.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/_Game/HUD/HitNumber.uasset (Stored with Git LFS)
BIN
Content/_Game/HUD/HitNumber.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/_Game/Maps/DefaultMap.umap (Stored with Git LFS)
BIN
Content/_Game/Maps/DefaultMap.umap (Stored with Git LFS)
Binary file not shown.
|
@ -20,7 +20,6 @@ AEnemy::AEnemy() :
|
|||
{
|
||||
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
|
||||
PrimaryActorTick.bCanEverTick = true;
|
||||
|
||||
}
|
||||
|
||||
// Called when the game starts or when spawned
|
||||
|
@ -78,11 +77,26 @@ void AEnemy::DestroyHitNumber(UUserWidget* HitNumber)
|
|||
HitNumber->RemoveFromParent();
|
||||
}
|
||||
|
||||
void AEnemy::UpdateHitNumbers()
|
||||
{
|
||||
for (auto& HitPair : HitNumbers)
|
||||
{
|
||||
UUserWidget* HitNumber{ HitPair.Key };
|
||||
const FVector Location{ HitPair.Value };
|
||||
FVector2D ScreenPosition;
|
||||
UGameplayStatics::ProjectWorldToScreen(GetWorld()->GetFirstPlayerController(),
|
||||
Location, ScreenPosition);
|
||||
|
||||
HitNumber->SetPositionInViewport(ScreenPosition);
|
||||
}
|
||||
}
|
||||
|
||||
// Called every frame
|
||||
void AEnemy::Tick(float DeltaTime)
|
||||
{
|
||||
Super::Tick(DeltaTime);
|
||||
|
||||
UpdateHitNumbers();
|
||||
}
|
||||
|
||||
// Called to bind functionality to input
|
||||
|
|
|
@ -42,6 +42,8 @@ protected:
|
|||
|
||||
UFUNCTION()
|
||||
void DestroyHitNumber(UUserWidget* HitNumber);
|
||||
|
||||
void UpdateHitNumbers();
|
||||
private:
|
||||
/** Particles to spawn when hit by bullets */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Combat, meta = (AllowPrivateAccess = true))
|
||||
|
@ -103,5 +105,5 @@ public:
|
|||
FORCEINLINE FString GetHeadBone() const { return HeadBone; }
|
||||
|
||||
UFUNCTION(BlueprintImplementableEvent)
|
||||
void ShowHitNumber(int32 Damage, FVector HitLocation);
|
||||
void ShowHitNumber(int32 Damage, FVector HitLocation, bool bHeadshot);
|
||||
};
|
||||
|
|
|
@ -678,10 +678,12 @@ void AShooterCharacter::SendBullet()
|
|||
if (BeamHitResult.BoneName.ToString() == HitEnemy->GetHeadBone())
|
||||
{
|
||||
damageToApply = EquippedWeapon->GetHeadshotDamage();
|
||||
HitEnemy->ShowHitNumber(damageToApply, BeamHitResult.Location, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
damageToApply = EquippedWeapon->GetDamage();
|
||||
HitEnemy->ShowHitNumber(damageToApply, BeamHitResult.Location, false);
|
||||
}
|
||||
|
||||
UGameplayStatics::ApplyDamage(HitEnemy,
|
||||
|
@ -689,7 +691,6 @@ void AShooterCharacter::SendBullet()
|
|||
GetController(), this,
|
||||
UDamageType::StaticClass());
|
||||
|
||||
HitEnemy->ShowHitNumber(damageToApply, BeamHitResult.Location);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue