본문 바로가기

전체 글

(331)          글쓰기    
[10.AI적업그레이드] 플레이어의 행동에 노이즈 추가 EnemyController의 폰감지 컴포넌트는 총소리같은 기존 음향소리를 듣는게 아니라 폰노이즈이미터에서 생성한 노이즈만 들을 수 있다. 플레이어의 스프린트와 슈팅에 폰노이즈이미터 컴포넌트를 이용해 감지가능한 노이즈를 생성하겠다. *기존 ThirdPersonCharacter템플릿을 포기하고 처음 하였던 FirstPersonCharacter템플릿의 프로젝트로 진행하고 있습니다. 불편을 끼쳐드려 죄송합니다. 진행하다 보니 총기 발사및 UI등 기존의 변수및 기능들이 다 필요해져서 입니다. 혹시 새09.적인공지능에서 새로 프로젝트를 만드신 분은 Contents>ThirdPersonCharater및 Character 폴더를 카피해서 같은 Contents폴더에 복사하면 됩니다. 이후 ThirdPersonChara..
[10.AI적업그레이드] 노이즈 이벤트 데이터 해석및 저장 BP_EnemyController에 추가한 폰 감지 컴포넌트는 적 AI에서 시각및 청각 감지를 모두 구축할 수 있는 기반을 제공한다. 폰 감지 컴포넌트가 감지할 때마다 활성화되는 노이즈 청취시 이벤트를 사용한다. 다음 단계에서 적들이 가가운 거리에서만 노이즈를 감지하도록 할 것이다. PawnSensing에서 On Hear Noise는 OnSeePawn이 작동하지 않을 경우에만 동작되도록 되어 있다. BP_EnemyController를 연다 1. 컴포넌트 패널에서 폰감지 컴포넌트를 선택한다. 디테일 패널에서 이벤트 카테고리를 살펴보고 노이즈 청취시 이벤트의 녹색 버튼을 클릭해서 이벤트그래프에 추가한다. 2. 노이즈 청취시 에는 사운드위치와 적 사이의 거리가 HearingDistance의 값보다 작은 경우 ..
[10.AI적] 블랙보드를 업데이트하기 위한 변수 및 매크로 만들기 BP_EnemyController 블루프린트에 변수와 매크로를 만들어 사운드와 관련된 BB_EnemyBlackboard의 키를 업데이트 한다. 1. Enemy폴더의 BP_EnemyController 블루프린트를 연다. 2. 변수 + 버튼을 클릭해 타입을 플로트 이름을 HearingDistance로 한다. 컴파일후 디폴트 16000로 세팅 3. 변수 + 버튼을 클릭히 타입을 네임, 이름을 HasHeardSoundKey로 지정 컴파일후 기본값 HasHeardSound로 세팅 4. LocationOfSoundKey라는 네임 변수를 만든다 컴푸알후 기본값으 LocationOfSound로 세팅 5. 매크로+를 클릭 이름을 UpdateSoundBB로 변경 6. 매크로 디테일 패널에서 입력으로 실행 타입의 In과 L..
[10.AI적업그레이드] 적 소리 분석 기능 추가 현재 적은 시각적 트리거를 이용 추적한다. 이제 청각적 트리거를 이용 보이지 않는 적도 추격가능하게 한다. 청각적 능력을 추가하기 위해 폰감지 컴포넌트를 추가할 것이다. 이부분은 열심히 해봤는데 잘안되었다. ㅠㅠ 추후 디버깅해보도록 하겠습니다. 비헤이비어 트리에 청력 추가 적캐릭터가 청각적 능력을 사용하게 하려면 블랙보드 안에 2개의 키를 만들어야 한다. HasHeardSound : Bool, 소리가 났는지 여부 LocationOfSound : Vector, 소리가 난 위치 1. 콘텐트드로워 Enemy폴더의 BT_EnemyBehavior에셋을 두 번 클릭해서 비헤이비어 트리 에디터를 연다. 2. 블랙보드 탭을 클릭한다. 3, 새키 버튼을 클릭하고 Bool타입을 선택한다. 이름은 HasHeardSound로..
[10.AI적업그레이드] 체력미터 업그레이드 - Damage처리 체력 미터 막대는 FirstPersonCharacter 블루프린트의 PlayerHealth 변수에 연결된다. AnyDamage이벤트를 사용해서 PlayerHealth 변수의 값을 줄인다. 1. 콘텐트브라우저에서 FirstPersonCharacter 블루프린트를 연다 2. 이벤트 그래프의 빈공간에 우클릭하고 AnyDamage 이벤트를 추가한다. 출력핀에서 와이어를 끌어 SET Player Health노드를 추가한다. 3. Player Health입력핀에서 와이어를 끌어 MAX(Float)를 추가한다. 기본값 0보다 작아지지 않게 한다. 4. MAX(Float)위쪽 입력 핀을 끌어 빼기 노드를 생성하고 위쪽 입력핀에 GET Player Health 노드를 추가한다. 5. 요약해보면 Damage이벤트가 발생하..
[2.블루프린트연습] 특정한 클래스와의 충돌만 인식하기 이전 프로젝트를 실행해보면 충돌후에도 BP_Target 클래스는 Player와도 충돌이 된다. 이번에는 Player와 충돌했을때만 블루프린트가 작동해 점프동작이 되도록 하겠다. 액터가 충돌시 Event ActorBeginOverlap 이벤트가 발생된다 그 뒤에 Cast To_ThirdPersonCharacter를 거쳐 Add Velocity Change Impuse와 연결해주면 점프 동작은 플레이어와 충돌시만 일어난다. Cast To_ThirdPersonCharacter노드의 Cast Failed는 충돌된 클래스가 ThirdPersonCharacter가 아닐 경우의 처리의 실행출력이다. 간단하지만 아주 유용한 팁이다.
비헤이비어 트리에서 Attack 태스크 사용 적의 공격은 근접 공격이므로 적은 플레이어가 가까히 온걸 체크해야 합니다. DoAttack 태스크를 사용하려면 다음 단계를 다르싶시요. 1. 비헤이비어 트리 에디터에서 Attack Player 시퀀스 노드에서 와이어를 아래로 끌어서 MoveTo및 Wait 테스크 노드 사이에 BTTask_DoAttack 데스크 노드를 추가한다. 2. 디테일 패널에서 Target Actor Key 선택을 PlayerCharacter로 변경한다. 노드 이름을 Damage Player로 변경해서 DoAttackBTTask를 사용하는 방법을 설명한다. 저장한다. 3. Attack Player 시퀀스가 완료됐다. 이제 ThirdPersonCharacter 블루프린트를 업데이트 해서 손상이 처리될때 체력 미터를 줄여야 한다.
[10.AI적] AI적 공격만들기 9장에서는 똑똑한 적을 만들기 위해 적의 시야 인식 트리거를 이용 추적하는 기능을 세팅했다. 이장에서는 데미지를 입히도록 해보겠다 공격 태스크 만들기 적이 플레이어에게 공격을 하는 BTTask_DoAttack라는 공격 태스크를 만들고, 적 비헤이비어 트리에서 만든 Attack_Player시퀀스를 확장한다. 태스크에는 두 개의 변수가 있다. - 하나는 데미지 줄 대상을 저장하고 다른 하나는 적용할 데미지의 양을 저장하는 것이다. 다음과 같이 공격 태스크를 만든다 콘텐트브라우저에서 FirstPersonBP>Enemy 폴더에서 BT_EnemyBehavior에셋을 연다 툴바에서 새 태스크 버튼을 클릭하고 나타나는 드롭다운 메뉴에서 BTTask_BlueprintBase를선택한다. 이름을 BTTask_Bluepri..
[10.AI적] AI적 업그레이드 이 장에서는 AI적에게 더 많은 기능을 추가해서 플레이어가 실패할 가능성을 제공하고 더 큰 게임플레이 다양성을 제공한다. 그리고 순차적으로 새로운 적을 스폰할 수 있는 시스템을 구축해서 늘어난 난이도의 밸런스를 완성할 것이다. 플레이어의 체력을 손상시킬 적의 근접 공격 도입 AI에게 플레이어의 발자국과 발사를 들을 수 있는 기능 제공 적들이 소리를 듣고 조사하게 만들기 플레이어가 총으로 적을 파괴할 수 있도록 허용 월드에 새로운 적을 스폰 AI 적들이 무작위로 레벨을 배회하도록 세팅 장이 끝날 무렵, 플레이어를 공격하고, 플레이어의 발자국 소리와 종소리를 들을 수 있고, 무작위로 레벨을 배회하는 AI 적을 스폰시킬 enemy spawner를 갖기된다.
[2.블루프린트연습] 캐릭터 천천히 따라다니게하기 이전과 비슷하게 BP_QMark에서 작업한다. 기존 블루프린트를 그대로 사용한다. 블루프린트 에디터를 열어 이벤트그래프를 좀 수정해야한다. 현재는 캐릭터의 위치를 그대로 BP_QMark에 카피해주었는데 BP_QMark에서 캐릭터까지의 벡터를 이용해 조금씩 더해주겠다. 그럼 천천히 따라가는 효과가 난다. 이런것을 해주는 보간함수가 있지만 여기서는 기본 기능을 이용해 노가다로 만들어 보겠다. 아는게 이것밖에 없어서 ㅎㅎ 일단 Get Actor Location과 Set Actor Location사이의 연결을 끊어낸다 ALT+클릭으로 하면된다. 왼쪽 Get Actor Location출력위를 우클릭하고 Recombine Struct Pin을 클릭해서 출력을 벡터로 되돌린다. 반대편 Set Location도 같이 ..
[2.블루프린트연습] 캐릭터 따라다니게하기 현재 우리는 삼인칭캐릭터 템플릿을 사용하고 있다. 삼인칭텔플릿은 카메라가 뒤에서 따라다니고 일인칭은 카메라가 캐릭터 눈쯤에 위치해 있다. 실제 일인칭템플릿으로 프로젝트를 만들면 몸통과 다리가 없는 캐릭터가 들어있다. 보이지 않으므로. 이러한 효과는 레벨을 찍는 카메라의 위치 설정을 캐릭터의 어떤 부분으로 할것인지에 따라 쉽게 변경이 가능하다. C를 누르면 카메라를 이동시키고 싶었는데 아직 키입력 매핑 방법을 잘 몰라 그냥 시작시 퀘스천마크가 플레이어 머리위를 따라다니는 것으로 대치하려고 한다. 우선 컨텐트드로워에서 +Add를 누르고 블루프린트클래스>Actor를 만들고 이름을 BP_QMark로 한다. 에디터가 열리면 컴포넌츠 +Add를 누르고 StaticMesh를 추가한다. 디테일에서 StaticMesh를..
[2.블루프린트연습] 액터 이동시키기 이제 BP_Cube를 움직이게 해보자. 이전 채터에서 연습했던 홀수 합구하기 노드들을 지울수도 있지만 함수를 만들어 저장해 놓겠다. MyBluePrint>Functions 옆 +를 누르고 OddSum 이라고 이름을 변경하자. 다시 이벤트 그래프로 돌아와 맨 왼쪽 Event BeginPlay만 빼고 다 선택한 다 선택후 Ctrl-X로 잘라내기 하고 OddPrint 탭을 눌러 Ctrl-V로 붙여주고 맨 왼쪽에 OddPrint 노드를 연결해준다. 이제 EventGraph로 돌아와 방금만든 함수 OddPrint를 끌어다 놓고 Event BeginPlay와 연결해주고 플레이해보면 잘된다. SaveAll해주고 연결했던 OddPrint 노드는 지워준다. 에디터 오른쪽 밑을 보면 *Unsaved를 누르면 된다. 그래프..