Unreal Engine/게임클래스 - 언리얼엔진 기초 29

[27강] Player Combo - 1

언리얼에 CSV 데이터시트 불러오기 1. "Plyaer" 폴더에 블루프린트 > 구조체 "FComboTable" 생성* 구조체 : 변수들을 묶어서 다시 변수 취급해줄수 있도록 하는 기능  2. CSV 파일의 변수이름을 참고하여 다음과 같이 생성 - AnimMontage형 "Montage"  - Float형 "PlayRate"- Name형 "StartSectionName"- Boolean형 "CanMove" * 자료형 Name : 이름을 지정할 때 사용(대소문자 구분 없음)String : 글자 두자 이상의 문자열을 변수로 다룰 때 사용Text : 현지화 가능 텍스트(잘 사용하지는 않음) 3. 데이터 테이블 임포트 임포트 > 데이터 테이블 CSV 파일 선택 > 임포트 대상 "Data Table" 선택Curve..

[26강] Damaged Enemy - 4

이번 강의를 통해서는 최종적인 사망 처리를 완료하고, Enemy가 피격당한 후 맞는 동작을 처리할 예정이다. 그 후 데이트 시트 (플레이어 콤보에 사용할 데이터를 만드는 작업) 을 진행할 예정이다.  사망처리 현재 구현에는 버그가 있는데, 이미 사망한 상태에서 맞았을때 계속 사망을 처리한다는 것이다. 사망에 한번 들어갔다면, 더 이상 사망을 반복할 필요가 없다. 사망에 한번 들어간 후 이를 반복하지 않게 처리하여 주어야 한다. 예를들어, 변수를 활용해 처리하는 방법이 있다.  지금 사용할 방법은 흐름을 제어하는 것이다. Google 에 언리얼 흐름제어 관련해 써치를 진행하면 Do any / While / Sequence / For each / Gate 등이 뜬다. 이런것들이 프로그래밍에서는 그냥 구현하면..

[25강] Damaged Enemy - 3

색을 변경 한 후 일정시간 뒤에 색이 원래대로 돌아오는 것을 구현  1. 다음과 같이 그래프를 연결함 - Delay 함수를 이용하고, Duration 값을 0.1을 주어 0.1초 뒤에 "Change Material" 함수 실행  2. "Color" 값에 Enemy Material 의 원래 16진 선형 값을 복사, 붙여넣기 해 설정해줌   플레이를 해 보면 0.1초뒤에 원래 색으로 돌아오는것이 정상적으로 확인된다.  3. 새로 만든 부분을 다음과 같이 "Change Color" 로 정리하여 둔다   1. 사망처리를 위해서는 애니메이션 몽타주가 필요하다. 믹사모에서 애니메이션을 다운받아 변환하여 탐색기에서 표시 > 엔진에 넣어준다.  2. 생성 > 애님몽타주생성 Montage 파일로 옮기기 3. 몽타주에 넣..

[24강] Damaged Enemy - 2

이번 강의에서는 저번에 다루었던 피격처리를 이어서 진행하고, 저번시간에 하다 말았던 HP바 시스템을 완성할 예정이다.  또한, 적(Enemy)이 공격당했을 경우 공격한 플레이어(Attacker)를 바라보도록 하고, 피격 후 붉은 색으로 바뀌었다가 돌아오는 것을 작업할 예정이다.    저번 강의에서 Progress Bar 의 설정을 마쳤는데 HealthBar로 Rename 하여 준다 Enemy 폴더 > WB_HealthBar* Rename 단축키 : F2컨트롤을 선택했을 때 오른쪽 위의 IsVariable이 체크되어 있다면 변수로 취급되며 "그래프" 탭으로 넘어갔을 때 입력을 받을 수 있는 컨트롤들이 자동으로 변수로 등록이 된다.  그래프 탭에서 다음과 같이 "HealthBar" 변수가 등록되어 있는 것을..

[23강] Damaged Enemy - 1

"Damaged Enemy" 강의를 통해서 다음과 같이 데미지 처리에 대해 익힐 예정이다. - 데미지를 전달하고 받는것 - HP를 경감시키고 경감시킨 HP를 출력 첫 단계로서 오늘은 적에게 칼을 쥐고, 피격 처리를 진행할 예정이다. 적인 Enemy "Skel_Mannequin" 에 칼을 쥐게 할 건데, Enemy 의 경우 칼을 계속 쥐고 있을 것이기 때문에 Right hand에 다음과 같은 방법으로 에셋을 추가할 것이다.  1. Sword 에 붙어있는 asset을 제거 (Player 작업을 하며 생성됨) 2. Hand 아래에서 소켓 추가  > "GreatSword" 로 이름 변경   플레이어보다 칼 크기를 크게 진행 할 예정이므로 다음과 같이 설정하여 준다.   미리 보기를 위해 아까 제작한 GreatS..

