Bem-vindo de volta, meus colegas desenvolvedores de jogos.
Neste vídeo, quando executarmos o jogo,
você verá que temos muitos erros.
Nós não consertamos todos eles,
mas consertamos a maioria deles.
Então eu vou pegar a espingarda,
pegar algumas moedas,
ser atingido pelos picos,
passar pela porta,
passar por este portal.
E lá vai você.
Você pode ver que eu estou do outro lado era minha espingarda,
era minha pistola com minha saúde,
mas não é visível
porque não ajustamos essas coisas.
Mas se formos fazer o jogador rolar para baixo,
você notará que tínhamos 500.
Nós o cortamos pelos picos e são 490,
mesmo que não tenhamos feito nada.
Então, não vamos perder mais tempo e vamos começar.
As coisas que aprendemos neste vídeo são muito importantes,
um pouco complicadas, mas muito importantes.
Então, vamos ficar pisados.
O k.
Então, atualmente, podemos ir de nível para nível.
Temos opções em que escolhemos
um dos níveis aleatórios que temos.
Obviamente, há algumas
coisas que precisaremos ajustar
com a aparência da
porta e o desaparecimento e assim por diante.
Sinto que ainda há um pouco de ajustes,
mas há um problema ainda maior.
E isso é quando pegamos as moedas, a arma,
e somos atingidos por essas motos ou algo assim.
Deixe-me mostrar a você.
Quando pegamos a espingarda,
pegamos algum dinheiro,
atingidos pelos picos.
Lá vamos nós. Assim, podemos ver que nossa vida é de 9500,
vamos para um nível numérico.
Talvez isso seja, e você pode ver agora, enquanto o jogador,
se eu
olhar para o jogador D1, ele está desapegado.
Ele não está lá. Então você pode ver
que a vida dele está de volta aos 50.
Se eu tentasse escolher a espingarda,
não posso. E lá vai você.
Você pode ver que as moedas são
0 e isso é algo que vamos querer mudar para
garantir que nosso jogador realmente
mantenha tudo com ele enquanto ele passa pelo nível.
Então, vamos em frente e faça isso.
Então, vou abrir
meus scripts aqui e vou para
o controlador do player, rolar para cima.
E o que queremos é, obviamente, queremos manter
nossas armas de nível para
nível e a saúde do jogador.
Então, para manter isso,
precisamos ter certeza de que não destruímos o jogador.
Podemos salvá-lo em algum outro objeto
ou em algum lugar do projeto.
Mas, obviamente, existe,
o problema era carregar
uma nova cena que redefine tudo.
Então, o que vou fazer aqui vou criar
um controlador de player estático público.
E será a instância.
E, no caso, vou criar
um privado ou saber o que,
vamos apenas escrever acordado.
E aqui vou dizer que a
instância é igual a isso.
E então aqui eu não vou destruir em carga.
E será isso.
Então, se eu salvar isso e passar o mouse sobre não destruir a carga,
você pode ver isso para não destruir
o objeto alvo ao carregar uma nova cena.
E isso é exatamente o que queremos.
Então, o que acontecerá agora?
O objeto ou o jogador e nosso caso,
vamos manter tudo o que ele
tinha com ele de cena em cena.
Não será destruído,
não será reinstanciado.
Mas há o problema de que
o início não será chamado de Gap.
Portanto, não vamos configurar a câmera principal.
Manteremos o animador do jogador,
mas a câmera principal mudará.
E você verá que isso produzirá muitos
erros que resolveremos à medida que seguirmos em frente.
Mas, por enquanto, entenda o não
destrua a carga e o que ela faz.
Agora, vou voltar aqui.
E se você olhar para o,
onde está, a sala,
o portal, eu mudei o portal um,
que é este, para ir para o nível quatro.
Para que possamos ir para o covarde.
E deixe-me ir às cenas porque eu estava
tentando algo e desliguei
o jogador de cúpula aqui. Então lá vamos nós.
Isso o excita.
Vamos salvar isso.
Vamos voltar a esperar que isso seja carregado a qualquer dia agora,
salve-o de volta para onde estamos servindo.
O crânio é onde temos a de Kelly.
Sim, éramos um esqueleto.
Então, salve isso.
E você notará na hierarquia agora,
e unidade, a nova atualização, desculpe, é terrível.
Então, na hierarquia, você notará que nós temos o não
destruí-lo e ele tem o jogo da desgraça ou abaixo dele.
Então eu vou pegar a espingarda,
tornar-me os Bitcoins serem atingidos pelos picos, abrir a porta, passar
para o nível 4.
E lá vamos nós.
E você pode ver que agora estou aqui,
mas o problema é
você pode ver um jogador para baixo e eu coloco em camadas aqui.
Então, agora temos dois jogadores.
Um deles tem uma espingarda, o outro não.
E você pode ver que temos uma tonelada de erros e os contras.
Então, vou abrir o console.
Vou pausar o jogo.
E antes de tudo, temos o jogador da condenação.
E aqui esta é uma depuração que eu estava mostrando.
Deixe-me excluir isso.
Você verá o que quero dizer em apenas um pouco.
Vou excluir isso.
Em seguida.
Nós teremos a,
esta seta aqui,
o que está tudo bem, então esses são os problemas.
Consertaremos isso no vídeo posterior.
Então, finalmente, temos
o objeto do tipo de câmera foi destruído.
Você ainda está tentando acessá-lo.
Então, vou clicar duas vezes
aqui e é a câmera principal,
e é exatamente o que eu te falei.
Então agora que sabemos que nosso jogador está em transição,
e podemos ver aqui na cena, se eu clicar no jogador do condenado,
que é o não destruir, temos que fazer jogador
,
então teremos que fazer o jogador,
então teremos que conserte isso.
Mas um deles ainda tem a espingarda.
Então, tecnicamente, ele poderá
se mover com essa espingarda.
E eu olho para o tomb player,
role para baixo até sua saúde e você pode ver que o,
sua saúde atual também tem transição.
Infelizmente, ainda há
o problema dos bitcoins,
mas vamos corrigir isso passo a passo.
Vamos primeiro começar com
o gerenciamento dos padrões de camada dupla.
Portanto, isso é algo que precisaremos abordar.
E como vamos ajustar isso?
Bem, há um truque muito bacana que podemos usar,
que é chamado de padrão singleton.
Deixe-me mostrar-lhe usando
código o que é isso e então explicaremos.
Então, antes de tudo, aqui em acordado,
em vez de definir imediatamente a instância,
vou dizer que, se não tivermos uma instância,
então a instância é
amines é se já tivermos uma instância,
portanto, é diferente do nulo,
e a instância é diferente disso.
Então o que vou fazer é destruir
esse objeto do jogo.
Então, o que estou fazendo exatamente aqui?
Vou verificar assim que aguardarmos.
A instância é diferente de nula.
Então isso significa que se a instância não for nula,
vou destruir o objeto do jogo.
Mas há outra coisa
se a instância for diferente disso.
Então, o que estou fazendo aqui,
quando estou iniciando o jogo,
estou verificando se já temos uma instância
ou se a instância é igual a esse objeto de jogo,
vou destruir esse objeto do jogo.
E isso garantirá que nós, em primeiro lugar,
não criamos
uma segunda instância desse objeto de jogo.
E em segundo lugar,
não duplicamos o objeto que já está aqui.
Então, se formos a uma nova cena
e descobrirmos que temos em um objeto de jogo,
ele será destruído imediatamente.
Mas caso contrário, no caso de não termos uma instância,
então estamos iniciando o jogo de novo,
ou quando iniciamos uma nova cena e não há
nenhuma instância que seja igual a isso,
então eu vou dizer que essa instância é igual a isso.
Isso apenas criará uma nova instância.
E isso garantirá que não temos
duas instâncias ou que já haja uma disponível.
Então, vou salvar isso e vou
demonstrar como isso funcionará
e se apertará porque teremos muitos erros.
E eu estava testando isso para garantir
que eu possa gerenciar tudo corretamente.
Então eu pego as moedas,
sou atingido por 90,
abro a porta, e vou bater no portal,
afastar dele. E lá vamos nós.
Então você pode ver agora,
eu não tenho um jogador de equipe.
O segundo jogador foi destruído.
Isso porque ele verificou e está acordado.
Existe uma instância?
A instância é diferente da nula?
Sim, foi.
E a instância é igual a isso?
Sim, foi. Então, vamos ir em frente e destruir.
Então, de volta aqui você verá que temos
apenas 12 empregadores que tem uma espingarda.
Ele pode atirar.
Ele não pode apontar e não pode mudar sua arma,
mas ele tem a espingarda.
Ele está animando,
tudo está funcionando e você notará que
ele está na mesma posição em que
estava na cena anterior.
E isso é porque ele vai realmente
manter isso com ele enquanto ele se move.
Então você notará que quando entrei no portal,
eu me afastei porque não queria
ficar naquele portal.
Então, com essa informação,
afinal, vamos ver quais erros temos aqui.
Então vou fazer uma pausa porque há muita coisa.
Então, antes de tudo, você verá o problema com a câmera,
que vamos corrigir em um pouco.
Você verá que temos um problema
com os inimigos covardes.
Eles estão tentando encontrar o objeto que é o jogador,
mas simplesmente não conseguem.
Não só isso, está nos dizendo que
a transformação do objeto foi destruída,
mas você ainda está tentando acessá-la.
O que eles querem dizer com isso?
Bem, assim que eles vieram a este mundo,
eles viram o pequeno jogador da condenação que estava aqui inicialmente.
E então, quando a cena começou,
ele foi destruído e eles ainda estavam tentando acessar.
E se clicarmos duas vezes aqui,
você notará que está bem aqui na perseguição do jogador.
Então, todo o problema é com o jogador Chase.
Obviamente, estaremos consertando isso também,
a câmera será corrigida.
E, finalmente, esse problema também está aqui e
o objeto do jogo do jogador ativo e hierarquia.
Então, tudo isso será corrigido e só um pouco.
Então, vou despausar isso e vamos
lidar com os problemas um de cada vez.
Então pare com isso, abra isso, o jogo comece.
Então abra os scripts.
E o que faremos?
Primeiro de tudo, primeiro acho que vamos
lidar com o problema da câmera principal.
Então, se formos ao controlador do jogador, onde usamos a
câmera principal. Vamos clicar duas vezes
na Câmera Principal e rolar para baixo,
ver onde a usamos.
Nós o usamos.
Lá vamos nós, apontando a arma.
Então, aqui estou simplesmente momento para verificar se
a câmera principal é igual a nula.
Isso significa que não temos uma câmera.
Vou dizer que a câmera principal é
igual ao ponto principal da câmera.
E isso só acontecerá quando verificarmos que
a câmera é nula.
Isso significa que não temos uma referência.
Se for, definiremos a câmera principal.
Mais uma vez. Caso contrário, continuaremos
regularmente, regularmente com o apontando uma arma no máximo.
Então, de volta ao nosso jogo será executado.
O jogo vai ocupar este, abrindo. Mais alguma coisa?
Vamos passar por isso.
E do outro lado,
veremos na cena.
Lá vamos nós. Você pode ver que eu sou capaz de apontar isso,
mas obviamente há,
a câmera no mundo do jogo
não está focando no jogador.
E isso é algo que obviamente precisaremos
flexionar.
Então, vamos começar a consertar.
Vou entrar nos meus roteiros.
E aqui, enquanto estivermos, vamos chamar isso,
Onde devemos chamar isso?
Vamos ver, onde colocamos a câmera de forma?
Podemos saber?
Não sabemos o quê?
Vamos apenas entrar nos
scripts e colocá-lo dentro dos gerentes.
Gerentes, gerentes, gerentes.
Não há gerentes.
Certo.
Então gerentes, por algum motivo, nossas câmeras.
Lá vamos nós. Então, e as câmeras,
vou criar um controle de câmera ou um
controlador de campo de câmera.
Pressione Enter, aguarde que ele seja compilado.
Clique duas vezes aqui e
vou fazer algumas coisas.
Então, o quê? Estou sempre fazendo algumas coisas.
Então, quais são as coisas que vamos fazer?
Primeiro de tudo, o que queremos fazer aqui é
sempre encontrar o alvo do jogador automaticamente.
Então, anteriormente, o que costumávamos fazer é se entrássemos
na câmera bem aqui e para o acampamento virtual,
dissemos o jogador seguinte.
E o problema é quando vamos para um novo mundo,
deixe-me mostrar-lhe em detalhes,
deveria ter mostrado antes.
Então, se eu, por exemplo,
aqui tenho o jogador,
clico nele, ele está na hierarquia.
Abri a porta,
ligo para outro nível.
Você notará agora mesmo se eu abrir as câmeras novamente,
que são exatamente a mesma câmera virtual,
você pode ver que o seguinte está faltando,
então não há jogador.
Por quê? Porque já definimos o jogador antes,
mas agora ele foi destruído.
Ele está desaparecido, então precisamos encontrá-los de novo.
Então aqui eu vou abrir isso e vou
criar uma variável que é o jogador a perseguir, que obviamente vai ser,
vamos ver,
a transformação ou nenhum atlas apenas fazer dele a
camada de controlador de camada para olhar.
E ele vai ser igual para encontrar um objeto do tipo.
O jogador, oh, não,
não, não, não aqui.
Custos para baixo e começam.
Vamos dizer que a camada a ser observada
é igual a encontrar objetos do tipo,
e será o controlador do jogador.
Agora temos uma referência ao
controlador do player que
também cria uma câmera virtual.
Então, então máquina de cinema,
câmera virtual também herdar precisamos dobrar
e C usando cin, uma máquina.
Lá vamos nós, salve isso.
Então máquina de cinema,
câmera virtual de máquina de cinema, obrigado.
Vai ser o verbo.
Câmera virtual.
E vamos colocá-lo aqui assim que começarmos.
Então, será igual obter componente.
E onde estamos engenheiros?
Onde vamos anexar o controlador da câmera?
Podemos querer anexá-lo na palestra.
Vamos anexar às câmeras virtuais
que possamos acessar imediatamente
a mesma câmera virtual de máquina aqui.
Então, obtenha o componente.
E vai ser a câmera virtual da máquina de cinema.
Lá vamos nós. E o que vamos fazer aqui?
Bem, vamos definir a câmera virtual para cima para cima
para ser igual à camada para
olhar para a transformação de pontos.
Então, isso será no início,
mas uma atualização, precisaremos criar um loop while.
Então, já cobrimos enquanto loops.
E vai estar verificando se o jogador
olhar enquanto ele é igual a nulo.
Isso significa que ainda não encontramos um jogador.
Vamos continuar procurando o jogador para olhar.
Continue encontrando o controlador do jogador
até finalmente encontrá-lo.
Uma vez que os encontrarmos,
se tivermos uma câmera virtual.
Portanto, este é apenas um passo extra para evitar erros.
A câmera virtual não segue.
Será igual ao jogador.
Vamos salvar isso. E vamos olhar novamente o que fizemos.
Então, primeiro de tudo, criamos
o controlador do player, que será,
que é uma variável que vamos
olhar para os jogadores para olhar,
que é uma variável do
controlador do player, uma câmera virtual.
Estes são todos privados.
Podemos nomear o privado.
Só não tive tempo.
Quer saber, vamos nos certificar
que não temos confusões aqui.
Tão privado, privado porque não precisaremos
deles no inspetor.
Podemos definir M se quisermos.
Não precisamos. Em seguida, comece.
Vamos encontrar o controlador do jogador.
Isso é apenas por precaução.
Começamos e temos o jogador na cena,
depois encontramos a câmera,
depois configuramos a câmera de seguimento para ser o jogador a olhar.
Tenha apenas um jogador em qualquer cena,
porque já nos certificamos disso aqui.
E o padrão Singleton.
Lá vamos nós.
Isso é chamado de padrão singleton, tendo em mente,
sempre que você contar a alguém,
eles pensarão que você é muito inteligente.
Confie em mim, mesmo sendo
singleton significa um único objeto.
Então, no caso de eles perguntarem o que é um padrão singleton?
De qualquer forma, o ponto da câmera virtual segue,
seguimos o único jogador que encontramos e
em seguida, uma atualização caso isso seja para,
digamos que o jogador que não
destruído geralmente carrega antes de todos os outros objetos.
Então, no caso de começarmos o jogo,
não encontramos o jogador imediatamente que ele está desaparecido.
Não podemos resolvê-lo da seguinte forma.
Siga, em seguida, uma atualização que continuaremos em loop
até descobrirmos que o jogador verificaria
se temos uma câmera virtual.
Este é apenas um passo extra.
Eu não acho que vamos precisar disso mesmo, nem
mesmo uma vez porque estaremos
anexando o script à câmera virtual,
mas apenas no caso de não haver uma câmera virtual,
verificaremos a condição e depois nós
irá definir o ponto da câmera virtual seguir,
salve-o de volta aqui.
Vamos em frente.
E então as câmeras,
vamos ver, agitar e agitar
o controlador da câmera através da câmera virtual.
E por algum motivo posso ver que isso não é um pré-fabricado.
É isso no pré-fabricado isso.
Então, quando a Universidade Prefabs,
enquanto as armas você é um pobre para nivelar objetos aqui.
Não.
Certo. Então eu posso ver que não prefiro
as câmeras por algum motivo que pensei ter feito.
Mas, de qualquer forma, isso é apenas prefere os acampamentos e aqui.
E você pode ver que
a câmera virtual terá o controlador do acampamento.
Então, salve isso.
Deixe-me ir para o outro nível.
Não vou fazer isso em todos os níveis.
Eu só vou fazer isso com aqueles que estamos testando,
consertei tudo e provavelmente será o mesmo.
Então, câmeras e aqui eu vou excluí-lo.
E vou voltar aos prefabs e me certificar
de adicionar as câmeras aqui na hierarquia.
Salve tudo isso.
Abra isso, ok, parece,
tudo parece ser bom. De volta às cenas.
De volta ao crânio é salvar isso, executar o jogo.
Vá para a porta, abra-a,
vá para o próximo nível.
E devemos ver, lá vamos nós.
Então, novamente encontramos o jogador e agora
as câmeras estão funcionando perfeitamente bem.
Ótimo. Então, agora com isso fora do caminho,
se olharmos para trás no console,
ainda temos o problema de
o jogador ser perseguido, não ser divertido.
E como vejo que
esse vídeo já está acontecendo o suficiente,
vou postular aqui e depois continuaremos
no próximo vídeo.
Então, espero que você tenha gostado.
Este é um assunto um pouco chato, eu sei,
mas pelo menos você aprendeu o que é um padrão singleton.
Você entendeu por que a câmera não estava indo.
Estou tentando explicar o máximo possível,
mesmo que seja muito chato.
Mas eu quero que você entenda como tudo está se sentindo.
No começo, eu também estava confuso,
mas ao passar por tudo,
entendi as coisas e
queria passá-las para você.
Então, com isso fora do caminho,
obrigado por assistir e eu te vejo no próximo.