목록분류 전체보기 (194)
초보 코린이의 성장 일지
순찰 경로를 돌면서 탐색하는 Enemy들은 이제 Component를 가져서 상황에 맞게끔 행동하도록 만들어 볼 것이다. 1. 컴포넌트랑 Actor을 각 한개씩 생성해준다. 1. 컴포넌트 추가해서 Spline와 TextRender 추가 2. Spline은 말그대로 곡면선을 그린다는 것이다. 2가지 방법이있는데 베지에 곡선과 캣멀롬이 있다. 배지에 곡선 - 포물선 같은 곡선을 그리는 것 캣멀론 - 자동차 레이싱 트랙에있는 울타리를 생각하면 된다. 1. Construction Script 많이들 봤을 것이다. 하지만 무슨 용도로 사용하는지는 잘 모를 수도 있고, 글쓴이도 사용을 처음해본다. 2. 블루프린트에서는 생성자라고 생각하면 된다. 어디에 배치나 생성되거나 맴버에 값이 바뀔때 호출 된다. 3. 속해있는 ..
일정 범위에 들어왔을떄 감지하는 AI 상태를 더 욱 정밀하게 만들어 보도록 하겠다. 1. AI 상태 Enum을 나타내는 열겨형을 하나 생성해준다. Wait = 대기 모드 Approach = 추격 상황 Action = 액션 중인 상황, 공격 등등 Patrol = 순찰 상황 Hitted = 맞은 상황 Avoid = 회피하는 상황 1. 블랙보드로 들어가서 새 키를 눌러 Behavior를 Enum으로 생성해준다. 2. Enum도 Key Type 확정 시켜주지 않으면 사용 할 수 없다. 1. 사용할 변수 및 함수와 Tick AI 입력 파라미터 2개 추가 1. Target Key로 부터 만들어 놓은 블랙보드를 가져오기 위해 형변환을 통해서 Target에 저장해준다. 2. 타겟이 있는지 확인해주고, 플레이어를 못찾았..
이제 비헤이비어를 통해 Enemy를 다뤄보게 될 것이다. 1. BP_Enemy 자손 블루프린트로 BP_Enemy_AI를 생성해준다. 1. Enemy가 공통적으로 가져야 할 Weapon, Moving 를 추가해준다. 2. 변수 BehaviorTree를 생성하고 변수유형 또 한 비헤이비어 트리로 바꿔준다. 1. AI를 선택하여 또 자손 블루프린트 클래스를 생성해준다. 2. Basic로 이름 설정 1. 실직적인 관리를 해줄 Controller를 생성해준다. 2. 이건 처음에 사용 방법을 배우는 용도로 사용해 볼 것이다. 1. On Possess 빙의 되었을때 콜이 되는 이벤트 2. 비헤이비어 트리를 넣어놓은 Enemy_AI 로 형변환을 해주고, 저장해 놓는다. 3. Behavior Tree안에 Run Beha..
AI 작업을 하기 위한 틀을 하나씩 만들어 나갈 것이다. 그 중 중요한게 상대 객체가 하고있는 행동을 눈으로 볼 수 있어야 판단하기 편하다 그래서 기본적으로 HP바를 먼저 생성해서 다루는 법을 알아보겠다. 1. 위젯을 하나 생성해준다. 1. 전체 사이즈를 담당하는 화면이 필요한게 아니므로, Size Box를 가져와서 알맞은 크기로 맞춘다. 2. 만약 게임이라고 생각하면, 정형화 되어있는 화면이라면 알맞게 맞출 수 있지만, PC때와 모바일때 화면 크기가 다를 것이다. 해상도에 따라서 캐릭이 커지거나 비율이 깨지는 등 많은 부분에서 오차가 발생하면 안된다. 그래서 디자인할때 한 픽셀에 넣는 범위를 96 분의 1 비율로 잡는다. 3. Text바를 추가해서 알맞은 이름으로 변경해서 사용 할 것이다. 4. 언리얼..
추가한 이미지들을 변수화 시켜서 화면에서 클릭이 가능하도록 만들어 볼 것이다. 1. 시작은 당연히 IdelMode여야 할 것이며, Menu 버튼을 누르면 켜준다. 2. 마우스를 다루는것은 Player Controller안에 있으며, 마우스 클릭 또 한 활성화 시켜준다. 3. 게임과 UI에 모든 포커스를 준다는 의미를 가지고있는 Game And UI에 연결해준다. 4. 끝나게되면 반대로, UI숨겨주고, 다시 게임모드로 바꿔줘야한다. 1. 코드를 작성하기 위해 그래프로 들어간다. 2. 변수 Textrues를 배열로 받는다 3. 지금까지 제작한 무기 or 하고 싶은 무기 행동을 위해 배열을 나누고 적용 시켜준다. Construct = 생성자랑 역할이 똑같다. 그림을 그려 줄 때는 나타냄 Pre Construc..
파쿠르 지형지물 몇가지를 더 추가해서 진행해 보겠다. 사용할 함수 및 변수 추가한 상태 1. GetData 함수를 복사하여 만들었으며, return용으로 사용 할 것이다. 2. 배열을 인덱스 없이 하나씩 받아서 넣어주기 위한 코드 1. 넘어야 하는 장애물이 머리쪽에서는 감지되면 안되므로, Ceil 체크후 Hit 처리는 꺼준다. 2. 위에서 만들어 놓은 GetDatas 타입을 넣어주면 해당 파쿠르에 대한 내용들이 return 되서 들어온다. 3. for문으로 중간에 찾으면 return해준다. 못찾았다는 이야기는 곧 동작을 할 수 없기때문 4. Min, Max 거리를 비교해주고, 부피 또 한 가로축 Y를 가지고 오차범위 10으로 판단해준다. 5. index를 받아주고 플레이가능하다는 의미로 Result tr..
파쿠르 동작 중 2가지를 다뤄볼 것이다. Climb는 끝이났지만 다시 움직이지 못하는 상황이 발생하여 예외처리를 해줘야한다. 사용 할 함수 및 변수 추가한 상태 1. 모든 파쿠르 동작을 종료 할 수 있는 노티파이 End_Parkour를 하나 만들어준다. 1. 만들어 놓은 노티파이를 끝에 추가해서 끝내기 1. 파쿠르 타입에 대한 스위치 문을 동작별로 확인하기 위해 돌려준다. 2. 공통적으로 종료되어야하는 것도 있기 문에 카메라는 꺼준다. 3. Current Type를 다시 Max로 돌려주고, State를 Idle로도 돌려준다. 4. Climb 모드라면 Movement를 Walking로 다시 돌려준다. 그럼 이제 Walking 처리를 했기 때문에 벽을 타고 올라가고나서 걸어 다닐 수 있게 변한다. 애니메이션..
활을 다 헀지만 미처 처리 못했던 부분이 있다. 사소할 수 있지만 꼭 알아야 하는 부분이라서 다뤄야한다 줄을 당기는 모션이 없이 활이 나가기만 했다. 이 활 줄이 자연스럽게 손끝에서 당겨지도록 변경할 것이다. UPrimitiveComponent = 원시적이라는 의미로, 삼각형을 그릴수 있는 최소한에 정보 UMeshComponent = 실제 모델을 어떻게 불러와서 보여줄 것인가. UMeshComponent 타고 들어오면 또 자식 컴포넌트들이 나온다. USkinnedMeshComponent = 뼈대가 움직였을때, 찌그러지거나 바뀌다 비는 부위가 생긴다 그 곳을 피부를 매꾸듯이 매꾸는 기능을 사용가능 UStaticMeshComponent = 정적 모델로 안바뀐다. UWidgetComponent = UI 다룰때..
파쿠르가 특정한 객체들만 판단해야 하고, 지형 지물에 따라 판단 조건이 까다로워서 예외나 계산할게 너무 많다 1. 프로젝트 세팅 -> 콜리전으로 들어오면 채널을 지정해 주는 창이 있다. 설정해 줄게 있다. 2. 겹침과 블럭을 둘다 사용해야하는 경우가 있다면 오브젝트 유형에 나누고 3. 선이나 박스들은 위에 트레이스 유형에 정리한다고 생각하면 된다. 1. Trace 채널을 Parkour로 등록해주고, 기본 반응은 Ignore로 설정해준다. 2. 이제 검출할 객체를 선택해주기 위한 Profile를 만들어 준다. 이름은 Parkour_Profile로 해주고, 콜리전 설정은 Collsion Enabled로 선택해준다. 3. Line나 Trace는 기본 연산이 블록으로 되어있다. 그래서 Parkour 일때만은 블..
타겟팅 변경을 할때 외적, 내적식을 대입해서 예외처리를 하는거부터 시작해 보겠다. 사용할 함수 추가 및 변수 추가 1. InRight를 입력값으로 받아서 체크가 되면 오른쪽이고, 체크가 안되면 왼쪽이라고 판단할 것이다. 2. 로컨변수 Map은 STL에 Map을 그대로 사용한 것으로 키, 값을 받아준다. 1. Target가 없으면 움직일 필요가 없으니 확인해준다. 그리고 Target 구역을 다시한번 정해서 판단할 것이다. 2. Profile에 배열로 Target는 굳이 추적할 필요가 없으므로 체크해주기 3. Array Element로 Hit된 결과가 나올 것이므로 Break로 Character형인지 체크해주고, 그 Hit된 객체에 위치를 하나 얻어올 것이다. 4. 이제 방향을 만들어야하므로 Characte..