물리 충돌

CJB_ny·2022년 12월 28일
0

UE4

목록 보기
15/20
post-thumbnail

1. DrawDebug 분석

위에 처럼 DrawDebugCapsule을 사용하기 전에 몇가지를 설정을 해주어야하는데

FVector TraceVec : 엑터의 x축 Forward 벡터방향으로 AttackRange 만큼 뻗는다? 이런거 뻔한거 말고

내가 도형의 회전, 특히 회전행렬을 통해서 회전을 구한다는 거는 아는데 아직 계산하는 방법이나 정확한 원리는 모름 (뭐하는건지는 아는데) 그래서 정확한 원리보다는 대강 어떤 느낌으로 회전행렬 연산을 해주는지 밑줄친 부분

FRotationMatrix::MakeFromZ이거 "다시"분석 해볼려고한다.

이전에도 이거 했었는데 MakeFromX 이부분이다.

이녀석은

MakeFromX는
함수는 입력 파라미터 벡터를 X축으로 하여 새로운 기저를 구축하고, 그 기저로의 회전 행렬을 리턴한다.

라고한다.

그러면 MakeFromZ는 입력 파라미터 벡터를 Z축으로하여 새로운 기저를 구축하고, 그 기저로의 회전행렬을 return하겠네?

https://velog.io/@myverytinybrain/%EC%96%B8%EB%A6%AC%EC%96%BC-DrawDebugCapsule
여기보면은
Forward(X) 축 방향으로 회전시키고 싶다면 FRotationMatrix::MakeFromZ 함수를 사용합니다.
라고하는데
언리얼의 위쪽 방향인 Up(Z)축을 Forward(X)축으로 회전시킬 것이므로 MakeFromZ를 사용하는 것입니다.

빡대가리라 아직 이해가 잘 안간다..

2. MakeFrom Z X Y 정리 ? ❗❗❗

일단 책에서 보면은 캐릭터 시선방향으로 캡슐을 눕히고 싶은 상황인데.

캡슐의 상단으로 향하는 벡터 Z가 캐릭터의 시선 방향과 일치하도록 하고싶은 것임.

따라서 FRotationMatrix의 MakeFromZ 함수에 캐릭터의 시선 방향 벡터를 입력하면은(넣어주면은) 필요한 회전행렬 좌표축을 생성할 수 있다.

TraceVec을 입력으로 넣었으니까 캡슐의 Z축 벡터를 TraceVec 벡터 방향으로 회전할 좌표축을 생성한 것이다.

그리고 FQuat 이거 읽어보도록 하자. 3D 공간에서 축에 대한 회전을 나타낼 수 있는 부동 소수점 쿼터니언입니다.라고하는데

CapsuleRot이 지금 => 탐색에 사용할 도형의 회전을 나타내고 있기 떄문에

캡슐의 Z축 벡터를 캐릭터 시선방향으로 회전행렬을 통해 좌표축을 구한 축에 대한 회전을 CapsuleRot에 대입을 한것임.

3. DelegateBinding

우리가 AnimInstance에서 멀티캐스트 델레게이트 선언해주었는데 이거 바인딩 하는 부분이 델레게이트 바인딩 여기 있다.

AddUObject 함수로 바인딩 할 것인데 약 레퍼런스? 유지한다는데 이게 뭐임??

밑에 글 읽어야됨.

에셋 참조 ❗❗❗

에셋 참조 여기 언리얼 공식 문서 읽어보도록 하자.

FHitResult ❗

실제로 타고 들어가보면 Actor라는 멤버 변수가 weak_ptr로 선언되어 잇음.

weak_ptr사용하면 IsValid()함수를 통해서 사용하려는 Actor가 유효한지 아닌지 점검하고 사용해야한다.

때리다가 죽어서 메모리에서 날라간 녀석일 수도 있으니까.

(UE의 가비지 컬렉터가 알아서 막 수거 해간다 참조를 안하고있는 메모리는)

아이템 쥐기

Sockect이라는 거 지원하는데 이거 갖다 붙이면 됨.

4 .아이템 처먹기 ❗

이거 지금 문제가 있는데 ItemBox ObjectType도 만들고 새 트레이스 채널도 만들고 preset에 ItemBox만들어거 ABCharacter와만 Overlap으로 설정함.

물론 ABCharacer에도 ItemBox와만 곂칩으로 설정함.

그리고 c++코드로 ItemBox SetCollisionProfileName을 ItemBox로도 설정을 했는데

이벤트는 잘 호출 되지만 실제로 통과? 무시하는듯한 모양이 안나옴.

TsubClass ❓❓

이거 C#으로 치면 A클래스에서 B클래스 참조할 경우 말하는 부분임.

언리얼에서는 클래스 정보를 저장하는 변수를 선언할 때 UClass 를 사용할 수 있지만 이를 사용하면 현재 프로젝트에 사용하는 모든 언리얼 오브젝트의 선언이 보이게 된다.

그래서 특정클래스와 상속받은 클래스들로 목록을 한정하도록 TSubcalssof라는 키워드 제공하는 거임 ㅇㅇ.

아이템 생성하기

5. 수정할 부분 + 결과 화면 ❗❗❗❗❗

  1. 지금 딱 처음에 Particle꺼놓았는데 바로 재생되는 부분

  2. 박스랑 Chacter랑 안 곂치는 부분

  3. 아이템 먹어지기는 하지만 기존의 아이템과 곂치는 부분

이거 세개 수정해아함.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글