상세 컨텐츠

본문 제목

photon GameObject 위치 이동 potal 사용법

정리_모음

by go_ra_ni 2022. 8. 17. 00:25

본문

728x90

기존 위치 변환에 사용했던 코드는 

gameObject1.transform.position = new Vector3(0,0,0);
gameObject2.transform.position = new Vector3(0,0,0);

과 같은 형태이다.

 

포톤 멀티플레이 게임을 만들 때 이 코드를 사용하여 포탈을 만들려고 하니 동기화 오류가 발생했다.

(1개만 이동하는 경우는 오류가 발생할 확률이 낮으나 여러 객체를 동시 이동하려 할 때 오류가 발생했다.)

 

여러번 테스트를 통해 생각해낸 원인은 타이밍 문제였다.

 

멀티 플레이에서는 2개 컴퓨터의 각자 입장을 생각해야하는데

오류가 발생하는 상황을 가정해보자.

 

 프레임 별로 그려보자면

초기 상태
gameobject1 이동됨

여기서 1 유저의 정보가 2 유저에게 전송된다고 하면

동기화 됨

 

코드 순서에 따라 gameobject2 이동됨

2번 오브젝트가 이동 됐지만 바로 다음 순서로 2번 유저의 정보가 1번 유저에게 전송된다고 하자

최종 형태

결국 2번 오브젝트는 이동이 되지 않은 모습으로 유지되는 것처럼 보이는 오류가 생길 수 있다.

 

해결방법:

 

스크립트에

Public PhotonView PV;



PV.RPC("TP1", PhotonTargets.All);


[PunRPC]
void TP1(){
MyPlayer.position = new Vector3(59.611f, 25.67776f, 317.791f);
}

PunRPC 호출을 통해 모든 유저에게 위치 정보 갱신을 전송한다.

 

개발하면서 할 것:

photon 동기화 서순 파악하기

RPC 함수 작동 원리 파악하기

728x90

'정리_모음' 카테고리의 다른 글

selenium 차단 회피 시도해본 것 정리  (0) 2022.09.07
photon bulid 창과 unity 내부 game씬 동기화 문제  (0) 2022.08.16
yolov5 class 한글 폰트 적용  (0) 2022.04.09
CSS 정리  (0) 2021.08.09
HTML 태그 정리  (0) 2021.08.04

관련글 더보기