Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 이리5조
- 스파르타코딩클럽
- https://mynameiskgws.tistory.com/
- https://ji-han.tistory.com/
- https://eo-oe.tistory.com/
- https://hjmag1120.tistory.com/
- 태어난김에 보스까지
- https://vetenir.tistory.com/
Archives
- Today
- Total
info8995 님의 블로그
TIL: 언리얼 엔진 C++로 엘리베이터 객체 구현 본문
0
TIL: 언리얼 엔진 C++로 엘리베이터 객체 구현
이번에는 언리얼 엔진에서 엘리베이터 객체를 C++로 구현하는 방법에 대해 정리했다. 이 객체는 플레이어가 타고 있는 엘리베이터가 위아래로 움직이는 간단한 예제다. 주요 구현 요소는 AActor를 상속받은 클래스인 AElevator에 포함되어 있다.
1. 클래스 구조
- 헤더 파일 (Elevator.h):
- SceneRoot: 엘리베이터의 루트 컴포넌트.
- StaticMeshComp: 엘리베이터의 외형을 나타내는 정적 메시 컴포넌트.
- MoveSpeed: 엘리베이터의 이동 속도.
- StartLocation: 엘리베이터의 시작 위치.
- bMovingUp: 엘리베이터가 위로 이동 중인지, 아래로 이동 중인지 여부를 결정하는 변수.
- BeginPlay(), Tick(): 게임 시작과 매 프레임마다 호출되는 함수.
- C++ 파일 (Elevator.cpp):
- CreateDefaultSubobject: 객체를 생성하여 컴포넌트를 초기화한다.
- ConstructorHelpers::FObjectFinder: 정적 메시와 재질을 불러오는 데 사용.
- Tick(): 매 프레임마다 엘리베이터의 위치를 변경하는 로직.
- SetActorLocation(): 엘리베이터의 위치를 설정한다.
2. 주요 동작
- 엘리베이터 이동:
- Tick() 함수에서는 bMovingUp 플래그에 따라 엘리베이터의 위치를 위 또는 아래로 변경한다.
- 최대 높이(MaxZ)에 도달하면 방향을 반대로 바꾸고, 최소 높이(MinZ)에 도달하면 다시 위로 움직인다.
- 정적 메시와 재질 설정:
- StaticMeshComp와 MaterialAsset을 사용하여 엘리베이터의 외형과 재질을 설정한다.
3. 코드 분석
- 컴포넌트 생성 및 초기화:
- StaticMeshComp는 SceneRoot에 첨부되어 있다.
- ConstructorHelpers::FObjectFinder를 사용하여 메시와 재질을 찾아서 적용한다.
- 움직임 제어:
- MoveSpeed 변수와 DeltaTime을 이용하여 엘리베이터의 속도와 이동을 제어한다.
- 게임 시작 시 초기화:
- BeginPlay()에서 필요한 초기화가 이루어진다.
4. UPROPERTY 설명
UPROPERTY는 Unreal Engine의 객체를 관리하는 특성(속성)을 정의하는 데 사용되는 매크로로, 객체의 속성에 대한 여러 가지 설정을 제어한다. 코드에서 사용된 주요 UPROPERTY는 다음과 같다:
- UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Item|Components"):
- VisibleAnywhere: 에디터에서 언제나 해당 컴포넌트가 보이도록 설정.
- BlueprintReadOnly: 블루프린트에서 읽기만 할 수 있는 속성.
- Category = "Item|Components": 에디터에서 속성이 컴포넌트 관련 항목으로 분류된다.
- UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item|Properties"):
- EditAnywhere: 에디터에서 속성을 수정할 수 있게 설정.
- BlueprintReadWrite: 블루프린트에서 속성을 읽고 쓸 수 있게 설정.
- Category = "Item|Properties": 속성이 프로퍼티 관련 항목으로 분류된다.
이 UPROPERTY 매크로는 컴포넌트나 변수의 접근성을 정의하고, 언리얼 엔진의 에디터와 블루프린트에서의 사용 방식을 제어한다.
5. 최종 정리
- 배운 점:
- Tick()을 사용하여 매 프레임마다 위치를 변경하는 로직을 작성하는 법.
- UPROPERTY를 활용하여 컴포넌트와 변수의 접근성을 제어하는 방법.
- SetActorLocation()을 사용해 엘리베이터의 위치를 부드럽게 이동시키는 법.
- bMovingUp 플래그로 엘리베이터의 방향을 제어하는 로직 구현.
'TIL(Today I Learned) > Unreal Engine' 카테고리의 다른 글
| 발사체 구현하기 (0) | 2025.02.17 |
|---|---|
| TIL언리얼 엔진에서 Overlap 이벤트를 활용한 아이템 획득 시스템 구현 (0) | 2025.02.12 |
| TIL: 언리얼 액터의 이동 및 회전 구현 (0) | 2025.02.04 |
| 29일차(언리얼 엔진에서 새로운 Actor 클래스 생성) (0) | 2025.01.27 |
| 26일차(언리얼 엔진 프로젝트 폴더 구조와 주요 파일) (0) | 2025.01.22 |