데미지 입히기
데미지를 입힐 때
총은 FPointDamageEvent를 사용하면 된다.
이 외에도 다른 종류가 있다고하는데 아직 나도 초보이기 때문에 궁금하면 다른 곳을 찾아보길 바란다요... :(
1. FPointDamageEvent
FPointDamageEvent 생성자에 필요한 정보는 다행히 이미 다 구해놓았다.
FPointDamageEvent를 적고 control키를 누르고 클릭을 하면 생성자를 볼 수 있다.
영어 단어가 직관적으로 나와있으니 변수를 잘 넣어주자
2. TakeDamage
TakeDamage는 감사하게도 AActor class 에 존재한다.
우리는 이걸 override해서 재사용하면 된다.
SpawnEmitterAtLoaction 함수를 써서 피격부분 임펙트를 추가했다. (이전 글을 보면 이해가 될 것이다. 간단한 effect추가니까 그냥 넘어가겠다.)
AActor::TakeDamage를 찾아들어가보자
이것과 똑같은 인자를 받게 가상함수를 만들어준다.
(UELOG라고 적고 tab을 누르면 자동완성이 된다), 가운데 인자를 Warning으로 바꾸면 노랑 글씨 로그가 출력되니 보기 편한다.
사망처리
UFunction 을 통해서 Blueprint에 C++ 코드를 나타나게 할 수 있다.
- BlueprintCallable: 이것을 사용해도 괜찮지만
- BlueprintPure: Getter함수( 오브젝트의 어떤 것도 수정하지 않고 싶다) 일 때는 이 함수를 사용하므로서 명시해주자
이렇게 Blueprint에서 확인할 수 있다
근데 BP_MyCharacter (본인 BP_캐릭터 이름) 로 먼저 캐스팅을 해줘야된다.
IsDead 변수를 Setting 하는 건 내가 boolean 변수 1개를 만들어 놓은 것이다.
C++의 IsDead함수로 Blueprint IsDead 변수 값을 세팅한것!
AnimGraph에서 이렇게
BlendPosesByBool로 죽었을 때를 판별하고
애니메이션을 재생해주면 끝!~
달리기 (스프린트)
갑자기 달리기라서 이상한데
사실 그 전부터 달리기 만들려고 했으나 실력이슈로 실패하다가 성공해서 추가합니다.
실패 이유
1. IE_Pressed, IE_Released 를 생각못하고 BindAxis로 만들려고 했음
2. MaxSpeed 조절을 BluePrint에서 하려고 하니 C++와 섞이고, 변경 함수도 못찾는 그냥 실력 이슈
아래 그림을 차례로 보면 이해가 쉬울 것이다.
1. 걷는 속도, 달리는 속도를 변수로 저장한다.
2. Sprint라는 Action에 SprintStart, SprintStop 함수를 바인딩 해준다. ( Edit -> Project Setting -> input 에서 Action에 Sprint 추가 -> 이전에 다룬 적이 있으니 스크린샷은 뺄게요 )
3. 각 함수에서 GetCharacterMovement()->MaxWalkSpeed 를 조정 ( header 파일 추가하는 것을 잊지말자 )
반동
이걸 왜 이제 적냐면...? 간단한거여서 중간에 넣고 포스팅하는 것을 깜박했습니다.. ㅎ..ㅎ
반동은 정말 간단합니다. 우리가 이전에
마우스에 따라 character의 pitch와 yaw를 조정했었죠?
반동은
공격할 때 character의 piech와 yaw를 조정하면 됩니다.
이렇게 추가하면 끝입니다!
저는 나중에 함수로 만들어서 함수 호출하는 것으로 대체했습니다!
헤맸던 부분
1. 헤더 파일을 추가해야지 FPointDamageEvent 생성자레 parameter를 넣어서 만들 수 있더라요.... :(
'UE5(언리얼)' 카테고리의 다른 글
[언리얼/UE5] Online Subsystem 설정하기 (Steam) (0) | 2024.09.23 |
---|---|
[언리얼5/UE5] 멀티플레이개론 및 간단한 실행 (3) | 2024.09.20 |
[언리얼5/UE5] 다양한 총 사용하기 - 2 (피격 대상 판별) (0) | 2024.09.17 |
[언리얼5/UE5] 다양한 총 사용하기 - 1 (파지, 발사 shoot effect) (3) | 2024.09.16 |
[UE5/언리얼5] Animation Retargeting (0) | 2024.09.13 |