플레이어 파쿠르 예제
- Fall 최소 거리가 700인 이유 : 700 거리 이상부터 뛰어내릴때 구를것이기 때문이다.
모서리 파쿠르 막는법
- 좌 우 센터의 노멀이 다르게 나오니 그걸로 파악한다.
- cpp 파일 - ‘장애물 체크’ 함수 확인 - ‘충돌 결과’의 ‘파쿠르 화살표 타입 : 중앙’의 ‘수직 충돌’ 값을 ‘중앙’ 변수를 선언하고 저장한다. - ‘충돌 결과’의 ‘파쿠르 화살표 타입 : 좌’의 ‘수직 충돌’ 값을 ‘좌’ 변수를 선언하고 저장한다. - ‘충돌 결과’의 ‘파쿠르 화살표 타입 : 우’의 ‘수직 충돌’ 값을 ‘우’ 변수를 선언하고 저장한다. - ‘중앙’의 값이 ‘좌’의 값과 같지 않다면 : 실행하지 않는다. - ‘중앙’의 값이 ‘우’의 값과 같지 않다면 : 실행하지 않는다.
//cpp
//대각선인지 확인 => 좌 우 센터의 노멀이 다르게 나오니 그걸로 파악한다.
FVector center = HitResults[(int32)EParkourArrowType::Center].ImpactNormal;
FVector left = HitResults[(int32)EParkourArrowType::Left].ImpactNormal;
FVector right = HitResults[(int32)EParkourArrowType::Right].ImpactNormal;
//센터 충돌과 좌 우 충돌이 같지 않은지 확인한다.
CheckFalseResult(center.Equals(left), false);
CheckFalseResult(center.Equals(right), false);
데이터 테이블 - 파일 생성 및 준비
- 어떤 몽타주, 최소 거리, 최대 거리, 부피, 카메라 고정 등 여러 에셋이 사용되지 않은 간단한 값들만 사용한다면 ‘데이터 테이블’을 사용한다.
- 무기는 여러 에셋들을 사용하기 때문에 ‘데이터 에셋’을 사용한다.
- 데이터 테이블을 사용하기 전 ‘헤더 파일’을 include 해야한다.
- #include “Engine/DataTable.h”
- USTRUCT 메크로에 지정해야만 데이터 테이블 생성시 목록에 나타나게된다.
- cpp 파일 - 에디터 상에서 사용할 구조체에 ‘FTableRowBase’를 상속시킨다. - 콘텐츠 폴더 - 우클릭 - 기타 - 데이터 테이블 클릭 - 행 구조 선택에 FTableRowBase를 상속받은 그룹의 이름이 나온다.
데이터 테이블 - csv로 데이터 테이블 생성
- 데이터 테이블을 사용할떄는 ‘csv’ 액셀 파일에 필요한 항목에 미리 데이터를 입력시키고 임포트 시킨다.
- csv는 항목들이 ‘,’콤마로 구분이 되어있어서 입력이 편하다.
- 항목 작성 전 ‘A-1’은 비우고 B부터 시작한다.
- A 열은 ‘행 구분 문자’가 들어가야한다. ⇒ 기본적으로 1 2 3 4 등으로 작성한다.
- csv 파일로 생성시 가장 편한 점은 수정이 편하고 임포트가 빠르다.
- 사용할 구조체의 항목으로 csv 작성 - 콘텐츠 폴더 - 좌측 상단 ‘임포트’ 버튼 클릭 - csv 파일 클릭 - 파일 형식 : DataTable - 행 타입 : 사용할 구조체 그룹이름(ParkourData) - 생성
데이터 테이블 - 파일 생성 끝났으면 코드로 사용 / Map 사용
- Short, Normal, Wall 등 하나의 타입이 여러 동작을 가질 수 있다.
- Map : 키 값 쌍 ⇒ KeyValuePair를 생각하면 편하다.
- 헤더 파일 - 데이터 테이블 클래스의 ‘데이터 테이블’ 변수 선언 - cpp 파일 - 생성자 확인 - 데이터 테이블 에셋 가져오기 작성 - BeginPlay 함수 확인 - ‘데이터 테이블’의 행들을 저장할 ‘행’ 배열 변수 선언 - ‘데이터 테이블’의 ‘전체 행 가져오기’ 함수에 ‘파쿠르 데이터’ 구조체를 행타입으로 넣어 ‘행’ 배열에 저장한다. - 파쿠르 타입 갯수만큼 반복한다. - ‘파쿠르 데이터’ 자료형의 ‘임시’ 배열 변수 선언 - ‘행’ 배열의 갯수만큼 반복한다. : ‘데이터’ 포인터 변수를 임시로 만들어 하나씩 저장한다. - ‘데이터’의 ‘파쿠르 타입’이 1번 반복 순서의 ‘파쿠르 타입’과 같다면? : ‘임시’ 배열에 ‘데이터’의 포인터를 저장한다.