본문 바로가기

블루프린팅

(91)          글쓰기    
[2.블루프린트연습] Print "Hello" 레벨에디터의 오른쪽 Outliner에서 BP_Cube를 선택하고 오른쪽 Edit BP_Cube를 클릭해 블루프린트 에디터를 연다 블루프린트 에디터의 이벤트그래프창에 3개의 이벤트가 비활성화 되어 있다. BeginPlay : 플레이버튼을 클릭하면 발생하는 이벤트 ActorBeginOverlap : 다른 Actor와 겹치면 발생하는 이벤트 EventTick : 시계 이벤트(일정시간마다 반복적으로 발생함) 이벤트그래프 빈곳에 우클릭하면 컨텍스트메뉴창이 뜬다. 여러가지 기능을 담당하는 노드를 찾아서 추가할 수 있다. print를 입력하고 Print String를 선택한다. 그럼 Print Text노드가 삽입되고 확장화살표를 눌러 펼치후 Duration을 10초 변경후 BeginPlay의 출력핀과 연결한다. 연결..
[2.블루프린트연습] 액터 만들기, 배치 연습을 위해 기존 프로젝트에 새로운 레벨을 만들겠습니다. New Level은 Basic으로 하겠습니다. (기존 프로젝트는 삼인칭입니다.) 플레이해보면 Floor위에 아무것도 없는데 캐릭터가 나타납니다. 그냥 이대로 작업하셔도 되지만 플레이어 캐릭터를 표시해 보겠습니다. 좌측아래 ContentDrawer를 열어 ThirPerson>Blueprints폴더에서 BP_ThirdPersonCharacter를 끌어다 뷰포트에 배치합니다. 위치를 리셋하고 X위치를 -500으로 설정합니다. Detail Panel에서 Pawn 을 찾아 Auto Possess Player를 Player 0로 설정하면 앞으로 플레이시 지금의 액터가 플레이어로 시작됩니다. 좌측하단 컨텐트드로워를 열어 블루프린트 폴더를 만들고 들어갑니다. 좌..
[2.블루프린트연습] ThirdPersonCharater로 시작하기 ThirdPersonCharater로 시작하기 플레이 해보면 캐릭터가 잘 보이지만 에디터 모드에서는 보이지 않는다. 따라서 이제부터 보이게 해보겠다. 1. 컨텐트드러워의 ThirdPerson>Blueprints폴더의 BP_ThirdPersonCharacter를 끌어다 놓는다. End키를 눌러 바닥에 배치시킨다. 2. 이대로 플레이하면 컨트롤이 안되는 인형이므로 이제부터 컨트롤이 되게 해보겠다 디테일에서 Auto로 검색해서 Pawn카테고리의 Auto Possess Player를 Disble에서 Player0로 변경한다. 이제 플레이 해보면 배치된 캐릭터로 부터 시작된다. 유령처럼 나타나던 플레이어도 사라진다. 3. ALT+좌클릭후 뷰포트를 아래와 같이 회전 시키고 캐릭터 x위치를 -500으로 뒤로 배치시킨..
[2.블루프린트연습] 1 CubeGrid 생성하기 블로그를 작성하다 너무 어려워서 블루프린트 기초를 한번 정리해보려고 한다. 문제는 기초 강좌가 잘 없다 ㅠㅠ. 1. 일단 블루프린트 연습용 프로젝트를 삼인칭 템플릿으로 적당히 만들자. 2. Play해보면 안보이는 캐릭터가 갑자기 나타난다 놀라지 말자. Outliner패널에 보면 BP_ThirdPersonCharacter 블루프린트에서 만들어진 인스턴스이다. 씬뷰에 마우스를 클릭하면 WASD키로 이동할수 있고 마우스로 방향을 돌릴수 있다. 3. Block폴더 안에 Actor들을 다 지운다. 레벨의 배경을 다 지우고, PlayerStart는 남겨둔다. 4. 다음 작업을 위해 SM_SkySphere를 눈을 클릭해 눈꺼플로 만들어준다. Outliner root(ThirdPersonMap)를 클릭해 아무것도 선택..
[언리얼매뉴얼] 비헤이비어 트리 퀵 스타트 가이드 https://docs.unrealengine.com/5.2/ko/behavior-tree-in-unreal-engine---quick-start-guide/ 이 예제는 언리얼 매뉴얼 입니다. 처음에 교재가 여려워 검색하다 비슷한 예제가 있어 캡쳐해 봤습니다. 따라 해봤는데 안움직이는데 아직 이유는 모르겠습니다. ㅠㅠ 이 가이드에서는 순찰하거나 플레이어를 추격하는 AI 캐릭터를 비헤이비어 트리로 구성하는 방법을 알아봅니다. 비헤이비어 트리 퀵 스타트 가이드 에서는 플레이어를 보고 반응하여 추격하는 적 AI를 구성하는 방법을 학습합니다. 아래 예시 영상에서 볼 수 있듯이, 플레이어가 시야에서 사라지면 AI는 몇 초 후(원하는 대로 조정 가능) 추격을 포기하고 플레이어를 다시 발견할 때까지 주변을 랜덤하게 ..
[09인공지능] 비헤이비어 트리에 조건추가 적에게 플레이어를 추적하게 하는 탯그크에 접속할 다른 시퀀스와 노드와 두개의 시퀀스노드중 하나를 실행하는 셀렉터 노드가 필요하다. 새로운 태스크는 적이 플레이어를 볼 때문 실행되도록 해야 한다. 이를 위해 데코레이터를 추가한다. 데코레이터는 노드 상단에 부탁돼 작업을 수행하기 전에 충족해야 하는 조건을 제공한다. 1. BT_EnemyBehavior에셋을 연다. 2. Root노드 중앙을 우클린 모든 핀 링크 끊기를 선택한다. ALT클릭으로 끊어도 된다. 3. Root에서 Selector노드를 만든다. 4. 셀렉터노드에서 기존의 MoveToPatrol노드를 연결한다. 5. 셀렉터 노드에서 왼쪽아래 시퀀스노드를 추가하고 AttackPlayer로 이름을 변경한다. 6. 이제 데코레이터를 사용 적이 플레이어를 볼..
[09인공지능] AI가 플레이어를 추적하게 하기 폰 감지라는 이름의 컴포넌트는 적에게 시각과 청각을 추가하는데 사용된다. 이 컴포넌트를 사용해 비헤이비어 트리를 확장해서 적이 플레이어에 위협을 가하도록 하겠다. 폰 감지로 적에게 시야를 주기 적에게 플레이어를 탐지할 수 있는 기능을 부여하려면, 폰감지 컴포넌트를 BP_EnemyController에 추가하고 적이 플레이어를 볼 때 플레이어캐릭터 참조를 BB_EnemyBlackboard에 저작해야 한다. 폰감지 컴포넌트를 사용하는 순서는 다음과 같다. 1. BP_EnemyController 블루프린트를 연다. 2. 내 블루프린트 패널에서 변수를 만든다. 이름을 PlayerKeyName으로 지정하고 변수 타입은 name으로 한다. 컴파일후 디폴트값을 Player character로 세팅한다. 3. 컴포넌트 ..
[09인공지능] AI 컨트롤러에서의 비헤이비어 트리 실행 AIController클래스에는 Run Behavior Tree라는 기능이 있다. 비헤이비어 트리 에셋을 파라미터로 받는다. BT_EnmeyBehavior Behavior Tree를 실행하기 위한 부모 클래스로 AIController를 사용하여 BP_EnemyController블루프린트를 만들었다. 비헤이비어 트리를 실행하는 절차는 다음과 같다. 1. BP_EnemyController 블루프린트를 연다. 2. 이벤트그래프에서 BeginPlay 이벤트의 흰색 실행핀에서와이어를 끌어 실행 Run Behavior Tree를 추가한다. 3. BTAsset의 입력 파라미터로 BT_EnemyBehavior를 세팅한다. 4. 블루프린트를 컴파일해서 저장한다. 비헤이비어 트리로 인공지능이 걷도록 가르치기 비헤이비어트리..
[09.인공지능] 내비게이션(탐색) 행동 만들기 적의 첫 번째 목표는 맵에 만든 지점 사이를 이동시키는 것이다. 이를 달성하기 위해, 적이 탐색할 지점을 맵에 만든 다음, 적이 순환적으로 각 지점으로 이동하도록 하는 행동을 세팅한다. 패트롤(순찰)지점 세팅 인공지능이 순찰할 경로를 만드는 것부터 시작한다. 트리거 스피어는 오버랩이벤트를 생성하고 게임에 숨겨지기 때문에 순찰 지점을 나타내기 위해 사용할 것이다. BP_EnemyCharacter의 각 인스턴스는 두 개의 순찰 지점 사이를 탐색할 수 있기 때문에 우리는 적어도 두 개의 순찰 지점이 필요하다. 다음 단계에 따라 순찰 지점을 작성한다. 1. 레벨 에디터에서 툴바에 있는 +만들기 버튼을 클릭후 Basic>트리거 스피어를 클릭한다. 바닥 아무곳에나 배치한다. 2. 디테일 패널에서 Sphere Tri..
[09인공지능] BP_EnemyChracter블루프린트 세팅 1. BP_EnemyCharacter 블루프린트를 연다 2. 툴바에서 클래스 디폴트 버튼을 클릭한다. 3. 디테일패널에서 pawn카테고리를 찾아 마지막 AI컨트롤러 클래스에 대한 드롭다운리스트에서 BP_EnemyController클래스로 변경한다. 4. 컴포넌트 패널에서 메시를 클릭한다. 그 다음 디테일 패널에서 머터리얼 카테고리를 찾고 머터리얼의 엘리먼트 0을 우리가 만든 M_TargetRed 머티리얼로 변경한다. 새로프로젝트를 만든분들은 M_TargetRed머티리얼을 새로 만들던지 적용하시던지. 전 컴포넌트 Mesh를 선택해 디테일패널 Mesh카테고리에서 SKM_Manny_Simple로 변경해서 모양을 바꾸어 주었다. 5. 컴포넌트 패널에서 Capsule Component(CollisionCylind..
[CH09.인공지능] NavMesh에셋, AI에셋 생성 NavMesh에셋으로 이동 가능한 레벨 만들기 적 인공지능을 만들기 위해 인공지능이 탐색에 사용할 네비게이션메시라는 맵을 NavMesh라는 에셋으로 만듭니다 1. 레벨에디터에서 툴바에 있는 만들기 버튼을 클릭합니다. NavMesh Bonus Volume을 클릭합니다. 2. NavMesh Bonus Volume을 이동가능한 수준의 걸어갈 수 있는 공간이 포함될때까지 이동및 크기 조정을 해야합니다. 디테일 패널에서 위치 X=-316, Y=2116, Z=460및 스케일 (20,44,7)로 설정 전 다음과 같이 설정했습니다. 레벨에디터에서 P를 누르면NavMesh가 올바르게 배치되었는지 확인할 수 있습니다. AI 에셋 생성 우리는 적의 행동을 관리하기 위해 함께 동작하는 네 가지 타입의 에셋을 만들어야 합니다...
[09인공지능] 플레이 영역 확장 플레이 영역 확장 1. 현재 플레이어 영역을 세로축으로 2배 늘려보겠습니다. 바닥 빈곳을 클릭하면 노란줄로 선택됩니다. outliner를 보면 이름이 SM_CUBE입니다. 2. ALT+ 좌표 Y축을 클릭 드래그 하면 복제가 됩니다. 좌표가 안나타나면 위쪽 툴바의 위치를 선택해줍니다. 3. 파일메뉴 밑 Perspective를 Back으로 바꿔 Y축을 잡고 딱 마쳐주고 다시 Perspective로 돌아 옵니다. 4. 복사한 바닥의 Y포지션이 약 3500정도입니다. 5. 교재에서는 Outliner의 Lightmass Importance Volume을 찾아 디테일 패널에서 스케일 속석이 Lock을 해제하고 스케일 Y를 2로 세팅후 플레이 영역이 될때까지 Y축으로 이동하라는데 여기는 없네요 확장한 부분의 조명이 ..