[UnrealEngine]FPS 게임 만들기(5)
·
기타/UnrealEngine
[UnrealEngine]FPS 게임 만들기(5)클릭으로 쏘고 맞출 수 있는 타겟을 만들었으니 이제 점수 시스템을 추가하려 한다. 1. 블루프린트생성 Blutprint의 UI 폴더에 위젯 블루프린트를 추가한다. 이름은 HUD로 지정한다. 블루프린트 편집을 열고 좌측의 팔레트에서 텍스트 블록을 선택해 추가한다. 앵커를 좌측 하단으로 옮긴다. 텍스트 블록을 선택하고 우측 디테일에서 X 위치와 Y 위치 오른쪽에 있는 노란색 화살표를 클릭하면 텍스트 블록이 앵커의 위치로 이동한다. 하지만 화면 밖에 배치된다. 텍스트 블록의 Alignment - Y 값을 1.0으로 설정하면 된다. 점수를 표시할 텍스트 블록을 추가한다. 추가한 텍스트 블록의 디테일에서 이름을 지정하고 변수인지를 체크한다. 이를 통해 추후 값을 변..
[UnrealEngine]FPS 게임 만들기(4)
·
기타/UnrealEngine
[UnrealEngine]FPS 게임 만들기(4)지난 시간에 라인 트레이스를 통한 이벤트 작성을 하였으니 이번엔 타겟을 만들어 적중시키는 것을 추가한다. 1. 타겟 생성Content 하위에 Target 폴더 생성 액터 클래스를 생성하여 Target-BP로 이름을 설정한다. Target 블루 프린트 편집에서 좌측의 컴포넌트 추가에 Scene을 추가한다. 그러면 DefaultSceneRoot 하위에 생성되는데 이것의 이름을 Root로 변경하고 위처럼 DefaultSceneRoot에 드래그 드랍하면 Root로 변경된다. 컴포넌트 추가를 클릭하여 큐브를 선택한다. 그러면 Target BP가 정육면체로 펴현된다. 이렇게 만든 Target-BP를 화면에 추가해준다. 2. 인터페이스 추가타겟이 총에 맞는 처리를 인터..
[UnrealEngine]FPS 게임 만들기(3)
·
기타/UnrealEngine
[UnrealEngine]FPS 게임 만들기(3) 1. 클릭 이벤트 추가프로젝트 세팅 - 입력에서 Action Mappings에 왼쪽 마우스 버튼 이벤트를 추가한다. 2. 블루프린트 인터페이스 추가 Character 폴더에 블루프린트 인터페이스를 추가한다. 이름은 FPS-Character-BPI로 지었다. 우측 함수 이름을 HandleActionButton1으로 바꿔준다.이렇게 만든 인터페이스의 함수를 캐릭터에서 사용할 것이다. FPS-Character에 만들었던 FPS-Characet_BPI 인터페이스를 추가한다. FPS-Controller에 다음과 같이 노드를 생성한다. FPS-Character에 다음과 같이 노드를 생성한다. Handle Action Button1을 처리하면 화면에 Hello를 출력..
[UnrealEngine]FPS 게임 만들기(2)
·
기타/UnrealEngine
[UnrealEngine]FPS 게임 만들기(2) 1. 크로스헤드 생성FPS 게임에서 조준점이 되는 크로스 헤드를 생성한다. Blueprint에 UI 폴더 생성 UI 폴더 내부에 위젯 블루프린트 생성한다. 이름은 HUD로 지었다. HUD를 더블클릭하여 열고 좌측 팔레트의 일반 - Image를 화면 중앙에 드래그 앤 드랍한다. 우측 패널 중 Appearance를 선택하여 적절한 이미지를 선택한다. 하지만 기본이미지 밖에 없기 때문에 엔진 콘텐츠로 제공하는 이미지를 추가하려 한다. 하단의 콘텐츠 브라우저에서 엔진 콘텐츠 클릭, 필터에서 텍스처만 볼 수 있게 한다. 적절한 이미지를 찾아 클릭하여 선택한다. 다시 블르푸른트로 이동해서 위에서 보이는 왼쪽 화살표 버튼을 누르면 선택한 이미지로 변경할 수 있다. 2..
[UnrealEngine]FPS 게임 만들기(1)
·
기타/UnrealEngine
[UnrealEngine]FPS 게임 만들기(1)언리얼 엔진을 통해 FPS 게임을 만드는 프로젝트를 진행하고자 한다. 해당 내용은 언리얼엔진 블로그에서 제공하는 MVP FPS의 유투브 영상을 참고하여 작성하였다. 1. 프로젝트 생성Blank 프로젝트, 최대퀄리티, 시작용 콘텐츠 없음, 프로젝트이름을 지정하고 우측 하단의 프로젝트 생성 클릭 2. 폴더 생성하단의 콘텐츠 브라우저에서 콘텐츠 폴더 하위에 Blueprint, Character, Maps 폴더 생성 3. 블루프린트 클래스 생성Blueprint 폴더 내에 게임모드를 위한 블루프린트를 생성한다. Game Mode Base를 클릭하면 생성 완료. 이름은 FPS-GameMode로 지어준다. 이와 같은 방법으로 Character 폴더 내부에 Charact..
[C++]optional
·
Language/C C++
[C++]optional [C++]optionalC++17의 표준으로 optional이 도입되었다. 이전에 자바 스프링 개발을 할 때도 본적이 있었는데 C++에서 보니 반갑다. 자바는 jdk1.8부터 optional 지원이 된것으로 알고있다. 그러면 이 optional은 무엇일까?함수를 작성하는 예시를 들어보자. 두 INT값을 나누어 결과를 반환하는 함수를 작성하려고 한다.double divide(int a, int b) { return (double)a / b;}만일 이 함수에 인자 b에 0이 주어진다면 exception이 발생할 것이다. 따라서 b == 0일 경우 실패했다는 결과값을 반환해야 한다. xxxxxxxxxxdouble divide(int a, int b) { if (b == 0) { //f..
아이템선택
·
Language/C C++
아이템 선택x#include#include#include#include#include​using namespace std;​struct Table{ struct Item { int id; int weight; };​ vector table;};​int select(const Table& table, int w) { int randomNum = rand() % (w + 1);​ int sum = 0; for (auto it : table.table) { sum += it.weight; if (randomNum
[알고리즘]배열의 부분 최대합
·
PS/기타
[알고리즘]배열의 부분 최대합주어진 배열에서 연속된 구간 중 합이 최대가 되는 곳을 찾는 문제이다. 다음과 같이 재열이 주어졌을 때, 2 ~ 4 구간의 합이 11로 최대값을 가진다. 이를 찾기 위한 첫 번째 방법은 배열을 순회하며 모든 구간의 합을 구하여 최대값을 찾는 것이다. 이를 코드로 표현하면 다음과 같다.xxxxxxxxxxint sol1(const vector& arr){ int max = INT_MIN; for (int i = 0; i = end) return arr[start];​ int mid = (start + end) / 2;​ //중앙에 걸친 부분합을 구한다. int sum = 0; int left = INT_MIN; for (int i = mid; i >= start; i--) { s..