본문 바로가기
게임프로그래밍/TheZombie

게임 개발 - 사운드

by 설련 2022. 2. 4.

 

void AGun::Fire() {
    if (MyOwner) {
        MuzzleEffect->Activate(true);
        FVector AimVector = MyOwner->GetAimVector();
        FTransform SpawnTransform = FTransform((AimVector - Body->GetSocketLocation("Muzzle")).Rotation(), Body->GetSocketLocation("Muzzle"));
 
        auto ShootAmmo = GetWorld()->SpawnActorDeferred<AAmmo>(AAmmo::StaticClass(), SpawnTransform, Cast<AActor>(this));
 
        ShootAmmo->GetCollision()->IgnoreActorWhenMoving(MyOwner, true);
        ShootAmmo->FinishSpawning(SpawnTransform);
 
        UGameplayStatics::PlaySoundAtLocation(GetWorld(), FireSound, GetActorLocation());
 
        GetWorldTimerManager().SetTimer(FireHandle, FTimerDelegate::CreateLambda([&]() {
            MuzzleEffect->Deactivate();
 
            if (MyOwner->CanBurstAttack()) {
                UE_LOG(LogTemp, Warning, TEXT("AutoShot"));
                IsReFiring = true;
                Fire();
            }
            else
                CanFire();
        }), AmmoSpeed, false);
    }
}

소리의 감쇠는 되게 예민한 공식으로서 사실 정밀한 구현을 하고자 한다면 생각보다 하드한 코드가 되어 버린다.

하지만 ue에서는 기하감쇠를 자동적으로 구현해놓고 있으며, 감쇠 에셋을 직접 만들 수 있기도 한다.

하지만 사운드 자체가 나의 영역은 아니므로, 인터넷에서 쉽게 구한 사운드를 통해 기하감쇠만 표현하도록 코드를 추가했다.

 

다음으로는 내가 공부할 때에는 이름만 들어보았고 실제로 구현해본 적이 없는 Bone IK에 대한 부분이다.

https://docs.unrealengine.com/4.26/ko/AnimatingObjects/SkeletalMeshAnimation/NodeReference/SkeletalControls/TwoBoneIK/

 

Two Bone IK

투 본 IK 를 사용해서 3 조인트 체인에 IK 를 적용하는 법입니다.

docs.unrealengine.com

간단하게 설명하자면 Bone의 Location을 프로그래밍으로 다이나믹컬하게 움직여 보다 정밀한 애님인스턴스를 구현하는데 그 목적이 있다.

해야하는 Bone IK는 두 가지.

첫번째로는 Weapon IK로, 양손이 무기를 애님 인스턴스가 작동되는 동안 실시간으로 놓치지 않도록 변경해줄 예정이며,

두번째로는 Foot IK로, 계단을 오를 수 있는 영역에서는 발바닥이 바닥에 붙도록 유도할 예정이다.

 

Weapon IK는 Bone Socket을 Weapon에 달아서 Joint만 구현하면 될 것이고

Foot IK는 Line Trace를 통해서 구현해보고자 한다.

 

'게임프로그래밍 > TheZombie' 카테고리의 다른 글

게임 개발 - UI(2), HP/SP  (0) 2022.02.04
게임 개발 - 본IK  (0) 2022.02.04
게임 개발 - 연사(3)  (0) 2022.02.04
게임 개발 - 연사(2)  (0) 2022.02.04
게임 개발 - 본 블렌딩, 에임 오프셋(2)  (0) 2022.02.04

댓글