묻공러
언리얼 Actor - 주요 이벤트 함수
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (487)
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 (124)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
      • 유니티 (1)
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
게임 엔진/[코드조선] 언리얼

언리얼 Actor - 주요 이벤트 함수

2024. 5. 11. 11:00

이벤트 함수
게임이 시작될 때, 액터는 준비/시작/지속/퇴장의 과정을 거친다
이 과정에서 언리얼 엔진에 의해 자동으로 호출되는 함수를 이벤트 함수라고 한다
주요 이벤트 함수의 호출 및 순서에 따른 구분은 아래와 같다

- PostInitializeComponents()
액터를 구성하는 모든 컴포넌트가 초기화되었고
액터 자신이 초기화 될 수 있는 상태일 때 호출되는 함수로

준비 과정에 속한다

- BeginPlay()
해당 함수가 호출되면서 액터는 자신에게 주어진 로직을 수행하기 시작하며

시작 과정에 속한다

- Tick(float DeltaSeconds)
BeginPlay() 함수가 한 번 호출되는 함수라면, 

Tick() 함수는 매 프레임마다 호출된다

Tick() 함수의 매개변수인 DeltaSeconds는 이전 프레임부터 현재 프레임까지 걸린 시간이다

지속 과정에 속한다

- EndPlay(EEndPlayReason EndPlayReason)
게임에서 액터가 소멸될 때 호출되는 함수로 퇴장 과정에 속한다

 

Tick() 함수를 활용한 액터의 움직임 구현 실습

// STorch.h

...
class STUDYPROJECT_API ASTorch : public AActor
{
    ...

public:
    ...

    virtual void BeginPlay() override;

    virtual void Tick(float DeltaSeconds) override;

private:
    ...

    UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "ASTorch", Meta = (AllowPrivateAccess))
    float RotationSpeed;

};
// STorch.cpp


...

ASTorch::ASTorch()
{
    PrimaryActorTick.bCanEverTick = true;

    ...
}

void ASTorch::BeginPlay()
{
    Super::BeginPlay();

    RotationSpeed = 300.f;
}

void ASTorch::Tick(float DeltaSeconds)
{
    Super::Tick(DeltaSeconds);

    AddActorWorldRotation(FRotator(0.f, RotationSpeed * DeltaSeconds, 0.f));
}

 

MovementComponent를 활용한 액터의 움직임 구현 실습

MovementComponent를 활용하면

bCanEverTick을 false로 해서 Actor의 Tick 함수를 내부에 작성하지 않아도 된다

Actor의 BeginPlay에서 회전하는 규칙 및 방법을 정해서 초기화를 했기 때문에

위의 예제와 같은 상황을 만들어 낼 수 있다

// STorch.h

class URotatingMovementComponent;

...
class STUDYPROJECT_API ASTorch : public AActor
{
    ...

private:
    ...

    UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ASTorch", meta = (AllowPrivateAccess))
    TObjectPtr<URotatingMovementComponent> RotatingMovementComponent;

};
// STorch.cpp

...
#include "GameFramework/RotatingMovementComponent.h"

...

ASTorch::ASTorch()
{
    PrimaryActorTick.bCanEverTick = false;

    ...

    RotatingMovementComponent = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingMovementComponent"));
}

void ASTorch::BeginPlay()
{
    Super::PostInitializeComponents();

    RotationSpeed = 300.f;
    RotatingMovementComponent->RotationRate = FRotator(0.f, RotationSpeed, 0.f);
}

void ASTorch::Tick(float DeltaSeconds)
{
    Super::Tick(DeltaSeconds);

    //AddActorWorldRotation(FRotator(0.f, RotationSpeed * DeltaSeconds, 0.f));
}
저작자표시 비영리 변경금지 (새창열림)

'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글

언리얼 게임 플레이 프레임워크 - Game Mode  (0) 2024.05.12
언리얼 게임 플레이 프레임워크 - 기본 구성  (0) 2024.05.12
언리얼 Actor - 언리얼 에셋 지정  (0) 2024.05.11
언리얼 Actor - UPROPERTY()의 Specifier  (0) 2024.05.11
언리얼 Actor - 언리얼 C++ 자료형  (0) 2024.05.11
'게임 엔진/[코드조선] 언리얼' 카테고리의 다른 글
  • 언리얼 게임 플레이 프레임워크 - Game Mode
  • 언리얼 게임 플레이 프레임워크 - 기본 구성
  • 언리얼 Actor - 언리얼 에셋 지정
  • 언리얼 Actor - UPROPERTY()의 Specifier
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.