A Actor - A Pawn - A Character - 캐릭터블루프린트 (BP_Player)
폰은 액터가 가지고 있다.
메테리얼 인스턴스 생성
메테리얼 인스턴스 : 컴파일이 되어있는 메테리얼이다. ⇒ 빠르다.
메테리얼도 하나의 코드다.
메테리얼과의 차이점 ; 메테리얼은 컴파일 되어있지 않은 상태라서 직접 실행할 수 없다.
메테리얼을 할당할떄 게임을 실행하면 내부적으로 컴파일을 진행한다. ⇒ 느리다.
인스턴스는 컴파일이 완료된 코드이기 때문에 ‘코드’가 나오지 않는다.
UMaterial : 컴파일 안했다. (아예 느림)
실행할 수 없는 상태다.
UmaterialInstance : 컴파일 미리 해놨다. (빠름)
프로그래밍으로 값을 바꾸지 못한다.
UMaterialInstanceDynamic : 컴파일 되어있다. 프로그래밍으로 바꿀 수 있다. (조금 더 느림)
데미지 설정
무기에서 데미지 주는 기능 추가
무기 블루프린트 - 이벤트 그래프 - 오버랩 시작 이벤트 노드 확인 - True에 ‘Apply Damage’ 검색 후 Other Actor를 데미지 받을 액터로 연결한다. - ‘Get Owner’를 검색하고 핀을 끌어서 ‘Get Instigator Controller’를 검색하고 Event Instigator에 연결한다.
Apply Damage
Damaged Actor : 데미지 받을 액터
Base Damage : 줄 데미지, 0이면 데미지 실행 안한다는 의미다.
0 밑이거나 위로 설정해야한다. ⇒ 0으로 설정하면 안된다.
20 : 20 데미지를 준다. / -20 : 20을 회복시키라는 의미다.
Instigate : 데미지를 주는 주체 ⇒ 공격자
Causer : 데미지를 주는 객체 ⇒ 검
Get Instigator Controller : 무기의 주체를 저장하는 함수 노드로, 컨트롤러(액터 레퍼런스)를 반환한다.
적 히트 설정
적 블루프린트 - 이벤트 그래프 - 우클릭 후 ‘Any Damage’ 검색
Any Damage : 데미지 받는 함수
타격감 요소
애니메이션
색변경
이펙트
사운드
히트스탑 : 경직
카메라 쉐이크
적 히트 설정
공격자 누군지 출력
적 블루프린트 - 이벤트 그래프 - AnyDamage 노드 확인 - Instigated BY 핀을 끌고 ‘Get Controlled Pawn’ 검색 - Character 형변환 해준다.(플레이어 캐릭터가 나온다.)
Get Controlled Pawn : 공격자 Pawn 반환
Pawn이 반환되니 쓸 수 있게 캐릭터로 현변환을 해줘야한다.
HP 출력
적 블루프린트 - 이벤트 그래프 - 형변환 노드 확인 - Attacker 캐릭터 변수 생성 후 Set으로 연결한다. - MaxHealth ‘ Health 변수 생성 후 Set으로 연결 - Health와 Damage를 뺀다. - 우클릭 후 ‘Clamp(float)’ 검색 후 Health 변수에 Set으로 연결
Clamp ; 들어온 value가 min보다 작으면 min 값으로 설정되고,. max를 넘으면 max값으로 값을 제한하는 함수
히트와 데드 구분
적 블루프린트 - 이벤트 그래프 - AnyDamage 노드 확인 - 마지막 Hp 출력 노드 확인 - Health 변수에 ‘작거나 같음’ 검색 후 Branch 로 연결 - True는 ‘Dead’로 하고 False는 ‘Hit’로 한다. - 출력 핀 이름을 디테일의 출력에서 변경한다.
블루프린트는 노드접기 이후 출력핀을 여러개 설정할 수 있다.
이름을 바꿀 수 있다.
히트 시 애니메이션 실행
애니메이션 스켈레톤 설정 - 애님 몽타주 생성 - 적 블루프린트 - 이벤트 그래프 - AnyDamage 이벤트 노드의 Damaged 핀 확인 - ‘Play Anim Montage’ 검색 후 Anim Montage에서 생성한 몽타주 연결 - ABP 파일 - Anim Graph - defaultSlot(몽타주가 연결된 슬롯 : 몽타주 파일에서 확인할 수 있다.) 검색 후 연결
In Play Rate : 몽타주 애니메이션 속도
히트 순서
데미지 정의
몽자주 생성 및 연결
콤보 이론
콤보는 입력구간이 있어야한다.
애니메이션 노티파이 스테이트로 만든다.
끝에는 ‘Ens_Action’이 있고, 공격이 끝나기 전 ‘노티파이’로 Begin_Action을 만들어서 다음콤보를 실행시킨다.
exist 변수를 생성해서 입력구간에서 입력이 들어온다면 Exist를 true로 만들어서 Begin_Action에서 다음 콤보를 실행시킨다.
콤보는 동작을 도중에 끊고 다음 동작으로 넘어가야하기 때문에 Begin_Action을 놓는것이다.
노티파이 스테이트는 ‘반드시’ Begin으로 들어온다면 ‘End’로 끝나야한다.
콤보 공격
공격 중 움직임 정지
공격 애니메이션 몽타주 생성 - 플레이어 블루프린트 - Action 입력 이벤트 노드 확인 - 마지막 노드에 ‘움직임 가능’ 변수를 Set으로 연결(체크 해제) - Action 종료 이벤트에 ‘움직임 가능’ 변수를 Set으로 연결(체크)
콤보를 위해 이벤트 그래프의 노드로 연결
‘콤보 허용’ 변수 생성 - Action 입력 이벤트 노드에 Branch로 연결한다. - False 핀에 한번 공격할때의 노드들을 연결한다. - ‘콤보 수’ 변수와 ‘몽타주 배열’ 변수를 생성한다. - ‘몽타주 배열’ 변수에 콤보로 만들 몽타주들을 기본값으로 넣는다. - ‘몽타주 배열’의 핀을 끌고 ‘Get’을 검색하여 ‘Array의 Get(사본)’을 클릭하고 ‘콤보 수’와 함께 연결한다. - 생성된 노드는 ‘Play Anim Montage’의 Anim Montage에 연결한다.
콤보 허용 노티파이 연결
콘텐츠 브라우저 - 애님 노티파이 스테이트 파일 생성 - Begin과 End에 ‘콤보 허용’ 변수를 ‘Set Combo Enable’로 검색하고 연결(체크 확인 필수) - 콤보를 넣을 애니메이션에 연결 - 콘텐츠 브라우저에서 콤보를 실행 시킬 노티파이 생성 - 캐릭터 블루프린트 - 커스텀 이벤트 검색 후 이름 지정(다음 콤보 동작 실행 이벤트) - 다음 콤보 실행 노티파이 클릭 - 형변환 노드의 핀을 끌고 캐릭터 블루프린트의 ‘다음 콤보 실행’ 이벤트 검색 - 콤보 넘어가기 전의 애니메이션 클릭 - ‘다음 콤보 실행’ 노티파이 연결
충돌체 생성하는 이벤트와 다음콤보 실행 이벤트가 겹치면 안된다.
노티파이 구간 연결할때 잘 구분해서 넣어야한다.
다음 콤보 실행 이벤트 정의
캐릭터 블루프린트 - ‘액션 입력 노드 확인 - Branch의 True가 다음 콤보로 넘어가는 핀이다. - 다음 콤보로 넘어왔으니 ‘콤보 허용 변수’는 Set으로 연결하고 체크를 해제한다. - ‘콤보 존재’ 변수 생성 후 Set으로 연결하고 체크한다. - ‘다음 콤보 실행’ 이벤트 노드와 ‘콤보 존재’ 변수를 Branch로 연결한다. - True라면 콤보가 있고 다음 콤보로 넘어온 것이니 ‘콤보 존재’ 변수를 Set으로 연결하고 체크를 해제하고 ‘콤보 수’ 변수와 ‘++’로 연결하고 ‘Play Anim Montage’ 노드에 연결한다. - ‘공격 종료’ 이벤트 노드에 ‘콤보 수’ 변수를 Set으로 연결하고 ‘0’으로 초기화한다. - 콤보가 여러개라면 다음 애니메이션에도 노티파이를 연결한다.
콤보 애니메이션 허리 고정 문제 해결법
애니메이션 클릭 - 창 - 애님 슬롯 매니저 체크 - 슬롯 추가 클릭 - 상반신 슬롯과 전신 슬롯 생성 - ABP 파일 - 상반신 슬롯을 사용하는 노드의 마지막 핀을 끌어서 ‘Saved Pose’를 검색하고 이름을 지정한다. - 슬롯 ‘ 본별로 레이어로 블랜딩 노드들을 복붙한다.(비슷하게 동작한다.) - ‘상반신 포즈’ 이름을 검색하고 연결한다. - 슬롯을 ‘전신 슬롯’ 이름으로 변경한다. - ‘본 별로 레이어로 블렌딩’ 노드를 클릭 - 디테일 - 레이어 설정에서 본 이름을 애니메이션을 구분할 본의 이름으로 변경한다. (여기서는 root(전신))
슬롯을 이용해서 블랜딩을 하나 더 만든다.
그룹은 슬롯을 묶으려는 이름일 뿐 의미는 없다.
대체로 허리를 기준으로 기본 ‘ 상반신 ‘ 하반신 ‘ 전신 으로 구분한다.
슬롯을 추가했다면 ABP 파일에 슬롯을 검색하고 넣어야 슬롯에 있는 애니메이션이 동작한다.
사망 처리 (미완성)
사망 커스텀 이벤트 생성
적 블루프린트 - 우클릭 후 커스텀 이벤트 생성(사망) - AnyDamage 이벤트 노드의 Dead 출력 핀을 끌고 ‘사망’ 이벤트 검색
사망 애니메이션 편집 (쓸데 없는곳은 단축시키고, 늘리고 싶은 부분은 늘리고)
사망 애니메이션 스켈레톤 지정 - 애니메이션 편집
애니메이션 파일 - 애니메이션 프레임 우클릭 - ‘프레임 0에서 프레임 (프레임 옮긴 곳)까지 제거’ 클릭 ⇒ 애니메이션을 늘리거나 줄일 수 있다.
사망 몽타주 노티파이 연결
몽타주 생성 - 슬롯 지정 - 적 블루프린트 - ‘사망’ 이벤트 노드 확인 - ‘Play Anim Montage’ 검색 후 몽타주 연결