블루프린팅 (91)     블로그 내 검색 검색     글쓰기     관리자 썸네일형 리스트형 [3부]게임의 향상 [09] 인공지능으로 똑똑한 적 만들기 9장에서는 적을 만들것이다. 이 과정에서 공부할 주제는 탐색할 적 액터 세팅 탐색 동작 만들기 인공지능이 플레이어를 추적하게 하는것 적의 탐색을 레벨에서 처리하는 비헤이비어 트리를 만들고 적들이 그들의 시야에 있을때 플레이어를 추적하게 할 수 있다. >> 적액터가 탐색하도록 세팅 현재 타깃은 움직이는 실린더뿐이다 에픽 마켓플레이스에서 에셋패키지를 가져와 플레이 영역을 확장하고 내비게이션 메시를 사용 적이 사용하는 AI에셋을 생성해보겠다. 마케플레이스에서 가져오기 먼저 언리얼 에디터에서 벗어나 Epic Games Laucher에 초점을 맞추겠다. 일단 프로젝트를 닫는다. 1. Epic Games Launcher를 열고 창 왼쪽 Unreal Engine메뉴를 선택 2. 맨 위 마켓플레이스 탭을 클릭후 Ani.. [08목표생성] 승리 트리거 목표 타깃을 달성하기 충분한 실린더 타깃을 파괴하면 게임 종료 이벤트를 발생 시킨다. BP_FirstPersonCharacter 블루프린트에 CheckGoal이라는 커스텀 이벤트를 생성할 것이다. 이 이벤트는 타깃이 파괴될때 마다 BP_CylinderTarget에 의해 호출된다. 1. BP_FirstPersonCharacter 블루프린터를 연다. 이벤트그래프 바닥에 커스텀이벤트를 추가하고 이름을 CheckGoal로 변경한다. 2. CheckGoal 노드의 흰색출력핀을 끌어 Bandch노드를 추가한다. 3. Branch노드의 Condition 입력핀에서 와이어를 빈그리드 공간으로 끌어 크거나 같음 노드를 추가한다. > 로 검색하면 쉽게 찾을수 있다 4. >= 상단입력핀을 끌어 GET Targets Goal.. [08.목표생성] WinMenu 표시 HUD위젯 블루프린트에서 했던 것처럼 BP_FirstPersonCharacter블루프린트에서 WinMenu를 표시한다. 게임이 종료될때 호출하는 EndGame이라는 커스텀 이벤트를 만든다. 1. FirstPerson>Blueprint>BP_FristPersonCharacter 블루프린트를 연다. 2. 이벤트그래프에서 우클릭 커스텀이벤트 노드를 추가한다. 이름을 EndGame으로 변경한다. 3. EndGame출력핀에서 SetGamePaused노드를 추가한다. Paused 체크박스를 선택한다. 이 노드는 플레이어가 WinMenu에서 옵션을 선택하는 동안 게임을 일시 중단해준다. 4. 바닥에 우클릭후 GetPlayerController노드를 추가한다. Return Value출력핀을 끌어 SET ShowMous.. [08.목표설정] 승리 메뉴 화면 만들기 게임에서 승리한 후 플레이어에게 피드백을 제공하기 위한 필요한 수의 타깃을 파괴할 때 표시되는 승리 메뉴 화면을 만들 것이다. 승리 메뉴를 만들려면 HUD용으로 만든 것과 비슷한 다른 위젯 블루프린트가 필요하다. 1. 콘텐츠 브라우저에서 콘텐츠>FirstPerson>UI폴더에 접근한 우클릭 컨텍스트메뉴에서 유저인터페이스>위젯블루프린트를 만들고 이름을 WinMenu로 한다. 2. 블루프린트를 열어 UMG에디터를 연다. 3.Palette>PANEL>Canvas Panel을 끌어 하이라키에 놓는다. 3.Palette>COMMON>Text 개체를 계층구조 패널의 캔버스 패널 개체로 드래그한다. 디테일 패널에서 이름을 WinMsg로 변경하고 앵커드롭다운을 클릭한 다음 화면 중앙에 앵커가 있는 옵션을 선택한다. 4.. [CH08목표생성] 게임플레이 승리 조건 세팅 HUD에 목표 타깃 표시하기 1. 컨텐트드로워>>블루프린트폴더>BP_FirstPersonCharacter블루프린트를 열어 내 2. 블루프린트 패널의 변수+를 누른다음 이름을 TargetGoal로 지정 변수 타입을 인티저로 한다 3. 컴파일후 디테일패널에서 디폴트값을 2로 세팅후 다시 컴파일, 저장후 에디터를 닫는다. 4. 컨텐트드로워>>UI>HUD블루프린트를 연다. 5. 팔레트>COMMON>Text를 끌어 하이라키의 [GoalTracker]위로 놓는다. 하나더 끌어다 놓는다 6. 첫번째 Text를 선택하고 디테일에서 다음과 같이 [Slash]"/" 폰트사이즈:32로 변경한다. 7. 두번째 Text를 선택하고 디테일에서 다음과 같이 [TargetGoal"0" 폰트사이즈:32로 변경한다. 8. 가운데 디자이.. [CH08.제약조건] 수집가능한 개체 만들기 걷는 속도와 달리는 속도 2가지가 있지만 만일 총알이 떨어지면 게임이 불가능하므로 과도한 제약이 된다. 따라서 플레이어가 레벨을 탐색해서 탄약을 다시 얻을수 있도록 수집가능한 탄약 픽업을 만들 것이다. BP_AmmoPickup 블루프린트 생성 1. Blueprint폴더에서 추가버튼을 클릭하고 블루프린트 클래스를 선택후 부모클래스를 Actor로 선택하고 이름을 BP_AmmoPickp으로 지정한다. 2. 컴포넌트패널에서 추가 버튼을 클릭하고 스태틱 메시 컴포넌트를 선택한다.이름을 SM_Pipe로 변경, 디테일 패널에서 Shape_Pipe 스태틱 메시를 선택하고 머터리얼에서 엘리먼트 0으로 이동해서 M_Door를 선택한다. 다음 스크린샷과 같이 스케일 속성의 X,Y,Z값을 0.5로 변경한다. 3. 스태틱메시의.. [CH08] 제약조건및 게임플레이 목표 생성 이장에서 다음의 처리를 공부한다. 플레이어가 질주 하는동안 스테미너를 감소시키고 플레이어가 질주하지 않을 때 스태미너를 재생 탄약이 떨어지면 플레이어의 총이 발사되는 것을 방지 플레이어가 탄약을 회복할 수 있도록 탄약 픽업 생성 타깃 제거 숫자를 기준으로 승리 조건을 정의 플레이어가 승리시 게임을 다시 하거나 종료할 수 있는 메뉴 생성 >>플레이어 액션 제한 SHIFT키를 누르면 플레이어의 이동 속도를 빠르게 했었는데 그러면 항상 그 기능을 사용하게 된다. 따라서 적당한 제한을 두어야 한다. 스태미너 소모및 재생 이동속도향상기능의 제한을 위해 몇가지 변수를 만들고 사용시 체력을 소모하고 사용하지 않을 경우 체력을 재충전하는 커스텀 이벤트를 만들 것이다. 또한 스크립트를 구성하기 위해 다른 변수와 매트로를.. [CH7 UI] 타깃제거 카운터 증가 이제 타깃 실런더가 파괴 될대 마다 카운터를 1씩 증가시켜 보겠습니다. 1. BP_CylinderTarget 블루프린트를 오픈합니다. 2. Destroy노드 이전에 새로운 노드를 추가할 것입니다. 현재 인스턴스가 제거되면 아무것도 못하기 때문이죠. 3. Spawn Emitter at Location과 DestroyActor 노드 사이의 링크를 끊은후 4. 빈 그래프 공간에 Get Player Character노드를 추가후 Return Value출력핀에서 와이어를 끓어 BP_FirstPersonCharacter에 형변환 노드를 추가한다. 5. As BP형변환 출력핀에서 Get TargetEliminated노드를 추가하고 출력핀에 Increment Int노드를 추가한다. 6. 형변환과 DestroyActor.. [CH7.UI] 탄약카운터 감소 탄약 카운터 감소 플레이어가 총을 발사할 때 탄약 카운터가 감소하도록 플레이어 발사 로직을 수정해야 한다. 다음 단계를 따른다. 1. 콘텐츠 브라우저에서 콘텐츠> FirstPerson>Blueprints폴더에 접근하고 BP_Rifle 블루프린트를 더블 클릭한다. 저는 V5.2라서 그런지 BP_Weapon_Component를 선택했습니다. 2. Projectile Spawn Logic 코멘트 블록에 포함된 큰 일련의 노드들을 찾는다. 블록의 오른쪽끝에 Play Sound at Location이 있습니다.. 이 노드의 출력은 Montage Play와 연결되어 있는데 이 연결을 ALT+좌클릭으로 끊습니다. 3. Player Sound 출력핀을 끌어 BP_FirstPersonCharacter형변환노드를 추가하고.. [07화면UI] UI값을 플레이어 변수에 연결 현재 UI는 표시만 되지 변수와 연결되어 있지 않다. 다시 이전의 HUD 위젯 블루프린트를 열어 바인딩을 생성해서 변수나 함수를 위젯에 묶는 기능을 제공한다. 체력 바인딩 만들기 1. 콘텐츠드로워 FirstPerson>UI폴더에서 HUD 위젯블루프린트를 더블클릭한다. 2. 하이라키패널에서 PlayerStats Bar오브젝트 아래 자식인 Health Bar오브젝트를 클릭한다. 3. 디테일패널의 프로그레스 카테고리에서 퍼센트필드 옆 바인드 버튼을 클릭하고 바인딩생성한다. 4. UMG에디터가 디자이너뷰에서 그래프뷰로 전환된다. 새로운 함수가 생성돼 미터와PlayerHealth 변수간의 연결을 스크립트로 작성할 수 있다. 빈 그래프 공간을 우클릭하고 Get Player character 노드를 추가한다. 5. .. [07화면UI] 탄약과 타깃 제거 카운트 만들기 탄약과 타깃 제거 카운트는 Text값으로 표시할것입니다. 1. 하이라키의 PlayerStats를 최소화한다. 2. 팔레트> PANEL>가로박스를 끌어서 하이라키의 Canvas의 자식으로 만든다. 이름을 WeaponStats로 한다. Detail의 Ankors 풀다운메뉴에서 우상을 골른다 그런 기준점이 우상으로 바뀐다. 포지션은 다음과 같이 설정한다. 3. Common>Text를 WeaponStats로 드래그한다. 이름을 AmmonLabel로 변경한다. 콘텐츠Text를 "Ammo:" 4. Common>Text를 WeaponStats로 드래그한다. 이름을 AmmonLeft로 변경한다. 콘텐츠Test를 30으로 한다. 5. 팔레트> PANEL>가로박스를 끌어서 하이라키의 Canvas의 자식으로 만든다. 이름을.. [07화면UI] UMG를 사용해 간단한 UI미터 만들기 언리얼 모션 그래픽 UI 디자이너를 사용해 UI 요소를 만들것이다. UMG를 사용해 간단한 UI미터 만들기 플레이어 변수에 UI값 연결 탄약과 제거된 타깃 추적 UMG를 사용해 간단한 UI미터 만들기 이 절에서는 UMG에디터를 사용하는 법을 배운다. UMG는 시작적 UI 저작 도구이다. 1. FirstPerson>BluePrint폴더에서 FirstPersonCharacter 블루프린트를 더블 클릭한다. 2. 내 블루프린트 패널에서 변수+를 눌러 PlayerHealth로 이름 바꾸고 Float 타입으로 변경한다. 3. 동일하게 PlayerStemina라는 두 번째 플로트 변수를 만든다. 4. 3번째 변수는 PlayerCurrentAmmo로 이름짓고 타입은 Integer다. 5. 4번째 변수는 Targets.. 이전 1 2 3 4 5 6 7 8 다음