전체 글 116

[UE4] 마우스휠로 카메라 줌(Zoom)기능 구현하기

구현 방법 1. 먼저 프로젝트세팅>입력 으로 들어가서 액션매핑에 ZoomIn과 ZoomOut을 만들어준다. 2. 설정한 입력 세팅을 캐릭터 클래스의 SetupPlayerInputComponent()함수에서 원하는 함수와 바인딩 시켜준다. void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); // 설정한 입력 세팅을 Pawn의 함수와 Binding시키기. PlayerInputComponent->BindAction(TEXT("ZoomIn"), EInputEvent::IE_Pressed, this, &AMyCha..

UE4 2022.10.21
[UE4] 데미지 프레임워크

TakeDamage() 언리얼 엔진의 액터 클래스 AActor에는 TakeDamage라는 함수가 구현돼 있다. 이 함수를 사용하면 손쉽게 액터에 데미지를 전달할 수 있다. TakeDamage 함수는 총 네 개의 인자를 가지고 있다. - DamageAmount : 전달할 데미지의 세기 - DamageEvent : 데미지 종류 - EventInstigator : 공격 명령을 내린 가해자 - DamageCauser : 데미지 전달을 위해 사용한 도구 여기서 데미지를 가한 진정한 가해자는 폰이 아니라 폰에게 명령을 내린 플레이어 컨트롤러라고 할 수 있으므로 EventInstigator에는 폰정보가 아닌 플레이어 컨트롤러의 정보를 보내줘야 한다. if (bResult)//충돌이 감지되면 { if (HitResul..

UE4 2022.10.21
[UE4] 디버그 드로잉(Debug Drawing)

디버그 드로잉 기능을 사용하려면 소스 상단에 DrawDebugHelpers.h 헤어를 추가해야 한다. 이 헤더에는 다양한 그리는 함수들이 선언돼 있다. 그 중에서 캡슐 모양을 그리는 기능인 DrawDebugCapsule()함수를 사용하여 탐색을 위해 원이 움직인 궤적을 표현해본다. 캡슐의 반지름을 설정하고 탐색 시작 위치에서 끝 위치로 향하는 벡터를 구한 후, 벡터의 중점 위치와 벡터 길이의 절반을 대입하면 우리가 원하는 크기의 캡슐 모양을 구할 수 있다. 캡슐 방향을 회전시키려면 회전 행렬을 적용하면 된다. 캡슐을 캐릭터 시선 방향과 일치하게 회전시키려면 FRotationMatrix 의 MakeFromZ함수에 캐릭터의 시선 방향 벡터를 입력해 필요한 회전 좌표축을 생성할 수 있다. #if ENABLE_..

UE4 2022.10.20
[UE4] 가비지 컬렉션(Garbage Collection)

언리얼 실행 환경은 메모리에 떠있는 언리얼 오브젝트가 사용 중인지 아닌지를 주기적으로 검사하고, 사용하지 않는 물체는 메모리에서 자동 제거하는 가비지 컬렉션을 제공한다. 언리얼 오브젝트가 사용 중인지 여부는 다른 언리얼 오브젝트가 해당 오브젝트를 참조하는지로 판단하는데, FHitResult의 멤버 변수 Actor의 선언이 일반 참조로 선언된다면 해당 함수에서의 참조로 인해 제거돼야 할 액터가 메모리에 그대로 남아있는 문제가 발생할 수 있다. 이러한 문제를 방지하기 위해 FHitResult는 참조로부터 자유롭게 포인터 정보를 전달해주는 약 포인터(TWeakObjectPtr) 방식으로 멤버변수를 선언했다. 약 포인터로 지정된 액터에 접근하려면 IsValid()함수를 이용해 사용하려는 액터가 유효한지 먼저 점..

UE4 2022.10.20
[221020] Level_ 1 문자열 내 마음대로 정렬하기

https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; vector solution(vector strings, int n) { vector answer; vector temp; for (string s : strings) { temp.push_back(make_pair(s[n], s)); } sort(temp.begin(), temp.end()); for (pair..