본문 바로가기

전체 글

(847)
[백준 1072번] 게임 (C++) 문제링크 : https://www.acmicpc.net/problem/1072 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int X, Z; ll Y; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> X >> Y; Z = Y*100/X; if(Z>=99) //승률 1..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-14 지오메트리 브러시 기존에 있는 레벨을 수정하며 만드는 것보단 처음부터 직접 만들어 보고자 우선 새 레벨을 만들어준다. 새 레벨을 만들고 레벨 블루 프린트를 생성했던 버튼 바로 좌측에 있는 버튼을 누르면 액터 배치 패널을 가져올 수 있다. 그러면 위와 같은 이미지가 뷰보트 좌측에 생기고 여기서 지오메트리를 선택한다. 바로 아래로 보면 다양한 블록들을 불러올 수 있는데, 해당 기능은 언리얼에 내장된 기능이며 지오메트리 브러시 (BSP) 라 부른다. 브러시는 만들어내면서 구성하거나 뺴면서 조각이 가능하다. 이번에는 큰 박스 브러시 내부에 기존 박스 브러시 보다 작은 박스 브러시를 이용해 내부를 빼서 공간을 만들 예정이다. 먼저 박스를 뷰포트에 생성하는데 우리는 이를 벽으로 사용할 것이므로 우측 아웃라이너 창에..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-13 에셋 가져오기 이번에는 현재 에셋만으로는 월드가 다소 심심하므로 나무 상자와 배럴같은 외부 에셋을 가져와 월드에 추가해준다. 이는 에픽 게임즈 런처의 마켓플레이스에서 다운이 가능하다. 마켓 플레이스에는 다양한 유료/무료 에셋들이 존재한다. 이번 강의에서는 Industry Props Pack 6라는 무료 에셋을 다운받아 사용하였다. 해당 에셋을 다운받고 사진과 같이 라이브러리를 보면 다운받은 에셋이 존재한다. 아래 프로젝트에 추가 버튼을 눌러 원하는 프로젝트에 바로 추가가 가능하다. 추가를 해주고 다시 언리얼로 돌아오면 콘텐츠 브라우저에 에셋팩이 존재하는걸 바로 확인할 수 있다. 해당 에셋팩의 Maps에 있는 showcase를 통해 해당 에셋팩이 어떤 에셋들을 가지고 있는지 확인이 가능하다. 해당 show..
[백준 17485번] 진우의 달 여행 (Large) (C++) 문제링크 : https://www.acmicpc.net/problem/17485 17485번: 진우의 달 여행 (Large) 첫줄에 지구와 달 사이 공간을 나타내는 행렬의 크기를 나타내는 N, M (2 ≤ N, M ≤ 1000)이 주어진다. 다음 N줄 동안 각 행렬의 원소 값이 주어진다. 각 행렬의 원소값은 100 이하의 자연수이다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; int N, M, arr[1001][1001], dp[1001][1001][3]; //직전 방향 체크 int func(int y, int x, int dir) { if(y >..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-12 전방 벡터본질적으로 전방 벡터는 회전한 x 방향을 가진다.이는 회전한 다음에 전방을 가리키는 벡터라는 뜻이다. 전방 벡터는 항상 길이가 1이다.이러한 특징을 이용하여 어떠한 방향으로 어떤 크기의 충격을 적용하고 싶을 때 전방벡터를 원하는 값으로 곱하기면 하면 얻을 수 있다. 전방 벡터는 Actor에있는 기능인 Get Actor Forward Vector를 통해 얻을 수 있다.지금은 발사체에 대해 다루고 있으므로 발사체에서 연결해주면 된다.하지만 이를 단순히 바로 임펄스에 연결하면 아주 미약한 힘이 전달되는 것을 확인이 가능하다.이는 전방 벡터의 길이가 1인데, 언리얼의 기본 단위는 cm여서 초속 1cm가 적용된 것이기 때문이다.이를 위해 Mulitply를 이용하여 곱해줄 수 있다.처음 Multiply이를..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-11 벡터의 덧셈과 곱셈 벡터는 본질적이로 수학의 개념이며 3D 공간에서 방향과 크기를 뜻한다. 프로그램으로는 지난 강의들의 노드를 봤듯이 float 타입의 x, y, z이다. 현재 위치를 기준으로 새로운 위치의 벡터를 얻고 싶을 떄는 간단하게 현재 위치 벡터 + 무브 벡터를 해주면 된다. 뺄셈또한 단순하다. 덧셈과 방향만 반대인 것을 볼 수 있다. 추가적으로 곱셈도 간단히 다뤘는데 현재 방향을 유지하며 크기를 반복해주면 된다. 좀 더 익숙해지기 위해 강의에서는 다음과 같은 간단한 벡터 덧셈, 뺄쎔, 곱셈 문제를 제시하였다. 시작점 (-5, -2) A = (7, -1) B = (0, 2) C = (-3, 2) 시작점에 A + 3*B - C만큼 이동한 값을 구하기 먼저 무브 벡터를 구해보면 (7+3*0-(-3)..
[백준 16974번] 레벨 햄버거 (C++) 문제링크 : https://www.acmicpc.net/problem/16974 16974번: 레벨 햄버거 상근날드에서 오랜만에 새로운 햄버거를 출시했다. 바로 레벨-L 버거이다. 레벨-L 버거는 다음과 같이 만든다. 레벨-0 버거는 패티만으로 이루어져 있다. 레벨-L 버거는 햄버거번, 레벨-(L-1) 버거, www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = 987654321; ll N, X; ll burger[51], patty[51]; //버거 길이, 패티 숫자 ll func(int n, ll x) //레벨, 먹을 횟수 { if(n==0) return x; //패티 하나..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 2-10 회전 다루기 현재 발사체는 회전이 적용되지 않고 무조건 일자로만 발사되는 것을 확인할 수 있다. 이번에는 이 회전을 적용시키는 것을 목표로 하며 회전의 확인을 용이하게 하기 위해서 발사체를 타원으로 만들어주었다. 이제 위와 같이 Get Actor Location을 통해 위치를 얻었듯이 Get Actor Rotation을 통해 회전을 얻어 연결해준다. 하지만 연결하고 실행해보면 회전이 적용되지 않은 것을 볼 수 있다. 플레이 화면에서 다시 F8을 누르고 폰을 보면 디테일 패널에서 회전 값 확인이 가능하다. 현재 위치에서 180도 회전하고 다시 회전값을 보면 회전이 전혀 반영되지 않은 것을 볼 수 있다. 이는 언리얼의 폰은 카메라 회전과 함께 회전하도록 적용이 되지 않았기 때문이다. 이 회전이 반영되는 것을..