※ 개인적인 공부를 위해 포스팅 하는 글입니다.
#충돌
ㆍ 간단하게 누군가와 오버랩이 감지되면 충돌이 감지되는거... C++에서 보자
#누가 들고있을까?
ㆍ 당연히 Player의 캡슐 컴포넌트로 접근을 해야겠다. 캐릭터로 만들었으니 캡슐 컴포넌트는 있겠다
ㆍ CollisionEnabled를 설정해주고
BeginPlay에서 이렇게 정의해 주자, 타고타고 들어가보면
Signature.. 매개변수를 참고하기위에 한번 더타고 가자
ㆍ 이런 델리게이트 하나를 발견할 수 있다. 이걸 일단 복사해보자.
ㆍ 매개변수를 OverlappedComponent부터 싹 긁어왔다. 쉼표는 좀 제거해줬고,
반드시 UFUNCTION() 을 붙혀줘야 리플렉션 시스템 적용된다.
ㆍ 이렇게 함수 바인드 해주면 준비가 다됐다.
※ 블프에선 이벤트 C++에선 델리게이트를 이용한 콜백방식
※ 충돌에 대한 작동 방식은 가해자쪽 보단 피해자쪽으로 설계하는게 자연스럽다. 플레이어가 아이템을 먹는다 보단 아이템이 플레이어에게 먹혔다 느낌으로
# 사실 위 코드자체는 매우 간단한데, 델리게이트 부분을 좀 더 자세히 봤다.
ㆍ C#에선 델리게이트라는 기능 자체를 지원하고, 델리게이트 체인을 통해 여러개를 묶을 수도 있다.
ㆍ C++언어에선 델리게이트를 지원 안한다,,,, (함수포인터, std::function 등등 있긴 하지만 다르다)
ㆍ 네이티브 언어에서 맴버함수 포인터에 대한 부분.
ㆍ C++에서 클래스의 맴버 함수를 함수포인터로 저장할 땐 그 클래스 객체에 대한 주소와 맴버함수에 대한 주소가 세트로 필요함
ㆍ 언리얼에서 엄청난 노력으로 내부적으로 델리게이트를 만들어 주는 것이니 인자를 전달 해 주자. C++문법에서 델리게이트를 구현하기 위해 필요한 것
ㆍ 이렇게 언리얼에서 델리게이트를 구현하려고 여러가지 쑈를 해놨다. 언리얼 공식문서의 델리게이트는 꼭 읽어보자
ㆍ 이렇게 만들어보면 다양한 옵션들이 있는데 하나를 골라서 작업하면되겠다.
# 언리얼의 델리게이트 마무리
ㆍ 왼쪽이 언리얼 델리게이트고 오른쪽이 C# 델리게이트다. 델리게이트 처럼 구현할라고 언리얼에서 해준거다.
ㆍ 바인드 람다,스태틱,오브젝트 등등 시리즈가 정말 많다.
ㆍ 뭐 이렇게 여러가지가 있다. 공식문서에 자세히 나와있으니 필요할때 찾아보자
ㆍ 아까 위에서 긁어온 코드의 델리게이트 부분이다. 파라미터6개, 멀티캐스트, 블루프린트와 호환 뭐 이런 옵션이 들어가있는것
언리얼 델리게이트 공식문서
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
데미지 처리와 애니메이션 노티파이 (0) | 2024.10.23 |
---|---|
(충돌)마우스 하이라이트와 추적과 공격 (0) | 2024.10.22 |
(충돌) 프리셋과 트레이스 (0) | 2024.10.21 |
충돌의 기초 (0) | 2024.10.21 |
애니메이션 템플릿과 Top-Down 뷰 컨트롤러 (1) | 2024.10.20 |