Photon Pun 2 меняет положение мышью - PullRequest
0 голосов
/ 18 апреля 2020

Я думаю, что есть проблема между фотоном и положением мыши. Потому что, когда я пытаюсь изменить положение объекта с помощью клавиатуры, он работает успешно, но когда я пытаюсь изменить положение с помощью мыши, он не меняется по сети. Как я могу изменить положение объекта с помощью мыши в сети?

public class SpehreControl : MonoBehaviour
{
    PhotonView PV;
    GameObject sphere1;
    GameObject bt;
    // Start is called before the first frame update
    void Start()
    {
        PV = GetComponent<PhotonView>();
        sphere1 = GameObject.Find("Sphere 1");
        bt = GameObject.Find("BT_1");
    }

    // Update is called once per frame
    void Update()
    {

            if (Input.GetMouseButton(0) && PV.IsMine)
            {
            PV.RPC("RPC_MoveOnline", RpcTarget.AllBuffered);
            }

    }



    [PunRPC]
    void RPC_MoveOnline()
    {
        transform.position = new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x,
           Camera.main.ScreenToWorldPoint(Input.mousePosition).y, 0);

    }

}

1 Ответ

1 голос
/ 18 апреля 2020

Мне кажется, проблема в функции 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 будут автоматически синхронизироваться для всех игроков! подробнее здесь

Удачи!)

...