일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 연습
- 개발일지
- 멀티플레이
- 유니티
- 앱 배포
- 모작
- 팀 프로젝트
- input system
- 길건너 친구들
- HAPTIC
- 오큘러스
- 포트폴리오
- 유니티 GUI
- XR
- OVR
- 유니티 UI
- VR
- 팀프로젝트
- 드래곤 플라이트 모작
- Photon Fusion
- meta xr
- 개발
- ChatGPT
- 가상현실
- 오브젝트 풀링
- CGV
- 유니티 Json 데이터 연동
- meta
- Oculus
- 드래곤 플라이트
- Today
- Total
EasyCastleUNITY
CGV 개발일지 11 (잡은 물체로 pc 플레이어 치기) 본문
https://easycastleunity.tistory.com/209
개발일지 10에서 잡은 플레이어 위치를 동기화를 해보았습니다.
이번에는 물체를 잡아 플레이어를 쳐보도록 하겠습니다.
가장 중요한 점은,
1.실질적으로 충돌하는 콜라이더는 vr 플레이어의 프로젝트에만 있어야 하며,
2.부딫치는 순간, 위치를 동기화 하기 위해, PC 플레이어의 권한을 잠깐 VR 플레이어에게 가져와야 한다는 것입니다.
https://easycastleunity.tistory.com/203
치는 것은 위 포스트에서 설명하고 있습니다.
1번의 중요한 점의 이유는, 부딫치는 콜라이더가 다른 프로젝트에도 있다면, 네트워크 지연으로 인해, 쳐지는 타이밍과 부딫치는 점이 달라지게 되어, 해당 물체가 2번 쳐지는 문제가 발생하며, 위치 동기화는 소유권을 기준으로 하기에,
날아가다가 방향이 달라지는 현상이 생기기도 합니다.
2번의 중요한 점의 이유는, 1번 이유를 설명할 때, 말씀드렸다시피, 위치 동기화는 소유권을 기준으로 동기화 합니다.
그렇기에, 쳤을 때의 물리량은 vr 플레이어의 기준으로 생성이 되게 됩니다. 하지만 소유권이 없다면, pc 플레이어의 기준으로 물리량이 결정되기에, 치는 순간 위치동기화를 하기 위해, 플레이어의 소유권을 가져와야 합니다.
1번 이유
이런점을 유의하여, 마스터라면, 실질적으로 충돌하는 Rigid를 가지고 있지만, 클라이언트라면, Rigid를 가지고 있지 않도록 하였습니다.
현재는 방에 들어오는 순간 Action을 받아서, 마스터라면 clientGo들을 삭제하고, 아니라면 masterGo를 삭제합니다.
이렇게 하면, 들어오는 순간 판단을 하여, 실질적으로 충돌하는 followRigid를 VR 플레이어 즉, 마스터만 가지고 있을 수 있게 합니다.
이렇게 1번의 중요한 점을 해결하였습니다.
2번 이유 - 소유권 가져오기
PC 쪽이 조종하는 Player에 부착되어 있는 PcPlayer의 일부분입니다.
소유권을 가져오기 위해 IPunOwnershipCallbacks 을 가지고 있는 PlayerNetworkGrabbable에 Action들을 구현하였습니다.
부딫치는 순간 onImpactAction이 호출이 되며, vr 플레이어가 권한을 요청합니다.
그리고 쳐져서 날아가다가 땅과 부딫치면, onPlayerRequestAction이 호출이되며, PcPlayerRequest를 RPC로 호출합니다.
그러므로 권한을 요청하는 사람은 PcPlayer가 됩니다.
결론적으로 땅과 부딫치는 순간, 다시 PcPlayer에게 권한이 돌아오게 됩니다.
문제점은 그냥 살짝만 Rigid라는 태그를 가진 물체와 부딫쳐도, 권한을 가져오게 된다는 것인데,
이 문제는, 부딫친 문제의 속도값을 받아 일정치 이하인 경우, 바로 PcPlayer가 권한을 요청하도록 하였습니다.
위의 2가지 가정을 거쳐서, 아래와 같은 영상이 됩니다.
이렇게 잡은 물체로 PC 플레이어 치기 구현이 완료되었습니다.
'CGV(Castle Giant Virtual) 프로젝트 일지' 카테고리의 다른 글
CGV 개발일지 13 (중간정리) (0) | 2023.12.14 |
---|---|
CGV 개발일지 12 (맨손으로 pc 플레이어 치기) (0) | 2023.12.14 |
CGV 개발일지 10 (잡은 플레이어 위치 동기화) (0) | 2023.12.14 |
CGV 개발일지 9(잡은 물체 위치 동기화) (0) | 2023.12.13 |
CGV 개발일지8 (VR 플레이어 손, 머리 위치 동기화) (0) | 2023.12.13 |