Problema com mutiplayer
4 participantes
Página 1 de 1
Problema com mutiplayer
Sou bem leigo quando o assunto é multiplayer, mas ja vi alguns vídeos e consegui colocar o player se movimentar e tal, nas duas sessoes multiplayer, o problema está quando eu tento Pegar um objeto, com meu sistema de grab que apenas pega o objeto e coloca como filho do player, entao, no multiplayer acontece o seguinte: o player dono do servidor consegue pegar o objeto, e o player conectado vê tudo normal, o problema ocorre quando o player conectado tenta pegar este objeto, o objeto parece ficar travado, e nao vira filho do player conectado, alguem sabe como resolver?
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Grave um videos se possível, mostrando o que está acontecendo...
Fale quais componentes esse seu objeto contem referentes ao multiplayer. Pois assim fica dificil de saber o que ocasiona isto;
Fale quais componentes esse seu objeto contem referentes ao multiplayer. Pois assim fica dificil de saber o que ocasiona isto;
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Problema com mutiplayer
mano tenta assim oh desativa o script do player vai no script que spawna o player e coloca em baixo da linha que spawna o player GetComponent<NomeDoScriptQueLevitaAsCoisas>.enabled = true;dazentt55 escreveu:Sou bem leigo quando o assunto é multiplayer, mas ja vi alguns vídeos e consegui colocar o player se movimentar e tal, nas duas sessoes multiplayer, o problema está quando eu tento Pegar um objeto, com meu sistema de grab que apenas pega o objeto e coloca como filho do player, entao, no multiplayer acontece o seguinte: o player dono do servidor consegue pegar o objeto, e o player conectado vê tudo normal, o problema ocorre quando o player conectado tenta pegar este objeto, o objeto parece ficar travado, e nao vira filho do player conectado, alguem sabe como resolver?
Unidade3d5- Avançado
- PONTOS : 3030
REPUTAÇÃO : 28
Respeito as regras :
Re: Problema com mutiplayer
- Código:
GetComponent<NomeDoScript>.enabled = true;
Unidade3d5- Avançado
- PONTOS : 3030
REPUTAÇÃO : 28
Respeito as regras :
Re: Problema com mutiplayer
Phph09 escreveu:Grave um videos se possível, mostrando o que está acontecendo...
Fale quais componentes esse seu objeto contem referentes ao multiplayer. Pois assim fica dificil de saber o que ocasiona isto;
Entao, eu nao sei se estou usando a lógica multiplayer correta para meu sistema, pois eu simplesmente coloquei esse objeto sendo filho do player que tentou pegá-lo, e nao fiz nenhuma modificação em nada "multiplayer" do jogo apenas adicionei um network transform no objeto.
Nao estou entendendo muito bem como funciona esse network tranform adicionado no objeto
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Consegui "arrumar" uma parte, agora esta funcionando perfeitamente, mas apenas quando o HOST pega o objeto, mas quando o cliente pega o objeto o mesmo vira filho do player normalmente na tela do cliente, mas na tela do host esse objeto nao sofre nenhuma ação, e quando o cliente larga esse objeto o objeto volta para o lugar de quando ele foi pego pelo cliente, preciso de ajuda
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Você tem que criar um comando que mande para o servidor, e de lá atualizar em todos os clientes, inclusive o que está fazendo a ação... Se tu não fizer um sistema de troca de informações entre client e host, o host não "adivinha" que tu fez a ação...dazentt55 escreveu:Consegui "arrumar" uma parte, agora esta funcionando perfeitamente, mas apenas quando o HOST pega o objeto, mas quando o cliente pega o objeto o mesmo vira filho do player normalmente na tela do cliente, mas na tela do host esse objeto nao sofre nenhuma ação, e quando o cliente larga esse objeto o objeto volta para o lugar de quando ele foi pego pelo cliente, preciso de ajuda
Re: Problema com mutiplayer
recagonlei escreveu:Você tem que criar um comando que mande para o servidor, e de lá atualizar em todos os clientes, inclusive o que está fazendo a ação... Se tu não fizer um sistema de troca de informações entre client e host, o host não "adivinha" que tu fez a ação...dazentt55 escreveu:Consegui "arrumar" uma parte, agora esta funcionando perfeitamente, mas apenas quando o HOST pega o objeto, mas quando o cliente pega o objeto o mesmo vira filho do player normalmente na tela do cliente, mas na tela do host esse objeto nao sofre nenhuma ação, e quando o cliente larga esse objeto o objeto volta para o lugar de quando ele foi pego pelo cliente, preciso de ajuda
Entao eu devo atualizar o meu NetworkTransform?? o que necessariamente eu tenho que atualizar e como faço isso?
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Você deve criar um tipo de sistema de comunicação/sincronização entre o client e host... No caso você utiliza o HLAPI do Unet, pelo que vejo... Pesquise sobre Commands, RPC, que farão o trabalho para ti... O conceito básico seria: você como cliente dá a ação, que manda um comando para o server, que faz a lógica, depois manda e o cliente recebe via RPC. No seu da problema do host conseguir e o cliente não, pois como host não precisa de comandos, por estar hospedado localmente, fazendo via esses meios você garante a sincronização em todos os clientes! De uma lida sobre ações remotas nesse link:dazentt55 escreveu:recagonlei escreveu:Você tem que criar um comando que mande para o servidor, e de lá atualizar em todos os clientes, inclusive o que está fazendo a ação... Se tu não fizer um sistema de troca de informações entre client e host, o host não "adivinha" que tu fez a ação...dazentt55 escreveu:Consegui "arrumar" uma parte, agora esta funcionando perfeitamente, mas apenas quando o HOST pega o objeto, mas quando o cliente pega o objeto o mesmo vira filho do player normalmente na tela do cliente, mas na tela do host esse objeto nao sofre nenhuma ação, e quando o cliente larga esse objeto o objeto volta para o lugar de quando ele foi pego pelo cliente, preciso de ajuda
Entao eu devo atualizar o meu NetworkTransform?? o que necessariamente eu tenho que atualizar e como faço isso?
https://docs.unity3d.com/Manual/UNetActions.html
Qualquer dúvida, de um toque! Abraço, sucesso.
Re: Problema com mutiplayer
recagonlei escreveu:Você deve criar um tipo de sistema de comunicação/sincronização entre o client e host... No caso você utiliza o HLAPI do Unet, pelo que vejo... Pesquise sobre Commands, RPC, que farão o trabalho para ti... O conceito básico seria: você como cliente dá a ação, que manda um comando para o server, que faz a lógica, depois manda e o cliente recebe via RPC. No seu da problema do host conseguir e o cliente não, pois como host não precisa de comandos, por estar hospedado localmente, fazendo via esses meios você garante a sincronização em todos os clientes! De uma lida sobre ações remotas nesse link:dazentt55 escreveu:recagonlei escreveu:Você tem que criar um comando que mande para o servidor, e de lá atualizar em todos os clientes, inclusive o que está fazendo a ação... Se tu não fizer um sistema de troca de informações entre client e host, o host não "adivinha" que tu fez a ação...dazentt55 escreveu:Consegui "arrumar" uma parte, agora esta funcionando perfeitamente, mas apenas quando o HOST pega o objeto, mas quando o cliente pega o objeto o mesmo vira filho do player normalmente na tela do cliente, mas na tela do host esse objeto nao sofre nenhuma ação, e quando o cliente larga esse objeto o objeto volta para o lugar de quando ele foi pego pelo cliente, preciso de ajuda
Entao eu devo atualizar o meu NetworkTransform?? o que necessariamente eu tenho que atualizar e como faço isso?
https://docs.unity3d.com/Manual/UNetActions.html
Qualquer dúvida, de um toque! Abraço, sucesso.
Obrigado pela atenção ai amigo, vou tentar mecher aqui e ver o que consigo fazer logo mais trarei respostas :D
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Estou com problemas com esse [Command]
Eu estou tentando colocá-lo antes de chamar a função para adicionar como parent do player, mas quando eu coloco o [Command] antes da função CmdFuncao() ele nao executa minha função, nao sei o que estou fazendo de errado, ja coloquei a unityEngine.Network, networkBehaviour mas nao chama a função de jeito nenhum.
Eu estou tentando colocá-lo antes de chamar a função para adicionar como parent do player, mas quando eu coloco o [Command] antes da função CmdFuncao() ele nao executa minha função, nao sei o que estou fazendo de errado, ja coloquei a unityEngine.Network, networkBehaviour mas nao chama a função de jeito nenhum.
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
dazentt55 escreveu:Estou com problemas com esse [Command]
Eu estou tentando colocá-lo antes de chamar a função para adicionar como parent do player, mas quando eu coloco o [Command] antes da função CmdFuncao() ele nao executa minha função, nao sei o que estou fazendo de errado, ja coloquei a unityEngine.Network, networkBehaviour mas nao chama a função de jeito nenhum.
Você deve usar a UnityEngine.Networking(O Network é do sistema antigo de multiplayer, o Unet deriva todo do namespace Networking, não se esqueça) e derivar a classe do script via NetworkBehaviour... Dessa forma funcionará!
Re: Problema com mutiplayer
Digitei errado, estou utilizando o Networking e mesmo assim nao esta funcionando, deveria.recagonlei escreveu:dazentt55 escreveu:Estou com problemas com esse [Command]
Eu estou tentando colocá-lo antes de chamar a função para adicionar como parent do player, mas quando eu coloco o [Command] antes da função CmdFuncao() ele nao executa minha função, nao sei o que estou fazendo de errado, ja coloquei a unityEngine.Network, networkBehaviour mas nao chama a função de jeito nenhum.
Você deve usar a UnityEngine.Networking(O Network é do sistema antigo de multiplayer, o Unet deriva todo do namespace Networking, não se esqueça) e derivar a classe do script via NetworkBehaviour... Dessa forma funcionará!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class GrabDrop : NetworkBehaviour
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Poste o script inteiro para darmos uma analisada... No caso você diz que o comando não é executado? Mesmo localmente, quando chamado era como se não tivesse chamado nada, ou ele pelo menos local executa? Explique melhor desde quando você da o input para enviar o comando.
Re: Problema com mutiplayer
Entao peloo que parece nao esta executando nem localmente, eu inicio o jogo, tento pegar o objeto e nao acontece nada, coloquei um debug.log dentro da funcao que pega os objetos e nada. e so nao executa as funções que estao com [Command] antesrecagonlei escreveu:Poste o script inteiro para darmos uma analisada... No caso você diz que o comando não é executado? Mesmo localmente, quando chamado era como se não tivesse chamado nada, ou ele pelo menos local executa? Explique melhor desde quando você da o input para enviar o comando.
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
O comando só é executado a partir de um player local... Tem um NetworkIdentity no player setado como local player auth, correto? Fez a verificação se caso for localPlayer apenas para enviar? Poste o script para analisarmos!dazentt55 escreveu:Entao peloo que parece nao esta executando nem localmente, eu inicio o jogo, tento pegar o objeto e nao acontece nada, coloquei um debug.log dentro da funcao que pega os objetos e nada. e so nao executa as funções que estao com [Command] antesrecagonlei escreveu:Poste o script inteiro para darmos uma analisada... No caso você diz que o comando não é executado? Mesmo localmente, quando chamado era como se não tivesse chamado nada, ou ele pelo menos local executa? Explique melhor desde quando você da o input para enviar o comando.
Re: Problema com mutiplayer
Parece que está dando problema pelo fato do meu script estar como filho do player, acho que vou ter que fazer algumas mudanças. Mas eu andei mexendo no sistema de dia/noite e consegui sincronizá-lo os 2, mas nao utilizei o [Command] e sim o [RPC], mais tarde vou tentar colocar RPC no meu sistema de grab tmbrecagonlei escreveu:O comando só é executado a partir de um player local... Tem um NetworkIdentity no player setado como local player auth, correto? Fez a verificação se caso for localPlayer apenas para enviar? Poste o script para analisarmos!dazentt55 escreveu:Entao peloo que parece nao esta executando nem localmente, eu inicio o jogo, tento pegar o objeto e nao acontece nada, coloquei um debug.log dentro da funcao que pega os objetos e nada. e so nao executa as funções que estao com [Command] antesrecagonlei escreveu:Poste o script inteiro para darmos uma analisada... No caso você diz que o comando não é executado? Mesmo localmente, quando chamado era como se não tivesse chamado nada, ou ele pelo menos local executa? Explique melhor desde quando você da o input para enviar o comando.
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Aaaa então provavelmente é isso... O script tem que ser no mesmo local que tenha o NetworkIdentity, ou ser chamado pelo script que esteja pelo menos, talvez...
Re: Problema com mutiplayer
Entao, como eu estou usando o FPS controller da unity ele tem um "filho" e para eu remover esse filho eu teria que fazer grandes modificações, até parar de usar esse FPS controller, dai surgiu a duvida, eu tenho que ter um Network Identity no player e no filho? ou o que eu coloco no filho para que eu consiga usar o [Command] ?
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Envie para um método normal do filho no script pai, nesse método você envia um comando...
Re: Problema com mutiplayer
Eu nao sei se estou fazendo as coisas corretamente, me corrija se eu estiver errado:
Por exemplo para um sistema dia noite, eu coloco o network identity com o Server Only marcado pois o dia noite será igual para todos os player.
Outra coisa, eu nao estou entendendo como funciona esse network identity, se eu deixar as duas caixinhas desmarcadas significa oq? se eu deixar só server only como o objeto irá trabalhar, e quando eu deixar apenas localPlayer?
Se possivel me passe algum tutorial que explica essa parte do multiplayer, pois eu acho que vi alguns videos e acho que "aprendi" errado essa parte.
Por exemplo para um sistema dia noite, eu coloco o network identity com o Server Only marcado pois o dia noite será igual para todos os player.
Outra coisa, eu nao estou entendendo como funciona esse network identity, se eu deixar as duas caixinhas desmarcadas significa oq? se eu deixar só server only como o objeto irá trabalhar, e quando eu deixar apenas localPlayer?
Se possivel me passe algum tutorial que explica essa parte do multiplayer, pois eu acho que vi alguns videos e acho que "aprendi" errado essa parte.
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: Problema com mutiplayer
Como ele diz no nome, é um Identificador da Rede, Identidade da Conexão. Server only, ele funcionará e será spawnado apenas no server, caso seja executado no cliente, não será ativo, local player significa que apenas o objeto será controlado pelo cliente que o pertence ou que tenha autoridade. De uma olhada no manual que lá explica bem detalhado:
https://docs.unity3d.com/Manual/class-NetworkIdentity.html
https://docs.unity3d.com/Manual/class-NetworkIdentity.html
Re: Problema com mutiplayer
Valeu vou tentar estudar isso aqui, vamos ver, logo mais trarei respostasrecagonlei escreveu:Como ele diz no nome, é um Identificador da Rede, Identidade da Conexão. Server only, ele funcionará e será spawnado apenas no server, caso seja executado no cliente, não será ativo, local player significa que apenas o objeto será controlado pelo cliente que o pertence ou que tenha autoridade. De uma olhada no manual que lá explica bem detalhado:
https://docs.unity3d.com/Manual/class-NetworkIdentity.html
dazentt55- Avançado
- PONTOS : 3013
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Tópicos semelhantes
» Problema com Sprite
» Problema com o ThirdPersonController
» Problema com NullReferenceException
» Problema com AI
» Problema na verificação de tag
» Problema com o ThirdPersonController
» Problema com NullReferenceException
» Problema com AI
» Problema na verificação de tag
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos