분류 전체보기 115

[221019] KAKAO [1차] 비밀지도

https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; vector ChangeNum(int n, int max) { vector retval; while (n >= 2) { retval.push_back(n % 2); n /= 2; } if (n > 0) { retval.push_back(1); } while (retval.size() < max) { retval...

[C++11] 람다식

C++ 11 규약부터 정식으로 추가된 람다식은 함수를 헤더에 선언할 필요가 없으므로 간단한 로직을 간편하게 처리할 수 있다는 장점이 있다. 람다식은 다음 네가지 영역으로 구분된다. 1. 람다 소개자 [ ]로 표시되며 람다 구문이 참조할 환경(캡처)을 지정한다. 식 안에서 사용할 멤버 변수와 함수의 인스턴스. 2. 파라미터 리스트 람다 함수가 사용할 파라미터 지정. 함수 인자가 없다면 빈 괄호 사용. 3. 후행 반환 타입(Trailing Return Type) ‘->’ 기호를 사용한 후 람다 함수가 반환할 타입을 지정한다. 반환값이 없다면 void 사용. 4. 람다 함수 구문 { }로 캡처 환경을 사용한 람다 함수의 로직을 넣어준다. 캡처로 지정된 클래스의 멤버 변수와 함수에 자유롭게 접근할 수있다.

C++ 2022.10.19
[UE4] 델리게이트(Delegate)

특정 객체가 해야 할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 설계의 개념이다. 언리얼 엔진의 델리게이트는 A객체가 B객체에게 작업 명령을 내릴 때 B객체에 자신을 등록하고 B의 작업이 끝나면 A에게 알려주는 설계방식을 의미한다. 로직 순서 1. A의 함수를 B에 등록 2. B에게 A가 명령. 3. B가 A의 명령을 실행. 4. 1에서 등록한 A의 함수를 호출. 애님 인스턴스에서 제공하는 델리게이트 애님 인스턴스에는 에니메이션 몽타주 재생이 끝나면 발동하는 OnMontageEnded라는 델리게이트를 제공한다. 어떠한 언리얼 오브젝트라도 UAnimMontage* 인자와 bool 인자를 가진 멤버 함수를 가지고 있다면, 이를 OnMontageEnded 델리게이트에 등록해 몽타주 재생이 끝나..

UE4 2022.10.19
[UE4] 애니메이션 몽타주(Animation Montage)

애니메이션 몽타주란? 애니메이션 몽타주는 폭넓은 애니메이션 이펙트가 가능해지는 다목적 툴로써, 주로 코드를 통해서나 플루프린트 비주얼 스크립트 안에서 애니메이션 컨트롤을 노출시키는 데 관련되어 있다. 몽타주를 사용하면 블루프린트 또는 코드를 통해 애니메이션 애셋을 바로 제어할 수 있다. 여러 애니메이션 시퀀스를 하나의 애셋으로 합칠 수 있으며, 이를 섹션으로 나누어 그 일부 또는 조합 재생이 가능하다. 몽타주 안에서 이벤트를 발동시켜 다양한 로컬이나 리플리케이트 작업을 할 수 있는데, 예를 들면 사운드 큐나 파티클 이펙트 재생, 탄환 수와 같은 플레이어 값 변경, 심지어 네트워크 게임에서 루트 모션 리플리케이션(복제)도, 애니메이션에 루트 모션이 켜진 경우 가능하다. 몽타주 활용예시 로직 기반 애니메이션..

UE4 2022.10.19
[UE4] 디버깅 모드로 에디터 켜기

언리얼의 C++ 솔루션 파일에서 F5키를 눌러 디버그를 실행하면 에디터가 자동으로 켜진다. 이렇게 에디터를 디버그 모드로 키게 되면 디버깅에도 유리할 뿐 아니라, 핫 리로드 방식보다 빠르다. 수정한 코드를 반영하고 싶다면 큐브모양의 컴파일 버튼을 누르면 된다. 컴파일 옆에 작은 화살표를 누르면 아직 실험단계인 라이브 코딩 활성화가 있는데 이를 사용하면 컴파일없이 실시간으로 내 코드 변경사항이 플레이를 끄지 않아도 적용된다. 하지만 아직 실험단계인 만큼 오류가 많다고 하니 활용에 유의하자. 참고로 라이브 코딩 후 ctrl+alt+f11을 누르면 적용된다.

UE4 2022.10.05
[UE4] GTA 방식의 카메라 구현

Character 클래스에 함수를 작성하고, 스프링암을 활용해서 GTA 방식의 삼인칭 조작에 관련된 기능을 설정해보자. ControlRotation(컨트롤 회전) PlayerController는 플레이어의 의지를 나타내는 ControlRotation이라는 속성을 제공한다. 플레이어의 입력값을 컨트롤 회전에 연동하는 방법을 알아보자. 일단 프로젝트 세팅의 입력설정에서 원하는 키를 설정한 후 AddControllerInputYaw, Roll, Pitch라는 세가지 명령을 사용하면 PlayerController의 ControlRotation값이 입력에 따라 변한다. 이러한 컨트롤 회전 값은 캐릭터의 카메라 설정에서 다양하게 사용된다. 플레이어 컨트롤러에서는 마우스 입력 값에 따라 변화하는 컨트롤 회전 값의 스..

UE4 2022.10.05
[UE4] Pawn & Character

폰(Pawn)이란? 폰은 움직이는 액터에 조종당하는 기능이 추가된 액터다. 자동차가 될 수도 비행기가 될 수도 인간이 될 수도 있다. 내가 설정한 입력 세팅을 폰의 함수와 Binding 했다면, 이를 폰의 움직임으로 활용해야 한다. 폰의 움직임 PawnMovementComponent의 AddMovementInput()를 사용하면 -1부터 1사이의 입력 값을 PawnMovementComponent에 전달해서 폰을 움직이게 만든다. 자동차에 비유하자면 PawnMovementComponent는 엔진이고 AddMovementInput()명령은 운전석의 인터페이스라 할 수 있다. 이 명령에 들어가는 Scale값은 액셀을 밟는 세기를 의미한다. AddMovementInput()에는 추가로 이동할 방향을 WorldD..

UE4 2022.09.30
[UE4] 코드로 에셋 적용시키기

에셋 지정 게임이 시작하기 전 생성자함수에서 에셋을 지정하려면 ConstructorHelpers::FObjectFinder를 사용하면 된다. 이때 에셋 경로는 변하지 않을 고유값이므로 static을 붙여주고 if + Succeeded()로 에셋이 불러와졌을때만 메쉬에 적용해주는 부분이 중요하다. static ConstructorHelpers::FObjectFinderSM_KWANG(TEXT("SkeletalMesh'/Game/Assets/ParagonKwang/Characters/Heroes/Kwang/Meshes/KwangRosewood.KwangRosewood'")); if (SM_KWANG.Succeeded()) { Mesh->SetSkeletalMesh(SM_KWANG.Object); } 이번에는..

UE4 2022.09.30