반응형
멀티게임으로 만들고 있어서 동기화 코드가 조금 추가 되어있습니다. 그것을 생략하고 글을 작성하겠습니다.
무기를 Drop하는 함수를 작성합니다.
EWeapnState는 Drop, Equipped가 있습니다.
FDetachmentTransformRules
- EDetachmentRule::KeepWorld, KeepRelative: 부모에서 분리될 때, 월드 좌표계의 위치, 회전, 스케일을 유지하겠다는 규칙입니다. 만약 KeepRelative를 사용하면, 부모 컴포넌트와의 상대적인 트랜스폼을 유지하게 됩니다.(무기를 떨어뜨리는 장면을 구현할 때는 큰 차이가 없다.)
- bInCallModify: 부모에서 Detach(떨어졌을 때) 되었을 때 해당 오브젝트의 Transform을 즉시 업데이트하겠다는 의미이다.
DetachFromComponent(DetachRules)
- WeaponMesh가 연결되어 있던 부모 컴포넌트로부터 분리될 때 DetachRules의 규칙을 따른게 연결해주는 함수이다.
Weapon의 State에 따른 변화를 잘 봐야한다.
Physics, Gravity, Collsiion를 동시에 껐다 켰다 하고 있다.
그 이유는
1. 무기를 떨어뜨리면 땅에 떨어져야한다.
2. 무기를 창착하기 위해서는 collision이 꺼져야한다.
=> Collision일 켜져있을 때 무기 장착이 안된다! (AttachActor가 동작이 안되다.)
반드시 WeaponState(Physics, Gravity, Collsiion 변경) 이후에 Attach를 해주자.
실수했던 부분
1. Collision을 다시 끄는 부분을 만들지 않았더니, 무기가 Character에세 부착이 되지않았다. (무기를 소지한 애니메이션은 정상적으로 작동이 되었지만,,,)
2. ECollisionEnabled::Query가 무엇을 하는지 모르고 있었다.
ECollisionEnabled::Query는 트레이스(trace) 및 오버랩(Overlap) 같은 충돌 관련 쿼리를 허용하는 것이며, 물리 엔진에서 직접적으로 충돌이 발생하지는 않습니다.
반응형
'UE5(언리얼)' 카테고리의 다른 글
[언리얼5/UE5] 채팅창 만들기 (EditableText) (7) | 2024.11.07 |
---|---|
[언리얼5/UE5] Authority, Simulated Proxy, Autonomous Proxy (0) | 2024.10.14 |
[언리얼5/UE5] 자주 쓰는 헤더파일 모음 (0) | 2024.10.06 |
[언리얼5/UE5] UTimelineComponent, UOnTimelineFloat (0) | 2024.10.06 |
[언리얼5/UE5] 언리얼 clinet, server 동기화 (0) | 2024.10.05 |