﻿1
00:00:04,780 --> 00:00:05,920
‫Olá e bem-vindo.

2
00:00:05,920 --> 00:00:11,800
‫Nesta palestra, vamos aprender sobre como podemos obter saídas de funções em C++.

3
00:00:12,130 --> 00:00:18,940
‫E vamos usar isso para simplificar muito nosso código e começar a implementar alguns desses pseudocódigos que

4
00:00:18,940 --> 00:00:19,750
‫escrevemos.

5
00:00:19,780 --> 00:00:20,560
‫Vamos mergulhar.

6
00:00:21,070 --> 00:00:26,290
‫Então, antes de tentarmos entender os valores de retorno das funções, vamos fazer um breve desvio e compreendê-lo.

7
00:00:26,290 --> 00:00:29,110
‫Dois conceitos adicionam mais dois conceitos ao nosso colossalmente.

8
00:00:29,650 --> 00:00:32,080
‫Então a primeira é a expressão.

9
00:00:32,080 --> 00:00:36,880
‫Uma expressão é um fragmento de código que produz um valor.

10
00:00:37,120 --> 00:00:42,940
‫E tem a declaração que é um fragmento de código que é uma ação a ser executada.

11
00:00:43,660 --> 00:00:50,980
‫Agora esses dois realmente tem um relacionamento em que uma expressão quase sempre é uma declaração em que para calcular o

12
00:00:51,130 --> 00:00:56,830
‫valor de um fragmento de código, você precisa que seja uma ação a ser executada.

13
00:00:57,250 --> 00:01:00,970
‫Mas o mesmo não é necessariamente verdade ao contrário.

14
00:01:00,970 --> 00:01:04,510
‫Uma declaração nem sempre vai lhe dar um valor.

15
00:01:04,990 --> 00:01:09,850
‫Então vamos dar uma olhada em alguns exemplos de expressões e algumas coisas que não são do código

16
00:01:09,850 --> 00:01:10,720
‫que já escrevemos.

17
00:01:11,260 --> 00:01:20,350
‫Então, quando digitamos meu vetor em C++, isso é uma expressão porque tem o valor de tudo o que está armazenado dentro

18
00:01:20,350 --> 00:01:22,300
‫da variável my vector.

19
00:01:22,570 --> 00:01:24,700
‫O mesmo vale para o vetor local.

20
00:01:24,720 --> 00:01:32,500
‫Na verdade, se você tem vetor local mais ponto z, isso em si é uma expressão e vetor local ponto

21
00:01:32,500 --> 00:01:33,670
‫z mais 100.

22
00:01:33,940 --> 00:01:40,570
‫Isso também é uma expressão, porque o vetor local ponto z forneceu o valor dentro do membro

23
00:01:40,870 --> 00:01:41,410
‫Z.

24
00:01:41,710 --> 00:01:46,900
‫E quando você adiciona 100, isso lhe dá um novo valor que tem a adição de 100.

25
00:01:46,900 --> 00:01:48,430
‫Então tudo isso são expressões.

26
00:01:49,030 --> 00:01:55,330
‫Porém, algo que não é uma expressão é quando declaramos nosso vetor local, quando falamos vetor, vetor local é igual ao meu

27
00:01:55,330 --> 00:01:58,810
‫vetor e colocamos um ponto e vírgula no final da linha.

28
00:01:58,810 --> 00:02:00,970
‫Não podemos usar isso para obter um valor.

29
00:02:00,970 --> 00:02:02,530
‫Não há valor aí.

30
00:02:02,530 --> 00:02:06,160
‫Está apenas dizendo ao C++ que Aqui está uma ação para você executar.

31
00:02:06,430 --> 00:02:09,100
‫Eu quero que você crie um novo vetor local.

32
00:02:09,460 --> 00:02:11,740
‫Então não é uma expressão.

33
00:02:12,370 --> 00:02:16,960
‫No entanto, algo que é uma expressão é obter a localização do ator.

34
00:02:16,960 --> 00:02:20,920
‫É uma função que estamos chamando porque há parênteses no final aqui.

35
00:02:20,920 --> 00:02:22,660
‫Na verdade, não temos argumentos aqui.

36
00:02:22,660 --> 00:02:26,230
‫Esta é uma lista vazia de argumentos, mas está chamando algo.

37
00:02:26,230 --> 00:02:34,720
‫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

38
00:02:34,720 --> 00:02:37,750
‫qualquer coisa que seja retornada da função.

39
00:02:37,750 --> 00:02:44,230
‫E isso é essencialmente o mesmo que as canetas de saída que vimos anteriormente em um projeto.

40
00:02:44,260 --> 00:02:50,770
‫Exceto ao contrário dos blueprints, você só pode ter um valor de saída de uma função.

