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 - 10/4 본문

개발일지

[Unity] 팀 프로젝트 ACC - 10/4

0base 2022. 10. 4. 10:47

오늘 작업 시간 1.25MH(10H)

 

 

 

"검색은 내가 원하는 코드를 구현하기 위한 '키워드'를 찾는 과정이다." 

 

    교수님의 말씀을 듣고나서 맨땅에 헤딩하는 격으로 아는 범위 안에서 조금씩 코드를 수정해보면서 될 때까지 기능구현을 위해 매달리던 나의 방식이 잘못되었음을 느꼈다. 기존에는 막히는 부분은 검색을 해서 원하는 코드가 있을 경우 원리가 이해가 되는 경우 가져오고, 원하는 코드를 찾지 못할 때는 그냥 아는 범위 내에서 구현하려고 했었다. 나의 검색실력의 문제도 있겠지만 애초에 내가 원하는 바와 정확히 일치하는 코드를 구하는 것은 어려울 것이다. 구글링은 코드를 찾는 것이 목적이 아닌, 내가 구현하고자 하는 기능의 작동 원리를 파악하기 위한 키워드들을 하나씩 알아가는 과정이다. 

성격상 뭔가 될것같다 싶으면 코드를 조금씩 수정해가면서 붙잡는 버릇이 있는데 이를 개선하고, 구글링을 통해 키워드를 찾으면서 '아는 범위'를 확장시키는 것이 급선무인 것 같다.

 

 

새로 알게 된 것.

 

[ Photon ]

PhotonNetwork.Instantitate() 함수를 이용하여 생성하면, 해당 함수를 쓴 오브젝트의 클라이언트가 생성을 했기 때문에 생성한 오브젝트의 클라이언트가 'Owner'가 된다. PhotonNetwork.Destroy() 함수를 이용해 오브젝트를 삭제 처리할 때, PhotonView.RPC("func", RPCtarget.AllViaServer) 함수를 이용해 Destroy() 함수를 실행하려고 했더니, Destroy() 실행 권한은 Owner에게만 있다는 오류가 뜬다.

Destroy() 는 Instantiate()를 한 오브젝트의 클라이언트(Owner)만 할 수 있으며, Owner가 아닌 다른 클라이언트가 다른 클라이언트로부터 생성된 오브젝트를 삭제할 수 없다.

 

using Photon.Pun을 사용하고 클래스를 MonobehaviorPun 을 상속하도록 설정하면, PhotonView 는 GetComponent<PhotonView>() 로 굳이 불러오이지 않더라도 'photonView' 함수를 사용하면 사용할 수 있다.

" photonView " " pv = GetComponent<PhotonView>() " 는 동일한 코드이다.

 

[ Don't Destroy OnLoad ]

유니티에서 씬을 전환하면, 기존의 씬에 있던 게임오브젝트들은 사라진다. 그런데 DontDestroyOnLoad의 자식으로 들어간 오브젝트들은 씬을 전환해도 사라지지 않는다. 모든 씬에서 사용되는 게임 매니저 오브젝트 등에 사용할 수 있다.

 

[ RigidBody.AddTorque ]

기존에는 리지드바디에 AddForce() 함수를 이용해 X, Y, Z 축으로만 힘을 주는 방법을 알고 있었는데, 레이싱 게임 바나나 아이템(밟으면 돌면서 미끄러짐)을 구현하기 위한 방법을 찾던 중에 알게 된 함수. 검색해보면서 사용법을 적용해봤는데 휠 콜라이더를 사용하면서 충돌이 일어나는 건지 Rotate Y 축으로만 값을 주어 회전하도록 했는데 AddTorque 값을 받을 때 초반에 튀어오르는 현상이 발생했다.

 

튀어오르는 현상이 마음에 들지 않아, transform.rotation 값에 Quarternion.Euler() 함수를 이용해 Y값을 주어 리지드바디에 관계없이 고정적으로 회전시키는 방법과 WheelCollider의 가속도에 따른 미끄러짐 값을 수정하여 가속이 붙을 때 알아서 미끄러지면서 회전하도록 하는 방법을 고민했는데, 후자가 좀 더 자연스럽지만 후자의 경우 OnTriggerEnter 이벤트를 이용해 닿는 즉시 미끄러지는 값을 수정하여 미끄러지도록 설정했음에도 간헐적으로 미끄러지는 처리가 지연되는 현상이 있다. 이 현상이 불편해서 transform.rotation을 이용해 회전시키고 코루틴을 이용해 설정한 시간동안만 계속 Euler Y값을 넣어 회전하도록 했는데, 이 경우에는 간헐적으로 아예 회전처리가 안되는 문제가 발생했다. 둘 다 원인을 정확히 파악하지 못했지만 우선은 처리가 늦더라도 미끄러지는 전자의 방법을 채택했다.

 

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

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