카메라쉐이크는 게임에 극적인 요소를 주기 좋은 장치입니다.
간단하게 구현 가능합니다.
코드를 보면,
// CameraShakeObstacle.h
#pragma once
#include "GameInfo.h"
#include "Camera/CameraShake.h"
#include "CameraShakeObstacle.generated.h"
/**
*
*/
UCLASS()
class ESCAPEGAME_API UCameraShakeObstacle : public UCameraShake
{
GENERATED_BODY()
public:
UCameraShakeObstacle();
};
// CameraShakeObstacle.cpp
#include "CameraShakeObstacle.h"
UCameraShakeObstacle::UCameraShakeObstacle()
{
// 지속시간
OscillationDuration = 0.5f;
// Y축 진폭, 주파수
LocOscillation.Y.Amplitude = 20.f;
LocOscillation.Y.Frequency = 100.f;
// Z축 진폭, 주파수
LocOscillation.Z.Amplitude = 20.f;
LocOscillation.Z.Frequency = 100.f;
// 카메라 시점 진동
/*FOVOscillation.Amplitude = 1.f;
FOVOscillation.Frequency = 100.f;*/
// 최대 한번만 카메라쉐이크 -> 계속 호출 가능하면 어색
bSingleInstance = true;
}
원하는 대로 설정 후, 카메라쉐이크를 쓰고싶은 클래스에 위 클래스 헤더파일을 include하고, 아래와 같이 사용하면 됩니다.
// MyPlayerCharacter.cpp
#include "CameraShakeObstacle.h"
// 장애물 닿을 경우 사망 코드 구현
void AMyPlayerCharacter::Death()
{
// 게임오버 시네마틱 영상 ON
PrintViewport(1.f, FColor::Green, "Death");
GetController<AMyPlayerController>()->ClientPlayCameraShake(UCameraShakeObstacle::StaticClass(),
1.f, ECameraAnimPlaySpace::CameraLocal);
// 카메라쉐이크가 끝나고 호출될 함수의 타이머를 설정한다
GetWorldTimerManager().SetTimer(Timer, this,
&AMyPlayerCharacter::GameOver, 1.f, true);
}
void AMyPlayerCharacter::GameOver()
{
// GameOver하고 세이브포인트로
}
아래와 같이 잘 동작하는 것을 확인할 수 있습니다.
'게임 개발 (언리얼 엔진)' 카테고리의 다른 글
UE4 게임 개발 EscapeGame - 9 : UI(User Interface) (0) | 2020.12.09 |
---|---|
UE4 게임 개발 EscapeGame - 8 : 애니메이션 블루프린트와 재질기반사운드 (0) | 2020.12.07 |
UE4 게임 개발 EscapeGame - 6 : 디스트럭터블 메시(Destructible Mesh) (0) | 2020.12.01 |
UE4 게임 개발 EscapeGame - 5 : 트리거 클래스 구성 (0) | 2020.11.26 |
UE4 게임 개발 EscapeGame - 4 : 트리거 활용 (0) | 2020.11.23 |