[22강] Enemy

22강에서는 Enemy 세팅을 다룰 예정이다. 1. Enemy Animation 세팅 2. 적과 충돌 검출 1. Enemy Animation 세팅 1) ABP Enemy 다 삭제 > ABP Player 이벤트 그래프 복사, 붙여넣기 (Ctrl 키로 연속 선택 가능) 2) 자료형 BP_Enemy "Enemy" 변수생성 밑 Player 대신으로 교체해주기. 3) Valid 에서 Speed, Direction 값 가져오는 것 제외하고 다 삭제 및 핀 제거 4) mixamo 애니메이션 가져오기 --1) great sword idle, run FRLB 다운로드 > without skin > in place --2) 컴파일 후 언리얼로 가져와서 애님인스턴스 생성 --3) "BlendSpaces" 폴더 > 애니메이션..

[21강] Animation Blending

저번시간에 이어 Attacking 애니메이션 오류를 해결할예정이다. 1. 무기가 있을때 / 없을때 상관없이 진행 2. 여러번 휘두르는 문제 3. 휘두르고 난 후 Idle (Unarmed) 로 초기화 되어 플레이 됨 이번시간에는 3번 문제를 애니메이션 블랜딩 기능을 이용하여 해결할 예정이다. - 애니메이션 두 동작 이상을 섞는 기능 - 애니메이션 몽타주의 슬롯 애니메이션이 실행된 후 idle 등이 초기화 되는 문제를 해결 가능 - "본마다 레이어로 블랜딩" 기능 사용 ex. 상하체 애니메이션을 섞음. 하체의 기본동작을 유지시키는 방법으로 공격 애니메이션을 더욱 자연스럽게 구현 Attacking Animation 오류해결 (3) 1. Upper Body 슬롯 만들기 저번시간에는 de..

[20강] Animation Montage

좋은아침이다! 하고 작업중이던 파일을 열었는데 로드에러가 뜨고 심난했다. 그냥 파일만 바꿔껴주면 되겠거니 하고 이전에 작업한 내용 살펴보면서 커피도 마시고 간식도 먹고 했다. 개선해야할 사항 두가지를 발견하고 해결했다. 1. 칼 파일 로드 에러 --1) 문제원인 파악 저번에 실수인데, 오늘 파악했다. Character 폴더에 Sword 폴더에 칼 자료, Weapon 폴더에 칼자료 이 두가지를 섞어 사용하고 Sword 폴더 칼 자료를 필요없다고 삭제했다. 뭐가 뭔지 정리가 안되고 확실치 않음 작업하다가 삭제한 쪽 자료가 사용되는 부분에서 문제가 되는거였다. --2) 확실하게 해결하기 위해 칼을 다 삭제, 다시 Weapon폴더에 넣고 칼 리임포트, 칼 블루프린트 다시 만듦 --3) BP_Play..

[19강] Spawn Actor & AttachToComponent

이번 시간에 다룰 내용 Spawn Actor : Actor 를 화면에 구현하는데 사용 AttachToComponent : Spawn 한 Actor 를 socket 에 붙이기 위한 기능 구현에 사용 1. 필요한 무기 어셋 임포트 캐릭터 파일 > 탐색기에서 표시 > Sword 임포트 다운로드 한 파일에는 다음과 같이 피직스, 스켈레톤, 메시 정보와 텍스쳐가 들어있었다. 무기는 정적 메시이기에 StaticMesh 라고 오해할 수 있지만, 손 등과 정확히 상호작용하기 위해 SkeletalMesh 구조여야 한다. (따라서 뼈대가 들어가 있다.) SkeletalMesh 이기 때문에 후에 있을 작업에서 Trail 등의 기능도 구현가능하다. 2. 무기를 구현하기 위한 A..

[18강] Anim Notify

Anim Notify 애니메이션이 플레이 되다가 특정 구역을 지나가면 호출해주는 것 * 예시 : 1. 임포트한 애니메이션 > 애니메이션바를 움직이며 원하는 프레임에 "Play Particle Effect" 노티파이추가 2. 임포트한 파티클 효과 "Fire_Exp_03" 설정 3. 플레이를 했을 경우 설정한 프레임에 "Fire_Exp_03" 파티클이 호출됨. Anim Notify 심는 방법 1. 일반 문자열로 처리하는 방식 일반 강의에서 많이 다루며 애니메이션 블루프린트에서 플레이어에게 넘겨주는 방식인데 번거로움 유지보수가 어려움 노티파이추가 > 새노티파이 2. 객체로 만들어서 처리하는 방식 노티파이 객체를 이용하는 방법으로, 유지보수가 더 간편함 노티파이추가 > 새노티파이 하단에 있는 버튼으로 추가 No..