41
00:02:50,770 --> 00:02:52,360
‫Há apenas um valor de retorno.

42
00:02:52,750 --> 00:02:59,590
‫Então é isso que podemos usar aqui onde escrevemos nosso pseudocódigo que diz obter a localização atual.

43
00:02:59,890 --> 00:03:02,410
‫É aí que vamos fazer isso.

44
00:03:02,410 --> 00:03:08,380
‫Vamos obter a localização usando nosso local de acesso.

45
00:03:08,380 --> 00:03:11,050
‫Então vamos criar uma nova variável local aqui.

46
00:03:11,470 --> 00:03:14,560
‫Teremos uma nova variável local chamada F do tipo efeito.

47
00:03:14,560 --> 00:03:21,370
‫Tem que ser um vetor do tipo S porque esse é o tipo retornado de get em um

48
00:03:21,370 --> 00:03:31,900
‫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

49
00:03:32,020 --> 00:03:37,300
‫parênteses correspondentes e, em seguida, um ponto e vírgula para terminar a linha.

50
00:03:37,690 --> 00:03:44,050
‫Então, se dissecarmos essa linha um pouco, podemos ver que esse pedaço aqui, a localização get act e os

51
00:03:44,050 --> 00:03:49,780
‫parênteses é a expressão que está nos obtendo o valor, que é a localização atual do ator.

52
00:03:50,380 --> 00:03:56,860
‫Então estamos fazendo uma atribuição para o local atual, que também está sendo declarado aqui.

53
00:03:57,160 --> 00:04:00,520
‫Então nesta linha, toda esta linha não é uma expressão.

54
00:04:00,520 --> 00:04:02,860
‫Não há valor nisso, é uma afirmação.

55
00:04:03,280 --> 00:04:09,670
‫E geralmente você pode dizer uma declaração porque em C++ ela termina em um ponto e vírgula.

56
00:04:09,820 --> 00:04:16,750
‫Ok, então isso vai essencialmente nos permitir acabar com o meu vetor e os

57
00:04:16,750 --> 00:04:23,590
‫vetores locais que usamos anteriormente, porque devemos ser capazes de atualizar nossa variável local

58
00:04:23,590 --> 00:04:29,200
‫aqui, esta localização atual que temos do localização do nosso ator.

59
00:04:29,620 --> 00:04:34,300
‫Então o que vamos fazer é mais abaixo aqui, temos um comentário que diz, definir o local.

60
00:04:34,300 --> 00:04:45,220
‫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

61
00:04:45,430 --> 00:04:50,200
‫ponto e vírgula no final da linha para dizer que tudo isso

62
00:04:50,200 --> 00:04:51,430
‫é uma declaração.

63
00:04:51,430 --> 00:04:58,960
‫Queremos que ele execute essa ação definida em um local e observe que, enquanto meus comentários são

64
00:04:58,960 --> 00:05:04,060
‫recuados, decidi não recuar o código para corresponder porque geralmente queremos.

65
00:05:04,600 --> 00:05:08,890
‫Os códigos devem estar em um nível de recuo dentro da função.

66
00:05:09,760 --> 00:05:15,430
‫Agora o que posso fazer é remover todo o código que tínhamos anteriormente, tudo envolvendo vetor local, meu vetor

67
00:05:15,430 --> 00:05:19,420
‫definido em um local usando o vetor local, posso remover tudo isso.

68
00:05:19,780 --> 00:05:23,530
‫Então, tudo o que temos agora são as coisas em torno de nossos comentários.

69
00:05:24,100 --> 00:05:27,060
‫E também, vou entrar no arquivo de cabeçalho e limpar um pouco as coisas aqui.

70
00:05:27,070 --> 00:05:28,660
‫Não precisamos mais do meu vetor.

71
00:05:28,660 --> 00:05:31,390
‫Não precisamos mais das propriedades my ex u.

72
00:05:31,390 --> 00:05:34,270
‫Então vou deletar esses também.

73
00:05:34,510 --> 00:05:39,930
‫Agora, obviamente, a plataforma móvel CP não faz muita coisa porque obtemos a localização atual

74
00:05:39,940 --> 00:05:44,560
‫do ator, então a configuramos novamente, o que basicamente não tem efeito.

75
00:05:44,680 --> 00:05:52,630
‫Então, eu gostaria que você tentasse atualizar a localização atual da plataforma móvel nessa função tick.

76
00:05:53,110 --> 00:05:56,470
‫Portanto, use os membros X ou Y como achar melhor.

77
00:05:56,470 --> 00:05:57,730
‫Bem, X vai avançar.

