Deny

Deny | Ragdoll | Unreal Engine 5 | C++ | 언리얼엔진

mane 2024. 2. 22. 00:59
728x90
반응형

인사말

안녕하세요. 이번 포스트에서는 개인 프로젝트로 진행하는 Deny 에 대해 작성하겠습니다.


내용

이번 작업 내용은 좀비로 쓰일 캐릭터를 데미지 입히고 죽으면 래그돌 시키는 작업을 하였습니다.


코드

간략히 코드를 첨부하겠습니다.

// ApplyPointDamage 로 데미지를 줍니다.
if(ABaseZombie* Zombie = Cast<ABaseZombie>(OtherActor))
{
    UGameplayStatics::ApplyPointDamage(Zombie,BulletDamage,HitDirection,Hit,InstigatedBy,this,UDamageType::StaticClass());
}

OnTakePointDamageEvent 이벤트를 바인딩합니다.

this->OnTakePointDamage.AddDynamic(this, &ThisClass::OnTakePointDamageEvent);

맞은 방향과 Bone Name을 얻고 머리를 맞으면 바로 죽음 처리를 하였습니다.

void ABaseZombie::OnTakePointDamageEvent(AActor* DamagedActor, float Damage, AController* InstigatedBy,
    FVector HitLocation, UPrimitiveComponent* FHitComponent, FName BoneName, FVector ShotFromDirection,
    const UDamageType* DamageType, AActor* DamageCauser)
{
    DamagedDirection = ShotFromDirection;
    DamagedBoneName = BoneName;
    UE_LOG(LogTemp, Error, TEXT("DamagedBoneName : %s, Causer : %s"), *DamagedBoneName.ToString(), *DamageCauser->GetName());

    if(DamagedBoneName == "head")
    {
        Health = 0.f;
        Die();
        return;
    }
    DecreaseHealth(Damage);
}

//
void ABaseZombie::DecreaseHealth(const float Damage)
{
    Health -= Damage;
    if(Health <= 0.f)
    {
        Health = 0.f;
        Die();
    }
}

영상

https://www.youtube.com/watch?v=0vIeDStbz2E

728x90
반응형