본문 바로가기

블루프린팅

(91)          글쓰기    
Disipatch Deligation Design Pattern Oberver 총을 쏘면 적이 맞고 전 에너미의 개수가 Widget UI에서 줄어들고 1이되면 즉 자기만 남으면 문이 열리게 해보겠다. 일단 BP_ThirdPersonCharacter에 AddCustomerEvent를 한후 앞쪽 노드들은 Die의 입력은 위젯을 하나만들고 text_enemy라는 UI를 만들자. 이전에 만든거에 추가했는데 Enemy만 있으면됨 변수로 체크해주고 UI가 만들어질때 BP_ThirdPerson의 갯수를 세서 text_Enemy에 업데이트하고 모든 ThirdPersonCharacter의 OnDeath Dispatcher(Deligation)을 등록해준다 Call이 생기면 DecreaseEnemyCnt 이벤트가 실행된다. 이제 문을 하나 만들자. Frame과Door는 StaticMesh이고 기본 ..
[19.절차적생성] 블루프린트 스플라인 생성 스플라인은 곡선을 정의하는 특수 수학함수이다. 블루프린트 스플라인 컴포넌트는 레벨에서 액터가 이동하는 경로를 정의하는 데 사용할 수 있다. 또한 인스턴스를 배치하기 위한 경로를 따라 위치를 얻을 수 있다. 스플라인 포인트를 추가, 변화및 회전해서 레벨 에디터에서 스플라인을 편집할 수 있다. 스플라인 컴포넌트는 일반적으로 세가지 기능이 있다. Get Spline Length : Get Location at Distance Along Spline : Get Rotation at Distance Along Spline : 예제를 한번 만들어 보겠다. 1. 콘텐츠브라우저에서 블루프린트를 만들자 부모는 액터이고 이름은 BP_SplinePlacement로 저장하고 에디터를 연다. 2. StaticMeshVar변수를..
[19.절차적생성] 컨스트럭션 스크립트를 사용한 절차적 생성 1. 기본으로 새로운 프로젝트를 생성한다. 2. 콘텐츠브루아저에서 Add+ 블루프린트클래스 생성하는데 액터를 부모클래스로 선택하고 이름을 BP_ProcedualMeshes로 지정한다. 3. 내 블루프린트 변수+를 클릭 StaticMeshVar로 이름을 바꾸고 타입을 스태틱메시로 한고 오브텍트 레퍼런스를 선택한다. 인스턴스편집가능을 체크해준다. 4. 컴파일후 디폴트값을 SM_Chair를 선택한다. 5.다음 변수들을 추가해준다. 모두 인스턴스에디터블이다. 이름 타입 디폴트 InstacesForRow Integer 10 NumberOfRows Integer 10 SpaceBetweenInstaces Float 100 SpaceBetweenRows Float 150 6. 컴포넌트에 인스턴스스태틱메시를 추가한다...
[17.애니메이션블루스크린] 애니메이션 스테이트 추가 업드리기 애니메니메이션을 추가해 보겠다. 1. 키 앱력을 만들어야 햔다. ProjectSetting>Engine>Input>Bindings>Action Mappins에 Crouch-C Prone-X를 매핑한다. 2. BP_ThirdPersonCharacter를 Ctrl-D로 복제해 이름을 BP_AnimTestCharacter로 변경한다. 3. 변수+를 눌러 Proning/Blooean으로 바꿔준다. 4. 이벤트그래프에 우클릭후 Prone을 검색해 추가해주고 다음과 같이 노드를 연결해준다. Prone입력이 발생할때 마다 Proning 변수의 부울값을 토글할 것이다. 5. 이벤트 그래프에서 Corl-F를 누르고 Move를 검색하면 이동 부분 노드들이 있다. 6. 앞부분을 끊고 Branch를 넣어 Pronin..
[17.애니메이션블루스크린] 스테이트머신 AnimGraph의 스테이트 머신을 이용하면 애니메이션을 일련의 스테이트로 구성할수 있다. 1. 다른 애니메이션 노드를 제거하고 최종 애니메이션 포즈노드만 AminGraph에 남겨둔다. 2. AnimGraph를 우클릭하고 state machine을 검색한 다음 새 스테이트 머신 추가를 선택한다. 3. 이름을 Char States로 변경한다. 최종 애니메이션 포즈 노드와 연결한다. 4. Char State를 더블클릭해 에디터 모드로 들어간후 State를 2개 추가한다. 이름을 Idel, Moving으로 변경한다. 노드의 테두리를 끌어 다음과 같이 만들어 준다. 5.Idel 노드를 더블클릭후 다음과 같이 노드를 만들어준다. Asset 브라우저에서 Idel애니메이션을 끌어다 놓고 연결해준다. 6. Moving..
5부 추가도구 [17장 애니메이션 블루프린트] 애니메이션 개요 1. 시작 컨텐츠가 있는 삼인칭 템플릿을 사용해서 프로젝트를 만든다. 2. 플레이 버튼을 눌러 삼인칭 템플릿에 내장된 기본 게임플레이를 시도한다 .WASD키를 사용하여 플레이어를 이동하고 마우스를 움직여 주변을 둘러불 수 있다. 스페이스바를 눌러 캐릭터가 점프한다. 스켈레톤및 스켈레탈메시 언리얼에서 스켈레톤은 스켈레탈메시와는 별개의 에셋이다. 애니메이션이 스켈레톤에서 수행되기 때문에 애니메이션은 동일한 스켈레톤을 사용하는 다른 여러 스켈레탈 메시에서 공유할 수 있다. 삼인칭 템플릿에서 사용하는 스켈레톤을 시각화해본다. 다음과 같은 폴더로 접근해 SK_Mannequin_Skeleton을 선택한다.(V5.2라서 그런가 교재와 폴더및 파일명이 달라 가장 비슷한 걸 골랐다) 왼쪽 패널에는 이 스켈리톤의 일부인 ..
[15.블루프린트팁] 블루프린트 단축키 단축키 네블루프린트패널에서 변수를 끌어 이벤트그래프에 놓으면 GET/SET을 질문하는데 Ctrl+드래그 : GET노드생성 ALT+드래그 : SET노드생성 변수로 승격 입출력핀 위를 우클릭하면 변수로 승격할수 있다. 승격된 변수는 마이블루프린트>변수에 추가되면 알맞은 타입이 자동으로 설정된다. ALT+클릭 : 모든 연결 제거 Ctrl+클릭+드래그 : 모든 연결 이동 정렬 : 여러 노드를 선택해 우클릭하면 원하는 정렬 모드를 선택하면 된다. 코멘트상자 : 그룹으로 묶을 노드를 선택해 우클릭후 코멘트추가를 선택하면 된다. 코멘트상자 목록은 창>북마크로 이동해 접근할 수 있다. 접힌노드 복잡한 노드들을 정리하기 위해 우클릭후 노드접기를 사용할 수있다. 다른 블루프린트에서 사용해야 한다면 매크로접기를 사용해야한다..
[14.수학및 트레이스노드] 트레이스및 트레이스 기능 소개 트레이스는 정의된 선분을 따라 충돌이 있는지 여부를 테스트하는 데 사용된다. 트레이스는 채널 또는 오브젝트 타입별로 수행할 수 있으며 적중된 단일 또는 여러개체를 반환할 수 있다. 반응하는 방식은 무시, 오버랩, 블록이 될수 있다 교재설명이 복잡해 그냥 예제부터 설명드리겠습니다. 1. BP_FirstPersonCharacter 블루프린트를 열어 에디터를 열겠습니다. 2. 매크로+를 클릭해 TraceLocations로 이름을 바꿉니다. 3. 디테일패널에서 벡터타입의 출력파리미터를 2개 추가합니다. 이름은 StartLocation, EndLocation으로 지정합니다. 4. 다음과 같이 노드들을 추가합니다. 현재 카메라 위치를 StartLocation 앞쪽으로 300만큼 떨어져 있는 EndLocation을 ..
[14.수학및 트레이스노드] 월드변환과 상대변환 액터 클래스는 트랜스폼 구조체가 있다. 이 구조체는 위치, 회전, 스케일의 3개의 변수가 있다. 레벨에 있는 액터의 트랜스폼구조체는 디테일 패널을 사용해 수정할 수 있다. 블루프린트에서는 다음같은 노드를 사용해 위치를 바꿀 수 있다. Get Actor Location : 액터의 현재위치를 반환 Set Actor Location : 새위치를 설정 Add Actor World Offset : Delta Location 입력 파라미터 만큼 현재 위치를 수정한다. 회전도 비슷하다. Get Actor Rotation: 액터의 현재 회전을 반환 Set Actor Rotation : 새회전값을 설정 Add Actor World Rotation : Delta Rotation 입력 파라미터 만큼 수정한다. GetActo..
[13장 데이터 구조및 흐름제어] 흐름제어 흐름을 제어하는 조건문은 이전에 Branch를 많이 사용했다. 이건 if문과 비슷하다. Switch와 비슷한 Switch on int, Switch on String, Switch on Enum등도 있다. 복수의 조건문의 오른쪽아래 핀추가+를 눌러 추가하면 된다 Flip Flop A와 B의 True/False 상태를 매번 바꾸어 A,B중 하나만 번갈아가며 실행되게 해준다. 총알발사 마지막 로직에 추가하면 총알을 발사할때 마다 .A/B가 번갈아 가며 출력된다. For Each Loop For Loop는 지정된 인덱스를 차례대로 발생하지만 For Each Loop는입력된 배열엘리먼트및 배열 인덱스를 출력핀에서 사용할 수 있다. DO Once 한번만 실행되는 노드이다 Reset후 다시 실행시킬수 있다. DO ..
[13장 데이터 구조및 흐름제어] 세트와 맵 세트 세트는 또 다른 타입의 컨테이너이다. 세트는 우리나라 말로 집합이다. 보통 엘리먼트의 값은 중복값이 없으며 인덱스가 없다. 집합에 관련된 연산자가 마련되어 있다. SET는 다음과 같은 노드들을 갖고 있다. ADD : 세트에 요소를 추가 ADD ITEMS: 세트에 배열의 요소를 세트에 추가 CONTAINS: 세트에 엘리먼트가 있다면 True를 반환 LENGTH: 세트의 요소수를 반환 TO ARRAY: 세트를 배열에 복사한다. 비용이 많이 든다 CLEAR: 모든 요소를 제거한다 REMOVE: 세트의 엘리먼트를 제거한경우 True 반대의 경우 False를 리턴한다. REMOVE ITEMS: 세트에서 배열에 있는 지정된 요소들을 제거한다. UNION: 두개의 세트를 합쳐친 새로운 세트를 만든다 DIFFER..
[13장 데이터 구조및 흐름제어] 오브젝트레퍼런스 배열예제 이번에는 게임중 적을 스폰시 임의의 위치를 랜덤으로 발생시킬수도 있지만, 보통 여러 후보지를 미리 설정해 놓고 그중 하나를 랜덤으로 선택해서 사용하는 것이 더 편할 수 있다. 무작위 발생시 다른 오브젝트와의 충돌까지 계산해야 하므로. 후보지의 위치를 Vector로 저장할 수도 있지만 여기서는 오브젝트레퍼런스를 사용해 후보지위치에 접근할 것 같다. 1. 시간 콘텐츠가 포함된 삼인칭 템플릿을 기반으로 프로젝트를 생성한다. 블로거는 기존의 프로젝트를 그대로 사용하였다. 2. Content폴더에 BookUE5폴더를 만든다. 3. BookUE5폴더로 들어가 추가버튼을 클릭하고 블루프린트 클래스를 만든다. 부모는 액터로 하고 이름은 BP_RandomSpawner로 지정하고 에디터를 연다. 4. 마이블루프린트 변수+..