‫Olá e bem-vindo.
‫Nesta palestra, vamos aprender sobre como podemos obter saídas de funções em C++.
‫E vamos usar isso para simplificar muito nosso código e começar a implementar alguns desses pseudocódigos que
‫escrevemos.
‫Vamos mergulhar.
‫Então, antes de tentarmos entender os valores de retorno das funções, vamos fazer um breve desvio e compreendê-lo.
‫Dois conceitos adicionam mais dois conceitos ao nosso colossalmente.
‫Então a primeira é a expressão.
‫Uma expressão é um fragmento de código que produz um valor.
‫E tem a declaração que é um fragmento de código que é uma ação a ser executada.
‫Agora esses dois realmente tem um relacionamento em que uma expressão quase sempre é uma declaração em que para calcular o
‫valor de um fragmento de código, você precisa que seja uma ação a ser executada.
‫Mas o mesmo não é necessariamente verdade ao contrário.
‫Uma declaração nem sempre vai lhe dar um valor.
‫Então vamos dar uma olhada em alguns exemplos de expressões e algumas coisas que não são do código
‫que já escrevemos.
‫Então, quando digitamos meu vetor em C++, isso é uma expressão porque tem o valor de tudo o que está armazenado dentro
‫da variável my vector.
‫O mesmo vale para o vetor local.
‫Na verdade, se você tem vetor local mais ponto z, isso em si é uma expressão e vetor local ponto
‫z mais 100.
‫Isso também é uma expressão, porque o vetor local ponto z forneceu o valor dentro do membro
‫Z.
‫E quando você adiciona 100, isso lhe dá um novo valor que tem a adição de 100.
‫Então tudo isso são expressões.
‫Porém, algo que não é uma expressão é quando declaramos nosso vetor local, quando falamos vetor, vetor local é igual ao meu
‫vetor e colocamos um ponto e vírgula no final da linha.
‫Não podemos usar isso para obter um valor.
‫Não há valor aí.
‫Está apenas dizendo ao C++ que Aqui está uma ação para você executar.
‫Eu quero que você crie um novo vetor local.
‫Então não é uma expressão.
‫No entanto, algo que é uma expressão é obter a localização do ator.
‫É uma função que estamos chamando porque há parênteses no final aqui.
‫Na verdade, não temos argumentos aqui.
‫Esta é uma lista vazia de argumentos, mas está chamando algo.
‫E como essa função tem um valor de retorno, a parte real do código aqui é uma expressão que assume o valor de
‫qualquer coisa que seja retornada da função.
‫E isso é essencialmente o mesmo que as canetas de saída que vimos anteriormente em um projeto.
‫Exceto ao contrário dos blueprints, você só pode ter um valor de saída de uma função.
‫Há apenas um valor de retorno.
‫Então é isso que podemos usar aqui onde escrevemos nosso pseudocódigo que diz obter a localização atual.
‫É aí que vamos fazer isso.
‫Vamos obter a localização usando nosso local de acesso.
‫Então vamos criar uma nova variável local aqui.
‫Teremos uma nova variável local chamada F do tipo efeito.
‫Tem que ser um vetor do tipo S porque esse é o tipo retornado de get em um
‫local e vamos chamar esse local atual e definir isso igual ao resultado da expressão, obter a localização do ator e, em seguida, definir os parênteses de
‫parênteses correspondentes e, em seguida, um ponto e vírgula para terminar a linha.
‫Então, se dissecarmos essa linha um pouco, podemos ver que esse pedaço aqui, a localização get act e os
‫parênteses é a expressão que está nos obtendo o valor, que é a localização atual do ator.
‫Então estamos fazendo uma atribuição para o local atual, que também está sendo declarado aqui.
‫Então nesta linha, toda esta linha não é uma expressão.
‫Não há valor nisso, é uma afirmação.
‫E geralmente você pode dizer uma declaração porque em C++ ela termina em um ponto e vírgula.
‫Ok, então isso vai essencialmente nos permitir acabar com o meu vetor e os
‫vetores locais que usamos anteriormente, porque devemos ser capazes de atualizar nossa variável local
‫aqui, esta localização atual que temos do localização do nosso ator.
‫Então o que vamos fazer é mais abaixo aqui, temos um comentário que diz, definir o local.
‫Então, depois dessa linha de comentário, vou definir um local de ator usando a expressão local atual, que é apenas usar esse valor de variável e, em seguida, colocar um
‫ponto e vírgula no final da linha para dizer que tudo isso
‫é uma declaração.
‫Queremos que ele execute essa ação definida em um local e observe que, enquanto meus comentários são
‫recuados, decidi não recuar o código para corresponder porque geralmente queremos.
‫Os códigos devem estar em um nível de recuo dentro da função.
‫Agora o que posso fazer é remover todo o código que tínhamos anteriormente, tudo envolvendo vetor local, meu vetor
‫definido em um local usando o vetor local, posso remover tudo isso.
‫Então, tudo o que temos agora são as coisas em torno de nossos comentários.
‫E também, vou entrar no arquivo de cabeçalho e limpar um pouco as coisas aqui.
‫Não precisamos mais do meu vetor.
‫Não precisamos mais das propriedades my ex u.
‫Então vou deletar esses também.
‫Agora, obviamente, a plataforma móvel CP não faz muita coisa porque obtemos a localização atual
‫do ator, então a configuramos novamente, o que basicamente não tem efeito.
‫Então, eu gostaria que você tentasse atualizar a localização atual da plataforma móvel nessa função tick.
‫Portanto, use os membros X ou Y como achar melhor.
‫Bem, X vai avançar.
‫Y irá movê-lo para a direita, então você pode adicionar a ele e atribuir de volta ao membro, como fizemos anteriormente,
‫para atualizar a localização de nossas plataformas móveis.
‫Então adicione um ou dois dependendo de quão rápido você quer que a plataforma se mova e então mova a plataforma para
‫seu local inicial porque agora não temos essa variável de membro para informar o local
‫inicial, na verdade estamos usando o local atual.
‫Então, onde quer que você coloque essa plataforma, é de onde a plataforma começará.
‫E então eu gostaria que você compilasse e testasse seu código e visse se ele está se movendo, como você esperaria.
‫Pause o vídeo e vá em frente.
‫OK.
‫Bem vindo de volta.
‫Então, vamos colocar esta linha de código logo abaixo do comentário que fala sobre isso, adicione
‫vetor a esse local.
‫E a razão pela qual estamos colocando aqui é por causa da ordem em que queremos obter o
‫local atual, atualizá-lo e defini-lo.
‫Não queremos que nada fora de ordem aconteça lá.
‫Se fôssemos atualizá-lo antes de criarmos a variável, bem, essa variável não existiria.
‫Lembre-se, é uma variável local.
‫Ele só existe quando o criamos dentro dessa chamada específica da função.
‫E se tivéssemos feito isso depois de definir em um local novamente, essa modificação seria simplesmente
‫descartada quando chegássemos ao Brice de fechamento na função.
‫Então, vamos definir o local atual como ponto x, vou usar igual ao local atual, ponto x mais um e,
‫em seguida, colocar ponto e vírgula no final da linha.
‫E vamos voltar ao Unreal e vamos apertar o botão de compilação.
‫E como mencionei, agora precisamos mover esta plataforma móvel para seu local inicial.
‫Então, vou clicar em um personagem de terceira pessoa e copiar sua localização clicando com o botão direito do mouse no local, clicando
‫em copiar, depois indo para nossa plataforma móvel, clicando com o botão direito do mouse em sua localização,
‫pressionando colar.
‫Então, isso coloca a plataforma dentro do nosso player, o que não é realmente o que queremos.
‫Então, vou movê-lo um pouco para a direita do jogador assim e posso ver se está na altura
‫certa.
‫Acho que vou diminuir um pouco, o que é um dos benefícios de usar a localização atual em vez
‫de uma variável de localização, é que posso realmente ver onde essa plataforma estará no
‫mundo.
‫Então agora se eu for em frente e apertar play, então você pode ver que a plataforma está se movendo bem
‫na direção X.
‫Eu ainda posso pular nele e ser movido junto com ele.
‫Coisas boas.
‫Agora aprendemos como os valores de retorno funcionam com funções.
‫Estamos realmente começando a entender muitos conceitos de blueprints no mundo C++.
‫Vejo você na próxima palestra.