[unrealengine4] 47

2023-07-19 언리얼(적이 특정 루트로 움직이기)

Enemy가 지정된 구간으로 정찰하기 경로 지정을 위해선 Spline이라는 컴포넌트를 사용해야 한다. 새로운 액터를 추가해 BP_PatrolRoute로 하나 생성해 준다 뒤, Spline컴포넌트를 추가해 준다. 이후 필드에 내가 원하는 경로로 깔아 두자. 참고로 해당 actor를 우클릭해 포인트 복제를 하면 경로 지정을 더 추가해 줄 수 있다. Enemy가 PatrolRoute 따라서 이동하기 이제 적이 지정된 위치로 따라갈 수 있도록 해보자. 새로운 블루프린트 클래스를 생성할 것이며 actor Component로 생성을 하자. 액터 이름은 BP_PatrolComponent로 정해준다. BP_PatrolComponent 내부로 들어가 변수하나를 추가해 준다 변수 이름은 PatrolRoute이며, 변수 유..

[unrealengine4] 2023.07.21

2023-07-18 언리얼(플레이어 추격)

Enemy가 추격해 플레이어를 공격하기 새 태스크(BTT_BeginActionA)를 추가한다. Receive Execute Ai 이벤트를 불러와 Begin Action A를 호출하게 되고 Finish로 마무리하도록 한다. 이후 BT_Enemy_Melee에서 Sequence에 있던 Blackboard를 Selector로 옳겨주고 그 외 데코레이터, 서비스, 태스크 들을 Selector에 연결해 준다. BTT_LookAt 태스크가 실행뒤 Sequence를 통해 Move to태스크(지정 대상 따라가기)와 BTT_BeginActionA태스크를 실행시킬 수 있도록 해준다. MoveTo 디테일에는 Key대상을 Target으로 잡아주고 Acceptable Radius를 200으로 지정해 준다. Acceptable R..

[unrealengine4] 2023.07.19

2023-07-13 언리얼(AN_MakeNoise, Enemy사운드 인지)

검을 휘두를 때 AI가 소리를 인지하는 걸 만들어 보기 AI는 자동으로 소리를 감지를 할수가 없다. 그러므로 소리가 발생하는 대상이 직접 MakeNoise와 Pawn Make Noise 함수를 호출해서 AI가 소리가 났다는 것을 인지할 수 있도록 해줘야 한다. 기본으로 소리가 나는 로직을 만들어야 한다. 무기를 휘두를때 소리가 나올 수 있도록 해보자. 일단 소리에 관련된 notify를 만들어야 한다. animNotify를 추가한다. AN_MakeNoise Received Notify 오버라이드 함수를 추가한 뒤 Play Sound at Location에서 사운드의 위치와 방향을 지정하고 재생해 준다. 해당 몽타주의 Mesh comp의 Owner를 받아와서 Location과 Rotation을 넘겨주면 된다..

[unrealengine4] 2023.07.18

2023-07-12 언리얼(Ai 타겟 인식, AIPerception)

Enemy가 Player 쪽으로 회전하기 Enemy가 Target(플레이어 키)를 바라보도록 하기 위해 Rotate to Face BBEntry라는 태스크를 사용할 수 있지만, 적이 캐릭터를 너무 빠르게 돌아보는 상황이 생겨 어색한 모습을 볼 수 있다. 이로 인해 Rotate to Face BBEntry라는 태스크를 사용하지 않고 적이 캐릭터를 천천히 돌아보는 로직을 추가해 보자. 새 태스크를 생성한 뒤 블루프린트 베이스에서 Target변수(인스턴스 편집가능)를 추가한다. 새 태스크 이름을 BTT_LookAt으로 이름을 변경시킨다. 이후 Target 변수에서 Get Blackboard Value as Actor를 추가해 이 노드로 나오는 값을 변수로 승격하여 그 승격한 변수에 값을 집어넣게 된다. 승격한..

[unrealengine4] 2023.07.13

2023-07-11 언리얼(데코레이터, 적Ai)

데코레이터 데코레이터 : 비헤이비어 트리에 분기를 나누기 위한 용도로 사용이 된다. 추가 방법은 2가지 있다. 1. 해당 태스크 우클릭 후 데코레이터 선택을 통해 추가 2. 새 데코레이터로 사용자의 새로운 데코레이터를 추가해 적용.(보통 여기서 자신이 원하는 데코레이터를 만들어 적용할 수 있다.) 근접 무기를 들고있는 적 AI를 만들어보기 BT_Enemy_Melee 추가 BB_Enemy_Melee(블랙보드) 추가 BB_Enemy_Melee(블랙보드)에 플레이어의 정보를 담을 수 있는 Target(Object)라는 새 키를 추가한다. Target 키의 디테일에서 KeyType 세부정보 Base Class를 Character로 지정해 준다. 이후 내가 적용하고 싶은 BP_Enemy의 디테일에 Behavior..

[unrealengine4] 2023.07.12

