본문 바로가기

전체 글

(847)
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-9 폰 게임 플레이 중 F8을 누르면 몸에서 빠져나온 다음과 같은 구체를 확인이 가능하다. 해당 오브젝트는 폰이며 월드에서 플레이어의 물리적 묘사를 나타낸다. 폰은 게임 플레이 중에만 확인이 가능하고 게임 플레이를 중지하면 다시 사라진다. 언리얼은 기본적으로 씬 안에 폰을 스폰하고 Player Start라는 씬 안의 액터가 주어진 위치에 배치된다. 해당 액터가 폰을 스폰하며 폰이 스폰되는 위치이다. 스폰 위치에서 발사체를 발사하는 것을 목표로 하므로 이제 플레이어 폰의 위치를 노드를 통해 얻어야한다. Get Player Pawn을 통해 플레이어 폰의 획득이 가능하다. 해당 노드를 불러오면 왼쪽에 타입이 Integers인 Player Index를 볼 수 있다. 자세히 설명을 보면 "플레이어 컨트롤 목록의 인덱..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-8 데이터 유형 데이터 유형란 컴퓨터 메모리의 특정한 이진법 데이터를 나타내는 한 방법이자 이데이터로 무엇을 할 수 있는지 제한하는 방법이다. 대표적 종류로 다음과 같은 것들이 있다. Integers - 정수 Floats - 부동 소수점 Strings - 텍스트 Bools - 참거짓 이러한 데이터들을 오브젝트로 그룹화하여 사용하게 된다. (ex : 나이 = Integers, 경험치 = Floats) 블루프린트에는 오브젝트와 유사한 것으로 구조체가 존재한다. 구조체는 오브젝트와 유사하지만 보통 상당히 작고 레퍼런스를 사용하지 않는다. 크기가 작기 때문에 바로 메모리로 전달하고 복사하는 것이 가능하다. 크기를 제외하면 구조체와 오브젝트는 다소 상호 교환이 가능하다. 우리가 앞서 접한 구조체의 종류로는 Vecto..
[백준 22857번] 가장 긴 짝수 연속한 부분 수열 (small) (C++) 문제링크 : https://www.acmicpc.net/problem/22857 22857번: 가장 긴 짝수 연속한 부분 수열 (small) 수열 $S$에서 최대 $K$번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 출력한다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, K, arr[50001]; int dp[50001][101]; int func(int cur, int cnt) { if(cur > N-1 || cnt > K) return 0; //범위 및 삭제 횟수 체크 int result = 0;..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-7 액터 스폰하기 직전에 만들었던 발사체는 기본적으로 처음부터 씬에 있는 것이 아니라 플레이하는 동안 스폰되는 것이 이상적이다. 이를 위해 레벨 블루 프린트에서 우클릭을 하고 Spawn을 검색해보면 위와 같이 Spawn Actor From Class를 찾을 수 있다. 가장 먼저 Class가 보이는데 발사체는 BP_Projectile의 이름을 가진 블루프린트 클래스이므로 해당 클래스를 선택해준다. 이러면 노드의 이름도 같이 클래스명을 따라 SpawnActor BP Projectie로 바뀐 것을 볼 수 있다. 그다음 Spawn Transform의 경우 스폰되는 위치를 의미하는 것이다. 위 이미지와 같이 기존 발사체의 트랜스폼을 보면 x=60, y=0, z=120의 위치를 가지는 것을 알 수 있다. 이와 같게 하..
[백준 17216번] 가장 큰 감소 부분 수열 (C++) 문제링크 : https://www.acmicpc.net/problem/17216 17216번: 가장 큰 감소 부분 수열 수열 A가 주어졌을 때, 그 수열의 감소 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 8, 7, 3, 6, 5} 인 경우에 합이 가장 큰 감소 부분 수열 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, arr[1001], dp[1001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ci..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-6 블루프린트 클래스와 인스턴스 오브젝트 프로그래밍은 클래스와 인스턴스를 사용할 떄 진정한 활용도를 가진다. 따라서 이번 강의에서 블루프린트 클래스와 인스턴스에 대한 내용을 다룬다. 먼저 예시를 들면 다음과 같다. 모험가 데이터 : 경험치 500, 레벨 1 기능 : 점프, 화살비 스킬 -> 오브젝트를 만드는 원본 클래스 모험가 1 데이터 : 경험치 500, 레벨 1 -> 실제 오브젝트이자 인스턴스 모험가 2 데이터 : 경험치 200, 레벨 1 -> 마찬가지로 인스턴스 모험가 1과 2의 데이터가 다르지만 기능은 같음 -> 서로 다른 오브젝트 간의 기능 공유 해당 강의에서는 앞으로 강의에 이어서 필요한 발사체 생성하고 이를 토대로 클래스를 생성하였다. 씬에 있는 스피어는 단일 오브젝트에서만 활용된다. 이를 여러..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-5 임펄스 이번 강의에서는 큐브에 임펄스(충격)를 가해 움직이는 것을 목표로 한다. 우선 임펄스를 적용시킬 방법으로 Space Bar를 사용하였다. 해당 노드는 이벤트 노드로 실제 키보드의 Space Bar를 누를때 실행된다. 테스트로 Print String을 연결하여 기존의 질량 출력을 Space Bar를 눌렀을 때 계속하여 출력되는 것을 확인했다. 간단히 테스트를 맞췄으니 이제 임펄스 노드를 추가할 차례이다. Get Mass와 변환 노드를 지우고 Static Mesh Component에서 새롭게 끌어서 노드를 찾아준다. 이때 우측에 컨텍스트에 따라 라는 문구를 볼 수 있는데 이를 활성화하면 Static Mesh Component를 사용할 수 있는 노드만 필터링이 가능하다. Add Impulse를 통해 임..
[백준 25214번] 크림 파스타 (C++) 문제링크 : https://www.acmicpc.net/problem/25214 25214번: 크림 파스타 각 \(A_i\)가 추가된 직후의 문제의 답 \(N\)개를 공백으로 구분하여 출력한다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, num, minV; int arr[200001], dp[200001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=0; i> arr[i]; minV = arr[0]; //초기값 for(int i=1; i