78
00:05:57,730 --> 00:06:05,170
‫Y irá movê-lo para a direita, então você pode adicionar a ele e atribuir de volta ao membro, como fizemos anteriormente,

79
00:06:05,170 --> 00:06:08,500
‫para atualizar a localização de nossas plataformas móveis.

80
00:06:08,950 --> 00:06:15,880
‫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

81
00:06:15,880 --> 00:06:20,830
‫seu local inicial porque agora não temos essa variável de membro para informar o local

82
00:06:20,830 --> 00:06:23,770
‫inicial, na verdade estamos usando o local atual.

83
00:06:23,980 --> 00:06:28,690
‫Então, onde quer que você coloque essa plataforma, é de onde a plataforma começará.

84
00:06:29,290 --> 00:06:35,140
‫E então eu gostaria que você compilasse e testasse seu código e visse se ele está se movendo, como você esperaria.

85
00:06:35,380 --> 00:06:36,970
‫Pause o vídeo e vá em frente.

86
00:06:40,000 --> 00:06:40,320
‫OK.

87
00:06:40,330 --> 00:06:41,020
‫Bem vindo de volta.

88
00:06:41,350 --> 00:06:47,110
‫Então, vamos colocar esta linha de código logo abaixo do comentário que fala sobre isso, adicione

89
00:06:47,200 --> 00:06:48,970
‫vetor a esse local.

90
00:06:49,630 --> 00:06:55,000
‫E a razão pela qual estamos colocando aqui é por causa da ordem em que queremos obter o

91
00:06:55,000 --> 00:06:56,790
‫local atual, atualizá-lo e defini-lo.

92
00:06:56,800 --> 00:06:59,530
‫Não queremos que nada fora de ordem aconteça lá.

93
00:07:00,100 --> 00:07:04,750
‫Se fôssemos atualizá-lo antes de criarmos a variável, bem, essa variável não existiria.

94
00:07:04,750 --> 00:07:06,250
‫Lembre-se, é uma variável local.

95
00:07:06,550 --> 00:07:10,870
‫Ele só existe quando o criamos dentro dessa chamada específica da função.

96
00:07:11,260 --> 00:07:16,690
‫E se tivéssemos feito isso depois de definir em um local novamente, essa modificação seria simplesmente

97
00:07:16,690 --> 00:07:19,960
‫descartada quando chegássemos ao Brice de fechamento na função.

98
00:07:20,440 --> 00:07:29,200
‫Então, vamos definir o local atual como ponto x, vou usar igual ao local atual, ponto x mais um e,

99
00:07:29,410 --> 00:07:33,940
‫em seguida, colocar ponto e vírgula no final da linha.

100
00:07:34,270 --> 00:07:40,030
‫E vamos voltar ao Unreal e vamos apertar o botão de compilação.

101
00:07:40,210 --> 00:07:45,580
‫E como mencionei, agora precisamos mover esta plataforma móvel para seu local inicial.

102
00:07:45,590 --> 00:07:51,430
‫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

103
00:07:51,430 --> 00:07:56,020
‫em copiar, depois indo para nossa plataforma móvel, clicando com o botão direito do mouse em sua localização,

104
00:07:56,020 --> 00:07:56,740
‫pressionando colar.

105
00:07:56,740 --> 00:08:01,270
‫Então, isso coloca a plataforma dentro do nosso player, o que não é realmente o que queremos.

106
00:08:01,630 --> 00:08:09,190
‫Então, vou movê-lo um pouco para a direita do jogador assim e posso ver se está na altura

107
00:08:09,190 --> 00:08:09,760
‫certa.

108
00:08:09,760 --> 00:08:15,370
‫Acho que vou diminuir um pouco, o que é um dos benefícios de usar a localização atual em vez

109
00:08:15,370 --> 00:08:19,900
‫de uma variável de localização, é que posso realmente ver onde essa plataforma estará no

110
00:08:19,900 --> 00:08:20,350
‫mundo.

111
00:08:20,890 --> 00:08:26,860
‫Então agora se eu for em frente e apertar play, então você pode ver que a plataforma está se movendo bem

112
00:08:26,860 --> 00:08:27,940
‫na direção X.

113
00:08:27,970 --> 00:08:31,440
‫Eu ainda posso pular nele e ser movido junto com ele.

114
00:08:31,450 --> 00:08:32,260
‫Coisas boas.

115
00:08:32,560 --> 00:08:36,310
‫Agora aprendemos como os valores de retorno funcionam com funções.

116
00:08:36,520 --> 00:08:42,880
‫Estamos realmente começando a entender muitos conceitos de blueprints no mundo C++.

117
00:08:43,210 --> 00:08:44,650
‫Vejo você na próxima palestra.

