Мне кажется, проблема в функции RP C. Когда вы звоните, каждый пользователь получает только событие вызова без параметров. Это означает, что каждый пользователь работает с своим собственным Input.mousePosition , но не от отправителя.
Вы можете использовать параметры, чтобы исправить это:
...
PV.RPC("RPC_MoveOnline", RpcTarget.AllBuffered, Camera.main.ScreenToWorldPoint(Input.mousePosition));
...
[PunRPC]
void RPC_MoveOnline(Vector3 worldPosition)
{
transform.position = new Vector3(worldPosition.x, worldPosition.y, 0);
}
Но это действительно не очень хороший способ ...
Как я вижу, вам нужно синхронизировать положение некоторых объектов для всех пользователей. Намного легче иметь дело с PhotonView компонентом (который уже есть у вашего GO). Просто перетащите GO Преобразование компонента в PhotonView Поле наблюдаемых компонентов в единицу измерения.
Используя это, ВСЕ изменения с преобразованием вашего локального GO будут автоматически синхронизироваться для всех игроков! подробнее здесь
Удачи!)