Oi, Markondes! Muito obrigado pelo comentário e por apoiar o canal. :D Sobre a sua sugestão, só para que eu entenda exatamente que tipo de vídeo você gostaria, ocê se refere à um vídeo ensinando como montar uma interface de Menu com algumas opções para selecionar (jogar, créditos e etc.) e mudar entre essas cenas?
Eu segui o tutorial, quando o personagem toca na porta ele não transita de nivel , só colidi, eu já tentei ativar desativar os colisores mas não tem solução.
Olá! Você pode nos dar mais detalhes sobre o problema? 1. Como estão configurados os Colliders do personagem e da porta? Algum deles está com a opção "Is Trigger" marcada? 2. O que você quer dizer com "só colide"? Isso significa que o collider está impedindo o jogador de mover em direção à porta?
só colidi" eu quero dizer que quando o personagem tem contato com a porta mas não funciona a transição de cena , no caso dos colisores serem ativados como o da porta, o personagem atravessa, e quando eu ativo o colisor do proprio personagem ele atravessa o chão da cena.
Entendi! Precisamos ter certeza de que o contato entre os dois colliders está sendo identificado. No vídeo, nós adicionamos um método chamado "OnTriggerEnter2D" no script da Porta. Você pode adicionar o comando Debug.Log no método OnTriggerEnter2D para confirmarmos se o contato está sendo identificado corretamente? O método OnTriggerEnter2D ficará assim para o teste: void OnTriggerEnter2D(Collider2D collider) { Debug.Log("O objeto " + collider + " encostou na porta."); } Se o contato estiver sendo identificado carregamente, uma mensagem será exibida no Console da Unity, informando qual objeto entrou em contato com a porta. Caso nenhuma mensagem seja exibida, precisaremos revisar as configurações do Personagem e da Porta.
Olá, Tenho um projeto com um canvas na minha primeira cena são botões que abrem paineis, status de personagem... mas não consigo fazer eles ficarem funcionais na cena nova
Olá! Alguma mensagem de erro aparece no Console da Unity quando o problema acontece? Todos os Scripts e GameObjects necessários para o funcionamento desse Canvas também estão sendo levado para a outra cena? Se possível, mande aqui nos comentários o trecho do código que não está funcionando, para que possamos analisar.
@@MustacheGameStudioTV Copiei o Canvas e todos seus objetos para a proxima cena manualmente. Só usei o DontDestroy no jogador, as informações do jogador carregam pra proxima cena, mas alguns detalhes como minha barra de vida, barra de energia somem do meu painel de status. um outro painel acessa as informações carregadas normalmente.
@@cafe6787, algum erro é exibido no Console da Unity quando isso acontece? Ou apenas algumas elementos da UI somem, mas o restante do jogo funciona normalmente sem erro? Como esse canvas está configurado? Qual é o render mode da câmera? Overlay, Camera Space ou World Space?
@@MustacheGameStudioTV NullReferenceException: Object reference not set to an instance of an object UIManager.AtualizarUIPersonagem () (at Assets/Scripts/Managers/UIManager.cs:95) UIManager.Update () (at Assets/Scripts/Managers/UIManager.cs:89)
@@cafe6787, de acordo com a mensagem de erro, alguma variável com valor null está sendo usada na linha 95 do script UIManager. Você pode mandar aqui nos comentários o conteúdo da linha 95 do UIManager?
Opa! Existem algumas formas de fazer isso. Neste exemplo eu adicionei o meu personagem em todas as cenas. O jeito mais fácil de fazer isso é criando um prefab e reutilizando ele nas demais cenas. Outra forma de migrar um GameObject, seja ele qual for, para outra cena é usar o método DontDestroyOnLoad, que como o próprio nome sugere, não destrói um objeto após uma nova cena ter sido carregada. Para utilizar o DontDestroyOnLoad basta executar o seguinte comando no método Start do script do seu personagem: DontDestroyOnLoad (this.gameObject); Dessa forma, seu personagem será mantido no jogo mesmo após o carregamento de uma nova cena. Nesse caso, pode ser necessário reposicionar ele antes de iniciar a partida na nova cena.
@@guerme pode, sim. O problema dessa abordagem é que qualquer modificação que você fizer no seu personagem, precisará ser replicada/refeita em todas as outras cenas. A vantagem de usar prefab nessas situações é que fica mais fácil alterar o objeto, permitindo que a alteração seja feita uma única vez e já impactando todas as cenas onde esse objeto é utilizado.
salve mano, tenho uma duvida, fiz um menu de pause e quando volto a cena do jogo como um resumo, ele simplesmente zera tudo, como se tivesse resetado o jogo. no meu caso, no jogo tem moedas, metros percorridos e vida, todas vez q entro no menu, tudo volta como se tivesse acabado de iniciar o game. tem como me dar uma força?????
Oi, Mateus! Pelo descrição do problema, me parece que o que está acontecendo é o seguinte: Como o seu jogo e o menu são cena separadas, você provavelmente está carregando a cena do menu utilizando o modo de carregamento padrão, que é o modo "Single", onde somente uma cena fica ativa por vez. Dessa forma, quando você carrega a cena do Menu, a cena do jogo é automaticamente descarregada. A partir do momento em que você decide voltar para o jogo, a cena do jogo é carregada novamente, do zero, recriando todos os objetos que a compõem, inclusive as moedas que eventualmente haviam sido coletadas. A solução pode ser simples, dependendo de como as suas cenas (Menu e Jogos) estão sendo construídos. Caso o seu Menu seja somente uma tela (UI/Canvas), podemos pensar na possibilidade de manter o menu e o jogo em uma mesma cena, ativando e desativando a interface do jogo e do menu quando necessário. Outra possibilidade é manter o jogo e o menu em cenas separadas, da forma que está hoje, porém, alterar a forma como o carregamento/descarregamento dessas cenas é realizados. Para carregar uma cena na Unity, nós podemos usar o método SceneManager.LoadScene("nomeDaCena"), informando somente o nome da cena que queremos carregar, como parâmetro. Porém, esse mesmo método permite que um segundo parâmetro seja informado. Esse segundo parâmetro é o modo em que a cena deve ser carregada. Anterior eu citei que o modo padrão é o modo Single, onde somente uma cena fica ativa por vez. Além desse modo, também existe o modo "Additive", que permite que duas ou mais cenas sejam carregas e permaneçam ativas simultaneamente. Nesse caso, basta executar o carregamento da cena da seguinte forma: SceneManager.LoadScene("nomeDaCena", LoadSceneMode.Additive); Como as duas cenas estarão ativas, isso significa que ambas as cenas estarão sendo processadas, permitindo que o jogador continue jogando, mesmo quando o menu estiver visível. Para resolver isso, você precisará gerenciar quais GameObjects estarão ativos no seu jogo, ativando e desativando os objetos das cenas do Menu e do Jogo. Em resumo, você pode manter as duas cenas carregadas ao mesmo tempo, para que elas não precisem ser destruídas (descarregadas) e construídas novamente durante a transição de cena. Porém, precisará garantir que o GameObjects do Menu estarão desativando enquanto o jogador estiver interagindo com a cena do Jogo, e desativar os GameObjects do Jogo, quando o jogador estiver interagindo com o Menu. Como a explicação acabou sendo muito grande, caso tenha qualquer dúvida sobre esse processo, pode perguntar. Vamos aproveitar para adicionar na nossa lista de próximos vídeos, um conteúdo sobre carregamento aditivo de cenas. Muito obrigado pela pergunta.
Oi, Mister Kame! Ficamos felizes em saber que o vídeo te ajudou a entender. :D Se tiver qualquer dúvida, ou sugestão de vídeo, pode mandar aqui nos comentários.
Mano, que video incrível, você poderia fazer um video sobre o processo de criação de menu?
Oi, Markondes!
Muito obrigado pelo comentário e por apoiar o canal. :D
Sobre a sua sugestão, só para que eu entenda exatamente que tipo de vídeo você gostaria, ocê se refere à um vídeo ensinando como montar uma interface de Menu com algumas opções para selecionar (jogar, créditos e etc.) e mudar entre essas cenas?
@@MustacheGameStudioTV Olá, como montar uma interface de menu é a sugestão. Ótimo seus vídeos.
Muito obg cara, vc me ajudou muito, o tutorial ficou muito bom.
Muito obrigado por apoiar o canal!
Eu segui o tutorial, quando o personagem toca na porta ele não transita de nivel , só colidi, eu já tentei ativar desativar os colisores mas não tem solução.
Olá! Você pode nos dar mais detalhes sobre o problema?
1. Como estão configurados os Colliders do personagem e da porta? Algum deles está com a opção "Is Trigger" marcada?
2. O que você quer dizer com "só colide"? Isso significa que o collider está impedindo o jogador de mover em direção à porta?
só colidi" eu quero dizer que quando o personagem tem contato com a porta mas não funciona a transição de cena , no caso dos colisores serem ativados como o da porta, o personagem atravessa, e quando eu ativo o colisor do proprio personagem ele atravessa o chão da cena.
Entendi! Precisamos ter certeza de que o contato entre os dois colliders está sendo identificado.
No vídeo, nós adicionamos um método chamado "OnTriggerEnter2D" no script da Porta. Você pode adicionar o comando Debug.Log no método OnTriggerEnter2D para confirmarmos se o contato está sendo identificado corretamente?
O método OnTriggerEnter2D ficará assim para o teste:
void OnTriggerEnter2D(Collider2D collider) {
Debug.Log("O objeto " + collider + " encostou na porta.");
}
Se o contato estiver sendo identificado carregamente, uma mensagem será exibida no Console da Unity, informando qual objeto entrou em contato com a porta. Caso nenhuma mensagem seja exibida, precisaremos revisar as configurações do Personagem e da Porta.
Olá, Tenho um projeto com um canvas na minha primeira cena são botões que abrem paineis, status de personagem... mas não consigo fazer eles ficarem funcionais na cena nova
Olá! Alguma mensagem de erro aparece no Console da Unity quando o problema acontece?
Todos os Scripts e GameObjects necessários para o funcionamento desse Canvas também estão sendo levado para a outra cena?
Se possível, mande aqui nos comentários o trecho do código que não está funcionando, para que possamos analisar.
@@MustacheGameStudioTV Copiei o Canvas e todos seus objetos para a proxima cena manualmente. Só usei o DontDestroy no jogador, as informações do jogador carregam pra proxima cena, mas alguns detalhes como minha barra de vida, barra de energia somem do meu painel de status. um outro painel acessa as informações carregadas normalmente.
@@cafe6787, algum erro é exibido no Console da Unity quando isso acontece? Ou apenas algumas elementos da UI somem, mas o restante do jogo funciona normalmente sem erro?
Como esse canvas está configurado? Qual é o render mode da câmera? Overlay, Camera Space ou World Space?
@@MustacheGameStudioTV NullReferenceException: Object reference not set to an instance of an object
UIManager.AtualizarUIPersonagem () (at Assets/Scripts/Managers/UIManager.cs:95)
UIManager.Update () (at Assets/Scripts/Managers/UIManager.cs:89)
@@cafe6787, de acordo com a mensagem de erro, alguma variável com valor null está sendo usada na linha 95 do script UIManager.
Você pode mandar aqui nos comentários o conteúdo da linha 95 do UIManager?
Grande ajuda, meu projeto estava parado por causa de uma transição de cenas bugada e que agora esta funcional
Maravilha! Que bom que conseguimos te ajudar. Se tiver qualquer dúvida, pode mandar nos comentários. :D
Como faço pra jogar meu player em outra cena? É necessário criar prefab?
Opa! Existem algumas formas de fazer isso. Neste exemplo eu adicionei o meu personagem em todas as cenas. O jeito mais fácil de fazer isso é criando um prefab e reutilizando ele nas demais cenas.
Outra forma de migrar um GameObject, seja ele qual for, para outra cena é usar o método DontDestroyOnLoad, que como o próprio nome sugere, não destrói um objeto após uma nova cena ter sido carregada. Para utilizar o DontDestroyOnLoad basta executar o seguinte comando no método Start do script do seu personagem:
DontDestroyOnLoad (this.gameObject);
Dessa forma, seu personagem será mantido no jogo mesmo após o carregamento de uma nova cena. Nesse caso, pode ser necessário reposicionar ele antes de iniciar a partida na nova cena.
@@MustacheGameStudioTV Muito obrigado man
@@guerme, se tiver qualquer dúvida, ou sugestão de vídeo, pode mandar nos comentários. :D
@@MustacheGameStudioTV Só mais uma dúvida, eu posso simplesmente copiar e colar o meu player em outra cena?
@@guerme pode, sim.
O problema dessa abordagem é que qualquer modificação que você fizer no seu personagem, precisará ser replicada/refeita em todas as outras cenas.
A vantagem de usar prefab nessas situações é que fica mais fácil alterar o objeto, permitindo que a alteração seja feita uma única vez e já impactando todas as cenas onde esse objeto é utilizado.
salve mano, tenho uma duvida, fiz um menu de pause e quando volto a cena do jogo como um resumo, ele simplesmente zera tudo, como se tivesse resetado o jogo. no meu caso, no jogo tem moedas, metros percorridos e vida, todas vez q entro no menu, tudo volta como se tivesse acabado de iniciar o game. tem como me dar uma força?????
Oi, Mateus!
No seu caso, o menu de pause é uma cena separa da cena do jogo?
correto
@@MustacheGameStudioTV
fica separado, como se fosse uma nova fase
@@MustacheGameStudioTV saberia me ajudar com esse problema man?
Oi, Mateus!
Pelo descrição do problema, me parece que o que está acontecendo é o seguinte:
Como o seu jogo e o menu são cena separadas, você provavelmente está carregando a cena do menu utilizando o modo de carregamento padrão, que é o modo "Single", onde somente uma cena fica ativa por vez. Dessa forma, quando você carrega a cena do Menu, a cena do jogo é automaticamente descarregada. A partir do momento em que você decide voltar para o jogo, a cena do jogo é carregada novamente, do zero, recriando todos os objetos que a compõem, inclusive as moedas que eventualmente haviam sido coletadas.
A solução pode ser simples, dependendo de como as suas cenas (Menu e Jogos) estão sendo construídos.
Caso o seu Menu seja somente uma tela (UI/Canvas), podemos pensar na possibilidade de manter o menu e o jogo em uma mesma cena, ativando e desativando a interface do jogo e do menu quando necessário.
Outra possibilidade é manter o jogo e o menu em cenas separadas, da forma que está hoje, porém, alterar a forma como o carregamento/descarregamento dessas cenas é realizados. Para carregar uma cena na Unity, nós podemos usar o método SceneManager.LoadScene("nomeDaCena"), informando somente o nome da cena que queremos carregar, como parâmetro. Porém, esse mesmo método permite que um segundo parâmetro seja informado.
Esse segundo parâmetro é o modo em que a cena deve ser carregada. Anterior eu citei que o modo padrão é o modo Single, onde somente uma cena fica ativa por vez. Além desse modo, também existe o modo "Additive", que permite que duas ou mais cenas sejam carregas e permaneçam ativas simultaneamente. Nesse caso, basta executar o carregamento da cena da seguinte forma:
SceneManager.LoadScene("nomeDaCena", LoadSceneMode.Additive);
Como as duas cenas estarão ativas, isso significa que ambas as cenas estarão sendo processadas, permitindo que o jogador continue jogando, mesmo quando o menu estiver visível. Para resolver isso, você precisará gerenciar quais GameObjects estarão ativos no seu jogo, ativando e desativando os objetos das cenas do Menu e do Jogo.
Em resumo, você pode manter as duas cenas carregadas ao mesmo tempo, para que elas não precisem ser destruídas (descarregadas) e construídas novamente durante a transição de cena. Porém, precisará garantir que o GameObjects do Menu estarão desativando enquanto o jogador estiver interagindo com a cena do Jogo, e desativar os GameObjects do Jogo, quando o jogador estiver interagindo com o Menu.
Como a explicação acabou sendo muito grande, caso tenha qualquer dúvida sobre esse processo, pode perguntar.
Vamos aproveitar para adicionar na nossa lista de próximos vídeos, um conteúdo sobre carregamento aditivo de cenas. Muito obrigado pela pergunta.
parabens
salvou pks
Oi! Muito obrigado por apoiar o canal!
Qualquer dúvida, pode mandar aqui nos comentários.
fez até um burro como eu entender
Oi, Mister Kame!
Ficamos felizes em saber que o vídeo te ajudou a entender. :D
Se tiver qualquer dúvida, ou sugestão de vídeo, pode mandar aqui nos comentários.