Не работает Raycast в юнити с PUN2(Photon)

Общие вопросы о Unity3D

Не работает Raycast в юнити с PUN2(Photon)

Сообщение MrAfitol 31 дек 2021, 12:58

Raycast работает только у MasterClient, вот код:
Синтаксис:
Используется csharp
    private PhotonView view;
    private GameObject Key01;

    [SerializeField] private AudioClip audioPickupKey;
    [SerializeField] private Camera goCamera;

    private AudioSource audio_p;
    public bool PickupKey01;

    private void Awake()
    {
        view = GetComponent<PhotonView>();
        if (view.IsMine)
        {
            Key01 = GameObject.FindGameObjectWithTag("Key01");
            audio_p = GetComponent<AudioSource>();
        }
    }

    void Update()
    {
        if (view.IsMine)
        {
            RaycastHit hit;
            if (Physics.Raycast(goCamera.ScreenPointToRay(Input.mousePosition), out hit))
            {
                GameObject obj = hit.collider.gameObject;

                if (obj == Key01 && Vector3.Distance(transform.position, Key01.transform.position) < 5)
                {
                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        audio_p.PlayOneShot(audioPickupKey);
                        PhotonNetwork.Destroy(Key01.GetPhotonView());

                        PickupKey01 = true;
                    }
                }
            }
        }
    }
 
MrAfitol
UNец
 
Сообщения: 29
Зарегистрирован: 10 дек 2021, 22:07

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение Alkos26Rus 02 янв 2022, 12:36

Может ты хотел сказать что работет только у владельца? Вот у тебя даже проверка if (view.IsMine)
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение MrAfitol 02 янв 2022, 15:29

Alkos26Rus писал(а):Может ты хотел сказать что работет только у владельца? Вот у тебя даже проверка if (view.IsMine)

Я с ней и без нее пробовал, работает все-равно у MasterClient, тот кто создал сервак
MrAfitol
UNец
 
Сообщения: 29
Зарегистрирован: 10 дек 2021, 22:07

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение Alkos26Rus 02 янв 2022, 17:18

MrAfitol писал(а):
Alkos26Rus писал(а):Может ты хотел сказать что работет только у владельца? Вот у тебя даже проверка if (view.IsMine)

Я с ней и без нее пробовал, работает все-равно у MasterClient, тот кто создал сервак

Ну у тебя стоит исключение по владельцу, конечно же мастер клиент тоже является владельцем своих PhotonView. Вобщем тебе нужно отправлять сообщения если хочешь чтоб на клиентах тоже работало.

Примерно так, хз будет работать или нет, так как не знаю как у тебя все устроено, но вобще тебе нужно изучить хотябы базу по фотону, такое ощущение что ты скопировал чей то код и не знаешь что за что отвечает
Синтаксис:
Используется csharp
    private PhotonView view;
    private GameObject Key01;

    [SerializeField] private AudioClip audioPickupKey;
    [SerializeField] private Camera goCamera;

    private AudioSource audio_p;
    public bool PickupKey01;

    private void Awake()
    {
        view = GetComponent<PhotonView>();
        if (view.IsMine)Key01 = GameObject.FindGameObjectWithTag("Key01");
        audio_p = GetComponent<AudioSource>();
    }

    void Update()
    {
        if (view.IsMine)
        {
            RaycastHit hit;
            if (Physics.Raycast(goCamera.ScreenPointToRay(Input.mousePosition), out hit))
            {
                GameObject obj = hit.collider.gameObject;

                if (obj == Key01 && Vector3.Distance(transform.position, Key01.transform.position) < 5)
                {
                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        view.RPC("PickupKey", PhotonTargets.AllBuffered);
                        PhotonNetwork.Destroy(Key01.GetPhotonView());
                    }
                }
            }
        }
    }

[PunRPC]
public void PickupKey()
{
audio_p.PlayOneShot(audioPickupKey);
PickupKey01 = true;
}


 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение MrAfitol 02 янв 2022, 17:45

Alkos26Rus писал(а):
MrAfitol писал(а):
Alkos26Rus писал(а):Может ты хотел сказать что работет только у владельца? Вот у тебя даже проверка if (view.IsMine)

Я с ней и без нее пробовал, работает все-равно у MasterClient, тот кто создал сервак

Ну у тебя стоит исключение по владельцу, конечно же мастер клиент тоже является владельцем своих PhotonView. Вобщем тебе нужно отправлять сообщения если хочешь чтоб на клиентах тоже работало.

Примерно так, хз будет работать или нет, так как не знаю как у тебя все устроено, но вобще тебе нужно изучить хотябы базу по фотону, такое ощущение что ты скопировал чей то код и не знаешь что за что отвечает
Синтаксис:
Используется csharp
    private PhotonView view;
    private GameObject Key01;

    [SerializeField] private AudioClip audioPickupKey;
    [SerializeField] private Camera goCamera;

    private AudioSource audio_p;
    public bool PickupKey01;

    private void Awake()
    {
        view = GetComponent<PhotonView>();
        if (view.IsMine)Key01 = GameObject.FindGameObjectWithTag("Key01");
        audio_p = GetComponent<AudioSource>();
    }

    void Update()
    {
        if (view.IsMine)
        {
            RaycastHit hit;
            if (Physics.Raycast(goCamera.ScreenPointToRay(Input.mousePosition), out hit))
            {
                GameObject obj = hit.collider.gameObject;

                if (obj == Key01 && Vector3.Distance(transform.position, Key01.transform.position) < 5)
                {
                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        view.RPC("PickupKey", PhotonTargets.AllBuffered);
                        PhotonNetwork.Destroy(Key01.GetPhotonView());
                    }
                }
            }
        }
    }

[PunRPC]
public void PickupKey()
{
audio_p.PlayOneShot(audioPickupKey);
PickupKey01 = true;
}


 


во-первых я код сам писал, во-вторых ты меня не понял, вот эта функция Physics.Raycast(goCamera.ScreenPointToRay(Input.mousePosition), out hit) не хочет работать на всех кроме MasterClient
MrAfitol
UNец
 
Сообщения: 29
Зарегистрирован: 10 дек 2021, 22:07

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение Alkos26Rus 02 янв 2022, 18:29

так он и не будет работать если ты не отправляешь сообщение
if (view.IsMine) ограничивает
и тут у тебя проверка obj == Key0 а при старте if (view.IsMine){Key01 = GameObject.FindGameObjectWithTag("Key01"); соответственно ни у кого уроме владельца нет Key01
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение MrAfitol 11 янв 2022, 17:43

Alkos26Rus писал(а):так он и не будет работать если ты не отправляешь сообщение
if (view.IsMine) ограничивает
и тут у тебя проверка obj == Key0 а при старте if (view.IsMine){Key01 = GameObject.FindGameObjectWithTag("Key01"); соответственно ни у кого уроме владельца нет Key01

Ключ спавниться у всех, и Key01 не нулевой, и я пробовал без if (view.IsMine), тоже самое
MrAfitol
UNец
 
Сообщения: 29
Зарегистрирован: 10 дек 2021, 22:07

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение MrAfitol 11 янв 2022, 17:51

Alkos26Rus писал(а):так он и не будет работать если ты не отправляешь сообщение
if (view.IsMine) ограничивает
и тут у тебя проверка obj == Key0 а при старте if (view.IsMine){Key01 = GameObject.FindGameObjectWithTag("Key01"); соответственно ни у кого уроме владельца нет Key01

Проблема в том что когда Игрок мастел(Хост) подберает ключ, он берется, а когда другой игрок также делает, но не хочет работать
MrAfitol
UNец
 
Сообщения: 29
Зарегистрирован: 10 дек 2021, 22:07

Re: Не работает Raycast в юнити с PUN2(Photon)

Сообщение Alkos26Rus 11 янв 2022, 18:41

MrAfitol писал(а):
Alkos26Rus писал(а):так он и не будет работать если ты не отправляешь сообщение
if (view.IsMine) ограничивает
и тут у тебя проверка obj == Key0 а при старте if (view.IsMine){Key01 = GameObject.FindGameObjectWithTag("Key01"); соответственно ни у кого уроме владельца нет Key01

Проблема в том что когда Игрок мастел(Хост) подберает ключ, он берется, а когда другой игрок также делает, но не хочет работать

Ты бы хоть объяснил в начале по нормальному, я думал у тебя проблемы с синхронизацией. Запусти мастер клиент на билде, а клиент пусь подключится через редактор, может у тебя ошибки. Так же логи расставь на разных этапах и узнай что именно не срабатывает, а то так гадать до китайской пасхи
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11