강의 변경
기존에 학습시간 이후에는 유데미에 있는 언리얼 강의를 보면서 혼자 공부를 진행하고 있었습니다.
강의 내용이나 강의의 수준도 만족스럽고 최신 버전 관리도 아주 좋았는데 영어의 장벽이 생각보다 졸리게 만들어서
우선 흥미 상승을 위해 이전에 구입해 두었던 인프런 강의로 넘어왔습니다.
진행 중이었던 유데미 언리얼 C++ 강의 -> https://www.udemy.com/course/unrealcourse/
진행 중인 인프런 언리얼 C++ 강의 -> https://www.inflearn.com/course/%EC%9D%B4%EB%93%9D%EC%9A%B0-%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-part-1/dashboard
강의 홍보는 아니지만 두 강의 모두 양질의 수업을 진행해 주시는 것 같습니다.
인프런 강의는 이제 막 시작한거라 아직 초반 밖에 못 들었는데 조금 언리얼에 관심이 있으시고 언리얼 프로그래밍을 목표로 하시는 분이면 듣기 좋은 것 같습니다.
GetActorLocation()과 GetComponentLocation()의 차이
강의를 보다가 두 메서드의 정확한 차이가 무엇인지 궁금하게 되어서 알아보게 되었습니다.
우선 두 메서드는 언리얼 엔진에서 오브젝트의 위치를 가져올 때 사용하는 메서드이지만,
중요한 차이가 있어서 각각의 사용 범위와 동작을 정리합니다.
1. GetActorLocation()
- 대상: AActor 클래스에 해당
- 역할: 액터 전체의 월드 좌표(World Location)를 반환
- 사용 맥락: 액터의 중심 위치(즉, 루트 컴포넌트의 위치)가 필요할 때 사용
- 구체적 동작:
- 액터의 루트 컴포넌트(Root Component)의 위치를 기준으로 계산
- 액터 전체의 트랜스폼은 루트에 의해 정의되므로, 액터의 위치를 확인하고 조작할 때 주로 사용
FVector ActorLocation = MyActor->GetActorLocation();
2. GetComponentLocation()
- 대상: USceneComponent 기반 컴포넌트
- 역할: 특정 컴포넌트의 월드 좌표(World Location)를 반환
- 사용 맥락: 액터 내부의 특정 컴포넌트(ex: 메쉬, 카메라, 콜리전 등)의 위치가 필요할 때 사용
- 구체적 동작
- 해당 컴포넌트의 트랜스폼을 기준으로 월드 좌표를 반환
- 컴포넌트가 액터의 루트가 아니더라도, 개별 컴포넌트의 위치를 가져올 수 있다.
FVector ComponentLocation = MyComponent->GetComponentLocation();
주요 차이점
구분 GetActorLocation() GetComponentLocation()
대상 | 액터 (Actor) 전체 | 특정 컴포넌트 (Component) |
기준 | 루트 컴포넌트의 위치 | 해당 컴포넌트의 위치 |
사용 범위 | 액터의 전체적인 위치 필요 시 | 액터 내 특정 컴포넌트의 위치 필요 시 |
예시 | 캐릭터의 중심 위치 | 총구(mesh) 위치, 카메라 위치 등 |
언제 어떤 걸 써야 할까
- GetActorLocation():
- 액터의 전반적인 위치를 다룰 때
- 예: 캐릭터가 이동해야 하는 위치, 액터 간의 거리 계산 등
- GetComponentLocation():
- 특정 컴포넌트의 정확한 위치를 다룰 때
- 예: 총구 위치에서 총알을 발사, 카메라 위치 계산 등
간단히 말하면, 액터의 ‘전체 위치’는 GetActorLocation()으로,
‘특정 부분의 위치’는 GetComponentLocation()으로 처리하면 된다.
언리얼 C++ 코딩 표준
언리얼 엔진은 자체적으로 코딩 표준을 정했기 때문에 기존 C++ 코딩 방법을 버리고 언리얼 엔진 코딩 표준을 따라야 합니다.
프로그래밍 언어의 다양한 명명 규칙
- 파스칼 케이싱(Pascal Casing): 합성어의 첫 글자를 대문자를 사용해 명명
- UnrealEngine
- 카멜 케이싱(Camel Casing): 첫 합성어는 소문자로 나머지는 대문자를 사용해 명명
- unrealEngine
- 스네이크 케이싱(Snake Casing): 합성어 사이에 언더바(_)를 사용해 명명
- unreal_engine
이 중에서 언리얼엔진은 파스칼 케이싱을 사용하고 있으므로 해당 명명 규칙으로 코딩을 진행합니다.