Unreal - Behavior Tree(3) 플레이어와의 상호작용
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
AI가 플레이어를 공격하고 데미지를 입고 미니맵에 적용시켜보도록하겠습니다 AI의 Behavior Tree의 구조를 변경하겠습니다(변경전 BT)AI의 Patrol은 필요없다고 판단해서 누락시키고 AI가 스폰할때와 죽을때의 처리분기를 추가해주겠습니다state의 이너머레이터를 OutOfSight, Chase, Attack, Die, Spawn,Damaged으로 수정 EnumClass c++ 수정서비스 타겟이 없을때 수정을 해주었습니다Dissolve Material을 사용한 AI의 자연스러운 스폰과 죽음처리를 위해 미리 상태분기를 수정시켜주었습니다(Behavior Tree의 우선순위는 왼쪽,위로 갈수록 우선순위가 높습니다) 우선 AI가 공격할수있도록 무기를 들려주었습니다WeaponSocket을 만들어서 프리뷰..
Unreal - Behavior Tree(2) 플레이어 따라가기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
https://lucodev.tistory.com/41 Unreal - 비헤이비어 트리(Behavior Tree) - AI Perception플레이어를 상대하는 인공지능 적 AI를 생성해보겠습니다언리얼에서 AI는 크게 Behavior Tree방식과 FSM 방식 두가지가 있습니다 저는 이번에는 Behavior Tree방식의 AI를 구성해보도록하겠습니다Behaviorlucodev.tistory.com저번의 AI - Perception의 기본설정과 이어지는 내용입니다 AI가 플레이어를 향해 다가오게 해보겠습니다 감지한 대상을 블랙보드에 Target으로 등록해줍니다그럼 인지한 대상을 Object형태로 Target이름의 actors[0]의 오브젝트 (aactor 의 포인터) 를 저장합니다블랙보드에서 Object..
Unreal - BehaviorTree(1) AI Perception
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
플레이어를 상대하는 인공지능 적 AI를 생성해보겠습니다언리얼에서 AI는 크게 Behavior Tree방식과 FSM 방식 두가지가 있습니다 저는 이번에는 Behavior Tree방식의 AI를 구성해보도록하겠습니다Behavior Tree와 Black Board를 생성해줍니다Behavior TreeAI가 어떤 행동을 할지 결정하는 두뇌역할을 하는 Tree(구조체) Black BoardAI가 사용하는 데이터의 집합체 Behavior Tree는 총 5가지의 노드가 존재합니다루트(Root)Behavior Tree의 시작을 나타내는 노드입니다컴포짓(Composite)셀렉터, 시퀀스, 심플 페러렐 로 이루어져있는 분기가 실행되는 규칙을 정의하는 노드입니다.태스크(Task)실제 행동을 수행하는 노드입니다.데코레이터(De..
Unreal - 8방향 블렌드스페이스(BlendSpace)
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
적 AI가 사용할 애니메이션 블렌드 스페이스를 만들어보겠습니다BasicSkeletalEnemy 이름을 가진 Character (c++)를 종속받은 적을 한마리 생성후SkeletalMesh를 할당해주었습니다 스폰할때 여러가지버전의 적을 생성하기위해 부위별로 별도로 만들어주었습니다전체의 스케일값을 쉽게 변동하기 쉽게 기준이되는 spine 스켈레톤을 기준으로 나머지 부위가 종속받도록 설계하였습니다 AI의 움직임은 총 8가지 방향으로 블렌드스페이스2D를 사용하여속도와 방향에 따라 움직임을 설계해보도록 하겠습니다 IDLE 애니메이션과 걷기 8방향애니메이션 그리고 뛰기 8방향 애니메이션을 리타게팅 해줍니다.블렌드 스페이스를 만들어줍니다 AI가 사용할 애님인스턴스를 만들어주겠습니다값을 넘겨받고 넘겨주기위한 Nati..
Unreal - 미니맵 만들기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
언리얼에서는 미니맵을 표현하는방식은카메라를 사용하는방식과 사용하지 않는 방식 크게 두가지가 있습니다 카메라를 직접적으로 사용하는방식은 사실적이고 구체적이게 묘사되는 장점이 있지만리소스를 많이 잡아먹는다 라는 단점도 있습니다 여러가지 미니맵 커스터마이징도 가능하기떄문에 저는USceneCaptureComponent2D 컴포넌트를 사용해서 만드는방식을 사용해보겠습니다 캐릭터에서 사용할 컴포넌트를 먼저 선언해줍니다 minimapCameraBoom미니맵카메라를 위에 띄우기 위한 카메라 붐 입니다minimapCapture미니맵 화면을 실제로 찍는 카메라 역할을 하는 대상입니다minimapSprite미니맵에서 보여줄 아이콘 입니다 (적이나 자신을표현할때사용합니다) 작업에 들어가기 앞서 BUILD.CS 파일을 열고반드..
Unreal - 마우스 커서 바꾸기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
마우스커서를 변경해보겠습니다적이있을때는 공격 마우스커서아닐때는 일반 마우스커서 총 두가지의 마우스커서를 변경해보겠습니다 유저인터페이스 -> 위젯블루프린트한개는 기본마우스 한개는 공격용 마우스 두가지를 위젯블루프린트를 만들어주겠습니다기본마우스부터 작업해보겠습니다위젯블루프린트에 SizeBox(크기박스)를 넣고SizeBox를 Desired로 변경너비와 높이를 오버라이드를 체킹후 크기를 설정이미지를 넣고 마우스커서 이미지를 넣어주시면되겠습니다 프로젝트세팅 - 유저인터페이스 - 소프트웨어 커서Default로해주시고 엘리먼트에 저희가 만든 일반 커서위젯블루프린트를 넣어줍니다 플레이어가 할당하고있는 플레이어컨트롤러 생성자에서 이렇게 작성합니다bShowMouseCursor = true;DefaultMouseCur..
Unreal - 이동중 낑김현상 sweep부분
·
Unreal 디버깅
작업을 하다가 스킬이 무언가에 막혀서 전진을 못하는 현상이 일어났다 고민을 많이하다가 알아낸이유는S스킬을 누르면 이런식으로 움직입니다그런데 Dist값이 1.0이 되기전에 다른스킬을 사용해버리면bSSkillMoving플래그 값이 변동되기전에 다른 애니메이션 몽타쥬가 나가니움직임이 낑기거나 움직이지못하는등 이상한 현상이 일어났던겁니다 그러면 다른 스킬을 사용할때 bSSkillMoving 플래그 변수를 false로 초기화시켜주면됩니다이런식으로 스킬을 시작할때 플래그변수를 false로 해주면 로직대로 굴러갑니다 마지막으로 원하지않는 대상과 오버랩되는지 로그로 확인후 예외처리 혹은 콜리전 처리를 해주었습니다캐릭터의 tick함수에서 모든 오버랩되는 대상의 이름을 로그로 찍어보고게임에서 플레이한뒤 필요없는 블록처리를..
Unreal - 스택형 스킬 구현하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
총 6스택까지 사용할수있는 스킬을 구현해보겠습니다일단 UI는 이렇습니다중간에있는 원은 10초동안 회전할 원형프로그래스바 이며회전이 끝나면 바깥쪽의 6개로 나누어진 프로그래스바가 한구역이 채워집니다 일단 ui를 수정해줍니다(너무구려..)제가 마나, 포스게이지를 위해 만들었던 움직이는 메테리얼입니다해당 노드를 복사합니다 해당 프로그래스바에 제가 만든 메테리얼 노드들을 넣어주고 원래있던 3vector컬러 대신 넣어줍니다원형의 프로그래스바도 회색과 흰색으로 수정해줬습니다그냥 원형 프로그래스바 버전입니다 스킬칸 최종 UI디자인이 완성되었습니다 그럼 이제 프로그래스바 로직을 완성해보겠습니다1. 중간에 있는 프로그래스바는 10초마다 1이됩니다2. 중간에 있는 프로그래스바가 1이되면 바깥쪽의 프로그래스바 게이지가 한칸..
Unreal - 원형 프로그래스바(ProgressBar) 만들기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
스택형 스킬의 UI를 최종 수정하기전 스택차징이된걸 시각적으로 표현하기위해원형의 프로그래스바가 필요합니다 그럼 육각형 프로그래스바를 만들어보겠습니다사용할 메테리얼과 메테리얼 파라미터 컬렉션을 만들어줍니다 Translucent / Unlit 설정해당사진처럼 세팅해줍니다무슨노드인지 직관적으로 나오지않는경우 코멘트창으로 무슨노드인지 적어두겠습니다(Ex)Scalar Parameter) 명명된 경유 선언 노드 추가해당그림처럼 노드를 설정해줍니다해당 노드구간을 한개 더 만들어줍니다Constant3Vector노드와 Lerp노드를 꺼내줍니다해당노드를 파라미터로 변환 해줍니다이렇게 세팅해줍니다 밑의 parameter값의 V값을 바꾸면 Emmisive값의 변동이 가능해집니다높을수록 많이 빛납니다밑의 초록색 노드 두개를 추..
Unreal - Ghost Trail(고스트 트레일) 잔상
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
FX -> 나이아가라 시스템 제작Empty로 제작하겠습니다이름은 NA_GhostTrailParticle Spawn +로 추가Sample Skeletal Mesh를 추가합니다PreviewMesh를 사용할 캐릭터의 메시로 설정해줍니다좌측하단 Parameter에서 검색하면 나옵니다Position을 검색해줍니다Particle Spawn에 추가해줍니다SampledPosition을 검색하고 해당위치에 드래그 앤 드롭을 해줍니다 Emitter Update에 Spawn Burst Instantaneous를 추가해줍니다Spawn Count값을 1000(임시)로 설정해줍니다Initialize Particle에서 Sprite Attributes에서 Sprite Size Mode를 Uniform으로 변경Sampling -> ..