2023-07-07 언리얼(AI(비헤이비어 트리))

AI 만들어 보기 비헤이비어 트리 Root 비헤이비어 트리 내부에는 Root 노드 하나가 기본적으로 있다. 이름 그대로 트리 구조의 형태를 띄우고 있으며, 그 밑의 자식 수에 관한 제한은 없다. 비헤이비어 트리에서 우클릭 시 Composites와 Tasks가 있다. Composites(조합/합성) Tasks를 자식 노드로 묶어놓을 수 있으며 다음 루트로 넘어가는 것은 무조건 Composites로 거처 넘어가게 된다. 기본으로 Selector / Sequence / Simple parallel 3가지가 있다. Selector - 자식 노드가 왼쪽에서 오른쪽 순으로 실행이 된다. - 모든 자식 노드 중 하나라도 성공한다면 Selector도 성공으로 인식한다.(OR : 성공 즉시 돌아온다) - 실행 중인 자식..

[unrealengine4] 2023.07.11

2023-07-05 언리얼(LIfeGauge(피통 바), ProgressBar)

LIfeGauge 만들기 위젯 블루프린트 WBP_Gauge 생성 Size Box WBP_Gauge의 계층 구조를 건들기 전 기존 계층구조에 있던 Canvas Panel을 지운다. 이후 Size Box를 WBP_Gauge의 계층 구조에 추가해 준다. Size Box : 내가 원하는 특정 크기만큼 조절할 수 있게 해 주고, 위젯을 사이즈 박스에 래핑 하면, 박스에 맞춰 특정 크기가 되도록 강제적으로 조절하수 있다. 그리고 Size Box는 자식 하나만 가질 수 있다. Border Border를 추가해 Size Box의 다음 계층구조로 집어넣는다. Border(테두리) : 틀 안의 테두리에 위젯의 색이나 이미지를 바꿀 수 있다. Content : 자신보다 하위 계층에 대한 적용을 말한다. Padding : (..

[unrealengine4] 2023.07.06

2023-07-04 언리얼(Zoom, CrossHair)

ZoomIn 상태에서 캐릭터가 화면 밖으로 나가는 문제 zoonTimeLine에서 Float 트랙 인 CaneraLagSpeed를 추가해 길이 : 0시간 : 0 / 길이 : 0.25 시간 : 25로 지정 Camera Arm에서 set Camera Lag Speed를 추가해 TimeLin과 연결해 준다. ZoomIn 상태에서 다른 스킬을 사용 시 ZoomIn이 풀리지 않는 문제 BP_FireBall의 이벤트 그래프의 Deactivate이벤트 호출 시 ZoomOut도 같이 호출해 해결한다. CrossHair 만들기 뷰옵션 - 엔진콘텐츠에서 원하는 이미지를 찾아온다. 위젯 블루프린트를 생성해 준다. 팔레트의 이미지를 Canvas panel로 넣어준다. Canvas panel : 플레이 시 화면에 보이게 될 화..

[unrealengine4] 2023.07.04

2023-07-03 언리얼(시야각(FOV), TImeLine)

죽은 캐릭터에 FIreBall 충돌 처리 제거 BP_Charcater의 AnyDamage에서 Generate Overlap Events가 False이후 Can Be Damaged도 False로 되도록 추가한다. Can Be Damaged : 피해를 받을 수 있는지 확인해 주는 변수 값 Zoom 구현하기 전 알아야 할 것 SpringArm과 Camera에 접근해야 하는데 BP_PlayerController로 형변환 해서 Camera Manager로 접근하는 방식은 접근은 가능하나 수치 변경도 불가능하고 SpringArm에도 접근하지 못해서 사용할 수 없다. Get Component by Class는 접근이 가능해서 사용 가능하지만 Skill에서 Player의 컴포넌트에 접근하는 것은 바람직하지 않고, 활 ..

[unrealengine4] 2023.07.04

2023-06-30 언리얼(FireBall 스킬 피격처리, 스플래쉬 데미지, Actor삭제, 스폰시 노출)

FireBall 스킬 공격 시 피격 처리하기 FireBall 스킬을 사용하여 Enemy에 Overlap이 발생 시, 해당 스킬이 본인이 피격되는 현상을 방지하기 위해 Instigator와 Owner가 아닌 Actor일 때에만 AnyDamage를 발생할 수 있도록 조건을 추가한다. 이후 앞 조건을 완료 후 피격이 성공할 시 대미지를 넣을 수 있도록 추가한다. BaseDamage에는 ProjectileDamage변수를 추가해 기본값을 넣어주면 기본값으로 대미지가 들어갈 수 있다. 이후 피격이 성공하면 ApplyDamage로 대미지를 넣어주고, 이후 DestroyActor로 FireBall을 삭제하도록 한다. FireBall이 지형에 충돌해도 무시하고 뚫는 경우 맵(Room)을 지정해 콜리전을 설정해 준다. ..

[unrealengine4] 2023.07.04