Muito bem, pessoal.
Bem-vindo de volta.
Como está indo?
Esse desafio foi muito quente.
Absolutamente verdadeiro.
Se você resolveu esse problema, parabéns.
Depois, você recebe a faixa azul.
E, se não, talvez você queira assistir até um determinado ponto.
Quando eu lhe der uma dica, você poderá participar desse desafio mais uma vez.
Portanto, é uma sensação muito agradável poder resolver esse desafio depois, por conta própria, e não apenas continuar
assistindo.
A solução completa.
Portanto, pelo menos tente resolver o problema.
Se você não estiver pronto para isso, não há problema algum.
Eu o orientarei nesse momento.
Tudo bem.
Então, vamos dar uma olhada nisso juntos.
Bem, aqui estamos nós, a VM do Ubuntu.
Vamos dar uma olhada.
Entramos nos aplicativos e no espaço ping.
E eles combinam nesse desafio, nós nos concentramos nessa tomada múltipla, mas depois, você também precisa
ajustar os outros arremessos.
Tudo bem.
Parece bom.
Então, vamos fazer isso dessa forma.
Estamos trabalhando com a mesma base aqui.
Ok, vamos dar uma olhada nisso.
Experimente as pistas de esqui.
Esse é o diretório.
Queremos abrir o APK.
Muito bem.
Sistema de entrada do jogador de sistemas.
Aqui vamos nós.
Agora vamos rolar a tela para baixo.
Portanto, essa parte diz respeito à nossa foto do jogador.
Portanto, estamos criando aqui uma foto de jogador e criamos outra foto de jogador.
Agora temos que descobrir o que realmente está acontecendo aqui, pois é muito importante que entendamos
o que está acontecendo aqui para resolver esse desafio.
Portanto, pego meu tablet gráfico e damos uma olhada nisso juntos.
Tudo bem.
Então, vejo você em alguns instantes.
Está bem.
Então, estou em meu tablet gráfico.
Vamos dar uma olhada nisso.
Aqui temos nossa nave espacial e esta aqui.
E, normalmente, estamos filmando e temos apenas uma única foto.
Portanto, este aqui.
Está bem.
Também podemos ver esses atrasos de tempo muito precisos entre
cada disparo.
Então, vamos dar uma olhada.
Esse é o nosso caso de permissão.
Portanto, temos permissão para filmar.
Em seguida, temos esse cheque, essa filmagem.
E esse tempo de filmagem é menor do que o normal.
Zero.
Isso significa que temos permissão para atirar.
Caso contrário, aumentaremos esse atraso aqui.
Portanto, isso causa algum atraso.
E essa parte aqui nos permite atirar.
Está bem.
Portanto, isso está claro.
Então, temos essa verificação.
Esse tiro duplo tem entidade.
Isso significa que temos uma chance dupla?
Isso significa que pegar uma moeda vermelha nos dá a possibilidade ou a capacidade de ter uma chance
dupla.
Tudo bem.
Se esse não for o caso, temos uma única chance.
Portanto, isso significa a diferença entre um tiro duplo e um tiro simples.
Isso são linhas?
Essas duas linhas nos dão uma chance dupla.
E essa linha aqui nos fornece um único disparo.
Tudo bem.
Depois disso, temos nossa taxa de bloqueio, da qual podemos nos livrar substituindo esse número
por zero.
Portanto, nossas principais instruções que tomam a decisão entre um tiro duplo e um tiro simples são esses oops,
esses aqui.
E este aqui.
Portanto, vamos nos concentrar nisso.
Vamos limpar isso e dar uma olhada.
Está bem.
Portanto, precisamos investigar o que está acontecendo aqui, aqui e aqui.
Vamos dar uma olhada.
O início parece ser o mesmo.
Sim.
Então, até aqui.
Até aqui, temos exatamente o mesmo.
Então, temos um pouco de indiferença.
Está bem.
Portanto, esse é um ponto de partida muito bom no momento, pois há apenas um pequeno ajuste.
A única diferença parece ser que temos aqui a posição X -15 e aqui a posição X mais 15, e isso é
tudo.
O restante parece ser igual.
Sim.
Portanto, este aqui é o primeiro parâmetro dessa função.
E este aqui também é o primeiro parâmetro dessa função.
Apenas estendemos nosso parâmetro com X mais 15 e também com X -15.
Isso faz toda a diferença entre um disparo simples e um duplo.
Legal.
Vamos dar uma olhada nisso.
Crie uma chance para o jogador.
O que acontece lá?
Então vamos ver.
Clicamos duas vezes neste e entramos aqui.
Portanto, aqui estamos no método de criação de fotos de jogadores.
Vejamos, temos três parâmetros por palavra e vamos chamar isso de P um.
Temos um x flutuante, que é P dois, e temos um y flutuante, que é p três.
Está bem.
Em seguida, entramos nesse método, criamos uma nova entidade e ela é pensada em E.
Portanto, nosso P one está sendo usado para criar uma nova entidade.
Portanto, este aqui se torna nosso E.
Muito bem, a seguir, estamos criando um novo objeto de posição.
Este aqui.
Em seguida, atribuímos X e Y a esse objeto de posição.
Portanto, este aqui é o X, e este aqui é o Y.
Tudo bem.
Vamos dar uma olhada nesse objeto de posição, porque essa é a parte
mais importante da nossa função Y, porque esse parâmetro aqui faz a diferença entre ter um tiro de um
jogador e um tiro de dois jogadores.
Portanto, precisamos acompanhar o que esse parâmetro faz ou como está sendo usado porque, ao modificá-lo,
conseguimos o que queremos.
Então, vamos limpar isso um pouco, ok?
E agora vamos dar uma olhada na parte da posição.
Portanto, este aqui.
Muito bem, isso é fácil.
Temos apenas dois valores.
Dois campos de instância X e Y.
Muito bem, agora vamos acompanhar esse caso.
Está bem.
Portanto, isso seria armazenado na posição X.
Está bem.
Então, o que acontece depois?
Em seguida, atribuímos também o Y.
Portanto, usamos todos esses três parâmetros agora.
Então, temos nossa entidade.
Este aqui.
Essa era a nossa entidade mundial.
Está bem.
E dizemos que a entidade edita e adiciona posição.
Então, sim, não sabemos o que ele faz, mas parece acrescentar algo novo nessa posição que
é fornecida aqui.
Vamos dar uma olhada neste e editar adicionar e depois posicionar.
Ok, agora isso parece muito complicado.
Retorno.
Sim, muitas coisas.
Também é possível que tenhamos que descobrir qual deles está sendo usado.
Então, vamos voltar.
Podemos fechar este e aqui podemos ver que estamos usando apenas um parâmetro.
Isso significa que estamos usando este.
Sim, esse tem dois parâmetros.
Portanto, estamos definitivamente usando esse.
Está bem.
Podemos acompanhar o que está acontecendo aqui.
Podemos investigar isso.
Mas a engenharia reversa não exige que você se aprofunde tanto no material.
Podemos apenas fazer suposições e ver se estamos corretos nesse caso.
E, se não, sim, podemos nos aprofundar nisso e descobrir o que está acontecendo aqui.
Mas, por enquanto, isso parece muito complicado.
Então vamos ver.
Digamos que simplesmente adicionemos um novo sim, uma nova entidade, um novo objeto nessa posição.
Portanto, vamos supor que ele esteja fazendo exatamente isso.
Isso significa que estamos adicionando um novo objeto.
Ela e, em seguida, esta posição
e esta tem a posição X ou os campos de instância X e Y.
Em seguida, temos um pouco de Sprite.
Tudo bem, então temos a foto do jogador com o nome Sprite e isso parece bom.
Está bem.
Portanto, parece que ele atribui um novo nome ao sprite, que é o player shot.
Isso parece bom porque queremos criar uma foto do jogador.
Está bem.
E depois temos os efeitos do Sprite player.
Está bem.
Não sabemos o que ele faz, portanto, vamos ignorá-lo.
Então temos oh, esse parece bom agora.
Temos o ADD Sprite e o nosso Sprite é este aqui.
Aqui estamos adicionando esse brilho.
Tudo bem.
Portanto, aqui vimos que estamos adicionando um novo objeto nessa posição e aqui adicionamos o sprite.
Portanto, parece que agora devemos adicionar nosso Sprite de tiro ao jogador.
Ou seja, temos que fazer a engenharia reversa dessa parte agora.
Portanto, isso é apenas uma suposição.
Mas com relação à nossa observação de que ele cria um tiro no jogador, é exatamente assim
que ele soa.
É sim, acho que é um palpite bem fundamentado.
Então, parece que aqui se cria uma nova chance para o jogador.
Em seguida, temos essa velocidade, então fazemos algo com a velocidade e ajustamos a velocidade.
Portanto, essa pode ser a velocidade.
A velocidade de chute desse jogador.
Sim.
Está viajando por esse mapa.
Isso também pode ter um valor superinteressante aqui.
Talvez possamos acelerar ainda mais o lançamento de nossos jogadores.
Isso seria incrível.
Certo?
Ok, então podemos ver.
Está bem.
Agora, adicionamos também a velocidade à nossa entidade.
Está bem.
Agora parece fazer sentido.
Portanto, estamos criando uma nova foto de jogador.
Então, isso.
Deixe-me tentar desenhar isso mais uma vez.
Aqui está.
Isso se parece exatamente com a foto original do jogador.
Certo.
Está bem.
Tenho que adicionar a nave espacial.
Aqui está.
Está bem.
Portanto, estamos criando uma nova posição para essa foto do jogador porque ela precisa ser desenhada em algum lugar no mapa.
Esta é a parte aqui, a parte da posição.
Em seguida, atribuímos o sprite para que ele se pareça com um tiro do jogador.
Essa é a aparência da foto do jogador.
E agora ajustamos a velocidade para essa foto do jogador.
Portanto, a velocidade com que esse jogador dispara sobre o mapa.
Depois, temos esse salto real, com um oito OC.
Agora, ajustaremos a largura e a altura da foto do jogador.
Então, por um segundo, pensei: "Tudo bem, não sei o que isso significa, mas se continuarmos a seguir
esse código, isso fará sentido".
Tudo faz sentido.
É claro que posso estar completamente errado sobre isso.
Acho que sim.
Não dei uma olhada em todas essas funções, mas se você fizer engenharia reversa de algo, nunca
terminará se analisar cada função passo a passo.
Portanto, em minha opinião, é melhor ter uma visão geral do que está acontecendo e depois verificar se nossa estimativa sobre
o que está acontecendo está correta.
Ok, então vamos continuar.
Portanto, este parece ser o caso.
Esse parece ser a largura e a altura desse objeto.
E depois.
Remova o reprodutor de som fora da tela.
Que bom.
Aqui podemos ver que também temos algum som.
Então, acho que está parecendo.
Sim, esse deve ser o ícone.
Agora também temos um som nesse objeto e o retornamos depois.
Tudo bem, isso faz sentido.
Portanto, essa função é enorme e é ainda mais incrível do que ser enorme.
Com relação à parte do Java, não é muito grande, mas tenho a sensação de que na parte do smiley isso é ridículo.
Grande.
Muito bem.
Então, vejamos, criamos uma entidade e isso exige bastante esforço.
Temos que ajustar tudo nesse objeto aqui.
Temos que informar a posição em nosso mapa.
Portanto, neste ponto, temos que dizer a velocidade com que ele se desloca pelo mapa.
Também precisamos informar o tamanho desse objeto.
Portanto, largura e altura e também o som do player e sua aparência.
O nome do Sprite.
Bem, são muitas coisas, mas isso também nos dá o poder de ajustar todos esses valores.
Isso não é legal?
Quero dizer, adicionar o som ou mudar o som?
Sim, isso é chato, é claro.
Mas talvez possamos tornar isso um pouco maior.
Então, digamos que temos um tiro de jogador parecido com este, de modo que podemos eliminar três alienígenas
em uma fileira com um único tiro.
Isso também seria bom.
Não pensei em dar uma olhada nisso agora.
Sou totalmente honesto com você.
Caso contrário, também incluí isso no vídeo.
Portanto, hackear um jogo e um smiley é muito divertido, pois você nunca deixará de fazer muitas modificações
legais nele.
Certo, mas antes que eu fique muito empolgado e tente brincar com esses objetos, vamos
voltar à nossa tarefa original?
Portanto, o que queremos fazer é adicionar uma chance para vários jogadores.
Essa era a nossa tarefa e também podemos ver que isso precisa ser feito aqui, criar uma foto do jogador.
Também descobrimos que essa é a chave, a posição X.
Agora vamos pensar por que essa é a chave.
Vou limpar a tela e depois falaremos sobre isso.
Está bem.
Portanto, para entender isso, vamos desenhar rapidamente nosso aplicativo de planejamento de espaço.
Por isso, eu uso essa pequena ajuda para desenhar linhas retas.
Então, aqui temos nosso jogador e aqui temos nossos alienígenas.
Portanto, a posição X faz a diferença entre ter um tiro simples e um tiro duplo.
Portanto, para entender isso, temos que observar nosso jogo bem de perto e ficar à vontade para continuar jogando mais uma
vez e tentar fazer uma observação sobre ele.
Tente descobrir em que direção podemos mover nosso objeto navio aqui.
Então, este aqui, como podemos fazer com ele em nosso aplicativo de ping espacial.
Está bem.
Portanto, um ponto importante em nosso aplicativo é que só podemos mover essa nave da direita para a esquerda ou da esquerda para a direita,
mas não podemos movê-la para cima.
Portanto, essa direção não é possível.
E você sabe qual é essa direção?
A coordenada Y e esta é a coordenada X.
Se dermos uma olhada nesse parâmetro novamente, ele fará um pouco mais de sentido, certo?
Portanto, se quisermos criar uma foto de jogador, teremos que fornecer a posição dessa foto de jogador,
esta aqui.
Mas essa posição, quero dizer, a coordenada y aqui, só faz diferença onde a tacada desse
jogador começa.
Portanto, se ele começar aqui, por exemplo, e deixe-me limpar isso, se ele começar aqui ou se você começar diretamente
aqui, por exemplo.
Portanto, digamos que ajustemos essa coordenada y, então o tiro do jogador começaria bem acima dessa nave.
Portanto, a coordenada do espião está sempre vinculada à nossa nave, de modo que o tiro é criado diretamente na nossa
nave.
Está bem.
Isso faz sentido.
E esse é o motivo pelo qual isso não afeta em nada a nossa foto de jogador.
Se ele modificasse esse valor.
Mesmo que tenhamos uma foto de jogador, tudo o que mudaríamos seria a posição dessa foto de jogador.
Portanto, em vez de começar aqui, o tiro do jogador começaria aqui.
E também para o disparo duplo, se ele tivesse um disparo duplo, então apenas ajustaríamos a posição desse
disparo duplo.
Portanto, este aqui inicia o Wavefront a partir da nave de aplicativos do painel espacial aqui.
Tudo bem.
Portanto, o ódio aqui, este aqui, não afeta nosso tiro duplo.
Isso apenas afeta nossa posição desse tiro duplo.
Então, acho que vou repetir isso 20 vezes, mas é muito importante porque leva automaticamente à
nossa solução.
Portanto, se esse não for responsável por nosso tiro duplo, é o valor X.
E já observamos isso.
Agora, por que o valor x é relevante para nossa injeção dupla?
Portanto, o valor x toma a decisão de onde o tiro do jogador será gerado, ou seja,
deste para este.
Portanto, em toda a nossa tela, se tivermos um único disparo, o disparo do jogador será criado diretamente na nossa nave.
Mas se tivermos um tiro duplo, o tiro do jogador será um pouco diferente do nosso navio.
Portanto, digamos que a nossa nave esteja aqui, então o nosso tiro duplo está um pouco deslocado em relação
ao tiro único aqui.
Tudo bem.
Então, vamos dar uma olhada nisso.
Entramos no sistema de entrada do jogador e é exatamente isso que estamos vendo aqui.
Esta é uma foto de um único jogador.
Temos nosso aplicativo de ping espacial e agora criamos uma nova entidade em nosso mundo.
Então, deixe-me desenhar isso mais uma vez de forma um pouco mais clara.
Assim, criamos uma nova entidade em nosso mundo.
E aqui também temos alguns alienígenas.
Está bem?
E criamos uma nova entidade na posição X e na posição Y.
E o que ainda não foi revertido é que essa posição está vinculada a esse objeto jogador aqui.
Então, deixe-me desenhar isso da seguinte forma.
A posição X e Y é vinculada ao nosso objeto de jogador aqui.
Agora estamos criando uma foto de um único jogador diretamente na frente do nosso jogador.
O jogador não pode se mover para cima.
Portanto, este aqui é Y e este aqui é X.
Está bem.
Isso significa que, se tivermos uma foto dupla, como esta aqui, estaremos criando duas fotos de jogadores.
Mas se criarmos dois tiros de jogador exatamente na mesma posição aqui, isso não terá efeito.
Portanto, estamos mudando-os um pouco.
E é exatamente esse aqui.
Está bem.
Portanto, se forem dois objetos na mesma posição, não veremos a diferença porque eles estão sobrepostos
um ao outro.
E esse é o truque, como a foto dupla está sendo criada.
Mudamos a posição de ambos os objetos para a esquerda e para a direita para que possamos ver isso aqui.
Temos aqui a posição do nosso objeto de jogador, a posição X, e agora criamos uma nova foto de jogador
aqui.
Esta é a nossa primeira foto de jogador nessa posição, x -15.
Portanto, assumimos a posição X, esta aqui -15.
Isso significa que estamos nessa posição -15, e agora estamos criando essa tacada.
Portanto, está um pouco fora de nosso formato no momento.
E fazemos isso mais uma vez aqui e esta aqui.
Esta é a segunda foto.
E esse agora é criado na posição X mais 15.
Isso significa que agora o segundo é X mais 15.
Portanto, esse é o nosso x, essa linha e agora adicionamos mais 15 a esse lado.
Assim, criamos essa foto de jogador aqui.
Aqui temos -15.
Tudo bem.
E é assim que o chute duplo do jogador é criado. Entendendo e sabendo disso agora, podemos
ajustar isso.
Vou lhe dar agora algumas dicas adicionais.
Mas se isso for suficiente para você agora, fique à vontade e tente resolver esse desafio aqui.
Caso contrário, vamos ver o que temos que fazer.
Não vou lhe mostrar o código, apenas a abordagem do Yeah.
O que precisamos fazer aqui.
Talvez primeiro eu limpe isso um pouco.
Certo, então o que precisamos fazer?
Se você quiser criar uma nova foto de jogador, será necessário copiar e colar uma dessas fotos, por exemplo,
esta aqui.
Portanto, se copiarmos e colarmos este aqui, criaremos uma foto do jogador exatamente na mesma posição
aqui.
Portanto, não veremos o efeito, o que significa que, depois de copiar esse valor, também temos que ajustar
este aqui, este valor, e temos que ajustá-lo de uma forma que seja compatível com um deslocamento que não esteja sendo
usado em outra tacada do jogador.
Por exemplo, se você disser -30, então se fornecermos aqui em vez de -15 em nossa nova foto de jogador criada.
Portanto, precisamos copiar, colar essa linha e editá-la aqui.
E então, se tivermos, por exemplo, -30, criaremos um novo jogador nessa posição.
E também podemos fazer isso copiando e colando este, pegando este valor.
E aqui tivemos que adicionar, por exemplo, mais 15 mais uma vez para termos um total de
mais 30.
Isso significa que estamos criando um tiro de jogador com mais 30.
E, sim, se você quiser adicionar uma dose adicional, vamos fazer isso mais uma vez e precisamos
ajustar 15 mais uma vez para que tenhamos mais oops mais 45.
Isso significa que estamos agora em mais 45 e também o mesmo aqui, -45.
E podemos fazer isso várias vezes.
A parte difícil desse desafio é esse valor aqui.
Portanto, você pode conseguir isso de diferentes maneiras.
É claro que, mais uma vez, o que você pode fazer é subtrair o valor duas vezes do registro.
Essa é uma solução.
Também é possível usar um número de ponto flutuante existente, por exemplo, este aqui, e usá-lo
em um registro e editar esse valor aqui.
Assim, você também obtém um deslocamento diferente.
E se você adicionar isso duas vezes ou até mais do que sim, teremos nosso layout aqui.
Ok, então essa é a minha dica em relação a esse desafio, mesmo depois de invertê-lo até esse ponto, é o supercoração,
acredite em mim.
Você precisa descobrir onde está a linha de código do smiley e, em seguida, copiar todas as instruções referentes
a essa linha.
Não tenho certeza de quantos são.
Talvez três ou quatro ou apenas dois, não sei.
E depois de copiar isso, temos que ajustar esse parâmetro aqui para que ele seja subtraído mais uma vez ou para
que tenha um valor diferente.
Para ser sincero, ficarei muito feliz se conseguirmos e, digamos, em vez de um octa.
Portanto, não há problema se conseguirmos isso com um a quatre, quatre, quattro com essa quantidade de fotos.
Tudo bem.
Está bem.
Portanto, essas quantidades de fotos são absolutamente suficientes para receber sua cama depois.
Mas se você quiser ir para o modo difícil.
Sim, sinta-se à vontade para escolher esse.
Está bem.
Portanto, agora você pode pausar e retroceder o vídeo.
Vou seguir em frente com a solução desse problema.
Então vamos ver.
Está bem.
Então, vamos abrir o arquivo de smiley para este.
E então, sim, estamos tentando descobrir onde ele está.
Muito, muito via abertura.
Agora é importante que estejamos abrindo a correta.
Portanto, estamos abrindo nosso desafio de pintura espacial para descompilação, não apenas para descompilação de jogos espaciais e depois.
Essa é a nossa versão modificada, certo?
Sim.
E eu não quero perder isso.
Sabe de uma coisa?
Vamos salvar isso primeiro.
Portanto, esse é o nosso espaço de jogo modificado em relação ao bloqueio e ao chute duplo OC e, em seguida,
à Ferramenta D do APK.
E vamos recompilá-lo mais uma vez.
Está bem.
A propósito, se você tiver modificado este aqui, o tiro do jogador, o tiro duplo.
Desculpe.
E você não ajustou este aqui.
Você tem que pegar uma moeda primeiro até conseguir seu cuatro octa pander shot, o que quer que você tenha ajustado
lá.
Tudo bem.
Sim, é claro.
Você já sabe disso, mas quero apenas mencionar.
Esses são alguns erros que podem ocorrer.
Está bem.
Então vamos ver.
Estamos de volta aqui e vamos abrir o diretório de smiley completamente.
Então, estamos no sistema de entrada de jogadores dos sistemas de paginação espacial.
Está bem.
Também podemos ver que o sistema de entrada do jogador tem $1 um.
E também o estado de incêndio do dólar, o que significa que essas são classes herdadas, pois já discutimos sobre
isso.
Então, sim, isso também pode ser um pouco confuso, mas esses dois não contêm nossa lógica.
Estamos procurando que nossa lógica esteja diretamente no sistema de entrada do jogador neste método aqui.
Vamos ver o que estamos procurando.
Hmm.
Podemos procurar esse valor aqui.
Sim, acho que esse não é usado com muita frequência.
Parece bom.
Então vamos ver.
Estamos procurando por 15. 0.
Temos isso no registro v 11 diretamente no início dessa função.
Isso significa que estamos fazendo referência ao registro v 11 em nossa enorme função abaixo.
Então, vamos descobrir onde fazer isso.
Está bem.
Isso parece bom.
Sim.
Está bem.
Portanto, aqui estamos usando esse valor, mas o atribuímos na parte superior da função.
Então, vamos ver se ele não será sobrescrito antes.
Sim, temos três ocorrências desse registro e nenhuma instrução parece substituí-lo.
Sim, acabamos de usá-lo em um sup e também aqui em um anúncio.
E vejamos, o início foi a declaração.
Ok, agora sabemos que esse está definitivamente mantendo nosso valor 15 na forma de um float.
Muito bem.
Então, vamos ver o que acontece aqui.
Vamos pegar esse trecho de código e voltar ao nosso tablet gráfico, porque definitivamente precisamos fazer a engenharia reversa
de todas essas linhas para entender o que está acontecendo.
Então, vejo você em alguns instantes.
Aqui, adicionamos o tablet gráfico.
Vamos dar uma olhada nisso.
Sim, é claro, cortamos um pouco essa parte.
Mas isso se refere à condição F.
Portanto, podemos ver que começamos na linha 138.
Portanto, essa é a decisão se tivermos um tiro duplo.
Está bem.
Mas não estamos interessados nesse caso no momento.
Estamos mais interessados em como estabelecer o que será criado.
Tudo bem.
Sabemos que nosso V11 está mantendo um determinado valor.
Então, neste caso, vamos escrever isso aqui.
E isso está mantendo o valor de 15. 0 em float.
Ok, vamos lá, então temos o I get object e podemos ver que temos nosso P zero, que é o operador this.
Portanto, vamos marcá-lo dessa forma.
E esse operador vem dessa palavra de ponto.
Então e esse começo.
Mas estamos armazenando esse valor em v zero.
Tudo bem.
A seguir, vejamos.
Temos o I get mais uma vez, estamos obtendo o valor em V seis.
Nessa visão geral, não temos o valor de V six, mas isso também não é tão importante,
pois podemos ver que v six é a posição x em float, a afeição, esse valor e o armazenamento em v one, o que significa que estamos tendo
aqui e sim um campo de instância do tipo position.
Então, queremos que isso agora seja um pouco diferente desse tipo aqui, posição ponto x.
Muito bem, então.
Estamos subtraindo v 11 de v um e estamos armazenando o resultado em v um.
Isso significa que temos algo que queremos.
Isso é igual a v um menos v 11.
Então, qual é a nossa exposição e agora estamos subtraindo da nossa posição ex v 11 e 11 é o nosso valor
de 15 float.
Isso significa que agora temos nossa espaçonave que tem X e Y, e agora estamos subtraindo isso, vamos desenhar
essa linha imaginária.
Portanto, agora estamos subtraindo dessa posição -15.
Está bem.
É isso que está sendo mantido agora.
Nós queremos.
Muito bem, então temos a posição de divisão.
Vimos que esse não é muito relevante para nós, pois não podemos mover nossa nave para cima ou para baixo.
Só podemos movê-lo da direita para a esquerda.
Está bem.
Portanto, este está sendo armazenado no B to B e agora está em espera.
Hmm.
Sim.
No entanto, vamos usar a mesma cor.
Portanto, até o momento, tudo está claro.
Agora chamamos isso de invoke static em v zero.
Queremos que B invoque static significa que não temos esse objeto.
Temos três parâmetros.
Vejamos.
Esses três parâmetros estão aqui.
Sim.
Portanto, o primeiro é este.
É uma palavra.
Depois, temos este, que é um número flutuante, e temos este aqui, que também é um número
flutuante.
E estamos voltando para lá e para cá.
Está bem.
Portanto, para que isso não seja tão confuso quanto o anterior, vamos simplesmente usá-lo desta forma.
Por isso, estamos chamando a fábrica de entidades para criar a foto do jogador aqui.
Tudo bem.
É isso que estamos chamando aqui.
E estamos devolvendo uma entidade.
Isso significa que criamos uma chance.
Está bem.
Nossos registros ou parâmetros são V0 um e V dois.
Portanto, isso significa este.
Aqui está nosso primeiro parâmetro e este aqui é o segundo, mas não este.
E este aqui é o nosso segundo parâmetro.
E este aqui é o terceiro parâmetro porque subtraímos o valor antes de usá-lo como
parâmetro, vamos desenhar isso.
Aqui estamos usando V um e aqui estamos subtraindo um valor de v um.
Portanto, estamos fornecendo um deslocamento dessa posição para essa função.
Então vamos ver o que temos a seguir.
Depois, temos o I get object.
Portanto, estamos buscando outro objeto desse tipo.
Portanto, P zero é o nosso objeto e estamos obtendo esse mundo de pontos mais uma vez e colocando-o em
v zero.
A propósito, ainda não fazemos nada com esse valor de retorno aqui.
Portanto, estamos chamando esse método estático, mas não usamos essa entidade no momento.
Isso também é bastante interessante.
Está bem.
Mas voltando ao assunto.
Portanto, zero é agora a palavra inicial.
Ok, então estamos buscando a posição X mais uma vez.
Portanto, B seis está sendo armazenado em v um e podemos ver aqui e esta é a nossa posição x.
Do tipo float.
Então, um está mantendo a posição x OC e, em seguida, estamos adicionando, este agora está adicionando mais e este
aqui estava subtraindo menos.
Portanto, estamos adicionando agora nosso valor e registrando v 11 a esse OC.
Portanto, queremos pegar ou tentar pegar a mesma cor.
Isso é um pouco, mas é o OC que queremos agora.
Nossa posição X, portanto, é nós um mais nós 11.
Então, temos isso sim.
A parte inversa disso agora.
Portanto, agora estamos indo mais 15 nessa direção aqui.
Está bem.
Até o momento, tudo está claro.
Sabemos o que é este, este, este e também este e este.
Muito bem, agora estamos buscando a posição why e armazenando-a em V dois.
Ok, então vamos escrever aqui em b dois é agora, mas nos comercialize.
É a instrução antes da posição V dois agora que está correta.
Portanto, isso também está claro e, em seguida, temos nossa caixa de entrada estática aqui mais uma vez para que
possamos ver que esta aqui é a mesma que esta aqui.
Então, invoque a estática, estamos chamando a entidade create player shot e estamos chamando-a novamente em 0v1v2.
Isso significa que este é o nosso primeiro parâmetro, este aqui é o segundo parâmetro e este aqui é o terceiro
parâmetro.
Isso significa que estamos criando agora uma nova foto de jogador diretamente aqui.
Portanto, temos que limpar isso.
E agora estamos criando uma nova foto de jogador aqui, mais 15.
E, novamente, não fazemos nada com o valor de retorno.
E este aqui está relacionado à hora de fotografar.
Tudo bem.
Portanto, nosso método termina aqui, neste ponto.
Bem, digamos que nossa abordagem para criar uma foto dupla comece bem aqui e termine aqui.
Portanto, essa é a parte em que precisamos nos concentrar.
Está bem.
Parece que está uma bagunça mais uma vez, mas espero que você possa acompanhar esse caso.
Portanto, vamos aprofundar um pouco mais essa questão.
Isso significa este aqui nesta linha, nesta linha, nesta linha, nesta linha, nesta linha e nesta linha e também nesta
linha.
Isso se refere à foto do jogador da esquerda.
E esta linha, esta linha, esta linha, esta linha e esta linha.
Isso se refere à foto do jogador certo.
E também podemos ver isso como uma identificação dos números de linha aqui.
Está bem.
Portanto, se você quiser criar uma nova foto de jogador, será necessário copiar e colar essa parte aqui e, em seguida,
modificar isso aqui.
Podemos fazer isso modificando ou substituindo o registro B11 por outro.
Por exemplo, aqui podemos ver esse número flutuante de 2. 5.
Isso significa que podemos criar um novo registro logo antes.
Vamos chamar esse eu de 12.
Não tenho certeza se o B 12 está sendo usado, mas se você quiser criar um novo número de ponto flutuante 0. 2. 5, podemos usar esse
valor aqui.
Portanto, usando esse valor aqui e alterando o 11 para o nosso registro recém-criado, temos 12.
Isso deve funcionar, mas deve ser feito em nossa versão copiada desta aqui.
Então, deixe-me esclarecer isso um pouco.
Está bem.
Portanto, esse é o trabalho que precisamos fazer.
Portanto, se você ainda consegue entender o que está acontecendo aqui, estou muito feliz com isso.
Agora vou prosseguir com essa solução.
Portanto, sinta-se à vontade para pausar e retroceder se quiser tentar fazer isso por conta própria agora mesmo.
Caso contrário, sim.
Vamos seguir em frente.