Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

시작은 0부터

[Unity] 팀 프로젝트 ACC - 9/29 본문

개발일지

[Unity] 팀 프로젝트 ACC - 9/29

0base 2022. 9. 29. 20:47

오늘 작업 시간 : 1.25MH(10h)

 

   어제부터 오늘까지 '자신'을 제외한 플레이어에게만 충돌 판정이 되는 미사일 아이템을 구현하기 위해 종일 매달렸다.

견문이 좁아 조건문만 이리저리 수정해가면서 사실상 큰 차이가 없는 접근방법으로 자기자신을 구분하려고 했지만 실패했다. PhotonView.IsMine 인 플레이어만 Awake 에서 Tag 를 변경하여 다른 플레이어와 구분하는 방법을 알려준 동기의 조언을 참고하여 태그를 바꿔봤지만 잘 되지 않아, 다른 접근법들을 이용하여 적용해보았지만 잘 되지 않았다. 그리고 태그 변경으로 구분하는 방법을 알려준 동기분의 추가적인 조언을 받아 자신을 구분하는 방법을 해결하였다. 그리고 이 방법이 나에게는 너무도 놀라워 기록해둔다.

 

플레이어가 미사일을 생성할 때, 미사일 Instantiate() 함수를 실행과 동시에 해당 함수로 생성한 오브젝트에 AddComponent() 함수로 미사일 스크립트를 추가한다. 그러면 네트워크 상에서는 미사일을 쏜 플레이어의 클라이언트 상에서만 미사일에 미사일스크립트가 달리게 되고, 다른 클라이언트 상에서는 스크립트가 없는 미사일로 존재한다.

미사일은 플레이어 자신을 나타내는 태그와 충돌처리를 무시하기 때문에, 자신의 클라이언트 상에서는 미사일과 충돌하지 않고, 자신의 리모트가 존재하는 다른 클라이언트상에서는 미사일 스크립트가 없기 때문에 충돌이벤트가 발생하지 않는다. 

 

그리고 미사일을 쏘았을 때, 미사일의 위치값이 동기화되기 전에 미사일을 쏜 클라이언트 상에서 충돌판정이 일어나면, 미사일을 쏜 클라이언트 상에서는 충돌판정이 일어나서 미사일이 사라진 상태지만, 다른 클라이언트 상에서는 위치값이 동기화되지 않아 충돌처리가 되지 않았는데 삭제처리가 동기화되어 충돌전에 사라져버리는 현상이 발생한다. 이 문제를 처리하기 위해 미사일의 충돌판정에 이벤트를 발생시키는 것이 아니라, 미사일이 충돌했을 때 나타나는 충돌이펙트(파티클)에 충돌처리를 하여 충돌이벤트 처리를 하는 것이다.

 

그저께부터 1.5일동안 해결하지못했던 미사일 플레이어방향 기준으로 직선으로 쏘는 문제는 교수님의 도움으로,

어제부터 1.5일동안 해결하지 못했던 네트워크 상에서 플레이어가 자신이 쏜 미사일의 충돌판정에서 자신을 제외하는 문제는 동기의 도움으로 해결하였다. 쉽게 생각했던 미사일 아이템 구현 과정에서 적용한 기능 구현의 핵심은 결국 스스로 하지 못했다. 충돌판정을 처리하는 동기의 해결방법은 제대로 이해했지만, 직선으로 쏘기 위해 교수님의 도움을 얻어 구현한 Transform 과 Quarternion 관련 문제는 개념은 얼추 이해했으나 코드를 '완벽히' 이해한 것이 아니기 때문에 나중에 이 부분들은 다시 보면서 공부를 해야겠다.

 

'개발일지' 카테고리의 다른 글

[Unity] 팀 프로젝트 ACC - 10/4  (0) 2022.10.04
[Unity] 팀 프로젝트 ACC - 10/3  (0) 2022.10.04
[Unity] 팀 프로젝트 ACC - 9/28  (0) 2022.09.28
[Unity] 팀 프로젝트 ACC - 9/26  (0) 2022.09.27
[Unity] 팀 프로젝트 ACC - 9/22  (0) 2022.09.22