﻿1
00:00:04,390 --> 00:00:05,230
‫Olá e bem-vindo.

2
00:00:05,230 --> 00:00:08,770
‫Nesta palestra, veremos as coisas do ponto de vista do jogador.

3
00:00:08,770 --> 00:00:15,010
‫Nós estaremos pegando a janela de visualização do jogador, a localização e rotação da câmera, essencialmente,

4
00:00:15,400 --> 00:00:20,980
‫para que quando apertarmos o botão de gatilho, possamos desenhar uma câmera de depuração.

5
00:00:20,980 --> 00:00:26,680
‫Esses carinhas vermelhos aqui, essas pequenas câmeras quadradas vermelhas que nos mostram onde está a janela de visualização.

6
00:00:27,010 --> 00:00:28,030
‫E podemos confirmar isso.

7
00:00:28,030 --> 00:00:31,960
‫Podemos usar isso mais tarde para o rastreamento de raios da arma.

8
00:00:31,990 --> 00:00:34,750
‫Vamos mergulhar e ver tudo isso em ação.

9
00:00:36,230 --> 00:00:38,280
‫Deixe-me começar esta palestra com uma pergunta.

10
00:00:38,300 --> 00:00:45,800
‫Então, se você está mirando através de sua janela de visualização assim e está tentando alinhar o centro da tela com o centro de

11
00:00:45,800 --> 00:00:50,810
‫comando D on D ou o centro de comando zero, seja lá o que for.

12
00:00:51,350 --> 00:00:54,610
‫E eu aponto o que eu visaria?

13
00:00:54,950 --> 00:00:56,150
‫O que eu esperaria acertar?

14
00:00:56,570 --> 00:00:59,660
‫Você pode dizer, bem, eu esperaria que atingisse essa soma zero.

15
00:00:59,660 --> 00:01:01,010
‫Essa parece ser a resposta óbvia.

16
00:01:01,320 --> 00:01:06,080
‫Bem, isso não é necessariamente o que você vai acertar, dependendo de como você faz as coisas, como você

17
00:01:06,080 --> 00:01:06,950
‫faz sua reformulação.

18
00:01:06,950 --> 00:01:11,030
‫Então, vamos dar uma olhada nas estratégias que temos para reformular o mais óbvio.

19
00:01:11,330 --> 00:01:15,880
‫Como você disse, bem, estamos disparando da arma, então vamos rebaixar o cano da arma.

20
00:01:15,890 --> 00:01:20,390
‫Ah, a propósito, essa configuração, que é muito, muito grosseira, é basicamente uma configuração de terceira pessoa.

21
00:01:20,390 --> 00:01:21,800
‫Temos uma câmera aqui atrás.

22
00:01:21,800 --> 00:01:23,810
‫Temos o personagem, temos a arma.

23
00:01:23,810 --> 00:01:26,510
‫E ele está tentando atirar em outro personagem alvo aqui.

24
00:01:26,990 --> 00:01:31,100
‫Então, bem, antes de mais nada, nós saímos da arma como aquele aluno.

25
00:01:31,310 --> 00:01:37,940
‫Talvez falhe porque nossa câmera não está apontando para onde a arma está apontando, não necessariamente.

26
00:01:38,150 --> 00:01:41,480
‫Mesmo que eles possam estar apontando na mesma direção, eles estão ligeiramente deslocados um do

27
00:01:41,720 --> 00:01:43,940
‫outro, então eles não necessariamente atingirão as mesmas coisas.

28
00:01:43,940 --> 00:01:48,170
‫Em vez disso, você pode escolher que deseja reformular a partir da câmera.

29
00:01:48,620 --> 00:01:54,530
‫Isso significa que o que quer que a câmera esteja olhando será a coisa que será atingida e isso geralmente

30
00:01:54,530 --> 00:01:57,230
‫parece mais natural em jogos de terceira pessoa.

31
00:01:57,740 --> 00:02:02,510
‫Quando você está em jogos em primeira pessoa, as coisas ficam um pouco mais próximas porque muitas vezes você está muito perto do

32
00:02:02,510 --> 00:02:02,930
‫barril.

33
00:02:02,930 --> 00:02:07,070
‫Mas mesmo em jogos em primeira pessoa, essa regra tende a ser o caso.

34
00:02:07,070 --> 00:02:10,760
‫Você não quer se mover onde o ponto de mira está na tela.

35
00:02:11,030 --> 00:02:16,940
‫Você normalmente tem um pequeno pedaço de interface do usuário que se sobrepõe aqui no meio da tela, e é aí que

36
00:02:16,940 --> 00:02:18,620
‫você vai apontar para baixo.

37
00:02:18,620 --> 00:02:24,710
‫E é por isso que tendemos a fazer nossa reformulação com armas lançadas à direita nesta janela de visualização.

38
00:02:25,430 --> 00:02:32,330
‫Agora, felizmente, há uma maneira de obtermos essa viewport e, na verdade, fazemos isso a partir do controlador,

39
00:02:32,330 --> 00:02:34,250
‫obtemos a viewport do controlador.

40
00:02:34,670 --> 00:02:41,690
‫Então, isso exige que vá ao personagem, encontre o controlador do personagem e, em seguida, encontre sua

41
00:02:41,690 --> 00:02:44,000
‫localização e rotação da viewport.

42
00:02:44,420 --> 00:02:50,480
‫E o que vamos fazer nesta palestra é tentar visualizar e confirmar que a localização e rotação da janela

43
00:02:50,480 --> 00:02:52,790
‫de visualização é o que esperaríamos.

44
00:02:53,270 --> 00:02:57,110
‫E vamos fazer isso desenhando alguns auxiliares de depuração.

45
00:02:57,590 --> 00:03:05,120
‫Agora os auxiliares de depuração estão em um arquivo de cabeçalho e o cabeçalho do nome dos arquivos é add debug.

46
00:03:06,340 --> 00:03:06,760
‫Ajude-nos.

47
00:03:06,760 --> 00:03:10,440
‫Curiosamente, acredito ou desenhe, desenhe, depure ajuda.

48
00:03:10,550 --> 00:03:10,960
‫Esse é o único.

49
00:03:11,620 --> 00:03:16,570
‫E se formos dar uma olhada neste F 12 para navegar até um arquivo de

50
00:03:16,570 --> 00:03:22,090
‫cabeçalho se você já o tiver em seus includes, vamos procurar um chamado camera draw debug camera.

51
00:03:22,090 --> 00:03:26,620
‫E isso desenha algo que se parece um pouco com o meu diagrama aqui, um pouco de um

52
00:03:26,890 --> 00:03:29,170
‫triângulo ou um tambor de alarido que podemos usar.

53
00:03:29,590 --> 00:03:31,070
‫Então o que vai demorar?

54
00:03:31,150 --> 00:03:37,600
‫E vai levar ao mundo uma localização dessa câmera, uma rotação para a dita câmera.

55
00:03:38,050 --> 00:03:41,780
‫Então, localização, rotação, campo de visão farão isso.

56
00:03:41,800 --> 00:03:46,900
‫Vamos definir isso provavelmente para um padrão como 90 graus como uma escala, como um padrão de cor.

57
00:03:46,900 --> 00:03:48,070
‫Estes são todos padronizados.

58
00:03:48,070 --> 00:03:49,480
‫Então, podemos apenas usar esses padrões.

59
00:03:50,110 --> 00:03:57,790
‫Então, vamos tentar desenhar uma câmera de depuração aqui na minha arma e vamos colocá-la no método de gatilho do pool porque é por isso que

60
00:03:57,820 --> 00:03:59,180
‫estamos fazendo nosso trabalho.

61
00:03:59,530 --> 00:04:01,800
‫Precisa antes de tudo, o que era?

62
00:04:01,810 --> 00:04:03,640
‫Era um mundo novo.

63
00:04:04,060 --> 00:04:06,130
‫Assim temos nosso mundo.

64
00:04:07,420 --> 00:04:08,590
‫Precisamos atrair.

65
00:04:08,950 --> 00:04:11,350
‫A próxima coisa seria um local.

66
00:04:11,360 --> 00:04:20,950
‫Vamos apenas obter a localização do ator por enquanto e fazer uma rotação de ator também.

67
00:04:22,090 --> 00:04:25,610
‫E então a última coisa que precisávamos era um campo de visão.

68
00:04:25,630 --> 00:04:33,250
‫Vamos apenas para um campo de visão de 90 graus, que é apenas uma coisa aleatória, e podemos ir em frente e

69
00:04:33,250 --> 00:04:35,590
‫compilar e ver se isso aparece.

70
00:04:36,340 --> 00:04:40,210
‫E então vamos apertar o play e apertar o.

71
00:04:41,200 --> 00:04:42,050
‫Botão de gatilho.

72
00:04:42,070 --> 00:04:43,420
‫Não estou vendo nada aqui.

73
00:04:43,420 --> 00:04:46,810
‫Vamos fazer um F8 e ver se podemos chegar mais perto.

74
00:04:47,780 --> 00:04:48,270
‫Hum hum.

75
00:04:48,490 --> 00:04:51,730
‫Ainda não mostrando nenhum tipo de câmera aqui.

76
00:04:51,740 --> 00:04:53,470
‫Eu estou querendo saber se é muito, muito pequeno.

77
00:04:54,580 --> 00:05:00,430
‫Então, uma das outras opções aqui é que podemos querer ter linhas persistentes.

78
00:05:01,180 --> 00:05:07,600
‫E isso significa que precisamos especificar tudo em C++ para que possamos definir nossa escala para um.

79
00:05:07,600 --> 00:05:14,290
‫Poderíamos até aumentá-lo talvez para uma escala de dois, apenas no caso de ser o tamanho que é um problema que podemos

80
00:05:14,410 --> 00:05:14,890
‫escolher.

81
00:05:14,890 --> 00:05:16,900
‫Uma cor mais visível pode ser o vermelho.

82
00:05:16,900 --> 00:05:18,730
‫Então f calico longo cólon vermelho.

83
00:05:19,510 --> 00:05:26,620
‫E então podemos tentar fazer com que as linhas persistentes sejam verdadeiras e tentar essa.

84
00:05:26,620 --> 00:05:27,460
‫Enfatizar.

85
00:05:28,440 --> 00:05:29,640
‫Então compilando novamente.

86
00:05:30,920 --> 00:05:32,540
‫E pulando em jogo.

87
00:05:33,290 --> 00:05:34,850
‫E lá vamos nós.

88
00:05:34,910 --> 00:05:35,630
‫Nós batemos.

89
00:05:37,390 --> 00:05:44,410
‫O gatilho, e você pode ver que aparece uma pequena caixa de câmera aqui onde apertamos o

90
00:05:44,410 --> 00:05:50,230
‫gatilho e sua rotação e localização são definidas pelas armas, localização e rotação.

91
00:05:50,350 --> 00:05:52,970
‫Então agora queremos tentar obter a janela de visualização.

92
00:05:52,990 --> 00:05:56,980
‫Então, como eu já disse, isso vai estar no nosso controlador.

93
00:05:57,400 --> 00:06:01,180
‫Então, vamos olhar para o ponto H do controlador novamente.

94
00:06:01,180 --> 00:06:06,340
‫Queremos o que está na estrutura do jogo e vamos procurar a janela de visualização aqui.

95
00:06:06,740 --> 00:06:07,330
‫Perdão?

96
00:06:07,330 --> 00:06:09,820
‫Na verdade, ponto de vista é a palavra que estamos procurando.

97
00:06:10,240 --> 00:06:10,990
‫E tem alguns aqui.

98
00:06:11,020 --> 00:06:15,460
‫Obtenha os olhos do ator, pontos de vista que estariam olhando através dos olhos do ator.

99
00:06:15,760 --> 00:06:21,370
‫Mas, na verdade, queremos obter o ponto de vista, que para um controlador aéreo usará seus olhos.

100
00:06:21,760 --> 00:06:24,460
‫Mas para um jogador, usaremos a câmera do jogador.

101
00:06:24,460 --> 00:06:25,540
‫Então é isso que queremos.

102
00:06:25,540 --> 00:06:27,460
‫Queremos o ponto de vista do jogador.

103
00:06:28,030 --> 00:06:31,840
‫Mas antes de tudo, temos que pegar esse controlador em primeiro lugar.

104
00:06:32,200 --> 00:06:38,920
‫E a maneira de fazer isso é, antes de tudo, precisamos fazer com que nosso dono se lembre de que quando

105
00:06:39,370 --> 00:06:44,860
‫tínhamos nosso personagem de atirador para manter aberto e descemos ou subimos para o início do jogo.

106
00:06:45,100 --> 00:06:47,980
‫Você pode ver que estamos configurando o dono das armas para ser o personagem.

107
00:06:48,520 --> 00:06:51,630
‫Isso significa que na arma podemos ir para o outro lado.

108
00:06:51,640 --> 00:06:56,680
‫Podemos dizer obter o proprietário e isso nos dará o personagem atirador.

109
00:06:57,010 --> 00:06:59,350
‫Agora, não vai saber que é um personagem de tiro.

110
00:06:59,350 --> 00:07:00,850
‫Tudo o que sabe é que é um ator.

111
00:07:00,850 --> 00:07:02,320
‫Então nós vamos ter que fazer um elenco aqui.

112
00:07:02,950 --> 00:07:07,540
‫Então fazemos um elenco para o personagem A Shooter.

113
00:07:08,600 --> 00:07:12,680
‫E, de fato, nem precisamos saber de nada além do fato de ser um personagem de tiro.

114
00:07:12,950 --> 00:07:18,770
‫É suficiente saber que é um peão, e qualquer peão pode então possuir esta arma, mesmo que não seja um

115
00:07:18,770 --> 00:07:19,640
‫personagem atirador.

116
00:07:19,850 --> 00:07:22,070
‫Portanto, tente ser o menos específico possível.

117
00:07:22,280 --> 00:07:24,140
‫Mas por que precisa ser um peão?

118
00:07:24,140 --> 00:07:29,270
‫Precisa ser um peão porque precisamos de um controlador e apenas peões podem ser possuídos por controladores.

119
00:07:29,720 --> 00:07:30,920
‫Então vamos colocar isso em uma variável.

120
00:07:30,920 --> 00:07:38,930
‫Vai ser uma -- estrela e então o peão do dono vai ser o nome da variável.

121
00:07:39,770 --> 00:07:42,110
‫Então precisamos verificar se isso não é nulo.

122
00:07:48,750 --> 00:07:53,820
‫E vou fazer isso com uma linha que diz que se for agora, voltamos mais cedo do Apple

123
00:07:54,150 --> 00:07:59,070
‫Trigger para que não tenhamos nenhum risco de tentar resfriar qualquer coisa com um ponteiro nulo.

124
00:07:59,580 --> 00:08:09,830
‫Então, podemos fazer um controlador de obtenção de proprietário e queremos salvá-lo no armazenamento do controlador A.

125
00:08:10,110 --> 00:08:12,720
‫E este pode ser o controlador proprietário.

126
00:08:14,210 --> 00:08:14,870
‫Igual a.

127
00:08:15,590 --> 00:08:19,610
‫E, novamente, queremos apenas verificar se isso não é nulo porque vamos

128
00:08:19,610 --> 00:08:23,660
‫chamar um método sobre isso e não podemos chamar métodos em ponteiros nulos.

129
00:08:23,960 --> 00:08:26,690
‫Torna irreal, infeliz e falha.

130
00:08:27,050 --> 00:08:31,220
‫Então é aqui que podemos fazer nosso próprio controlador.

131
00:08:33,310 --> 00:08:37,000
‫E devemos ser capazes de chamar isso de um ponto de vista.

132
00:08:38,450 --> 00:08:43,250
‫Então aqui vem o desafio para você definir esse local e rotação usando essa nova função.

133
00:08:43,520 --> 00:08:45,860
‫Você pode ver a assinatura para nós novamente.

134
00:08:45,860 --> 00:08:52,000
‫Nós vamos para o Controller Dot H, pegamos um arquivo e olhamos para ele jogar um ponto de vista.

135
00:08:52,010 --> 00:08:58,700
‫Tente ver se a partir desta assinatura você pode descobrir como usá-la para obter a localização e rotação que queremos passar

136
00:08:58,700 --> 00:09:01,250
‫para o nosso auxiliar de depuração de desenho.

137
00:09:01,820 --> 00:09:05,630
‫E então você vai se lembrar que isso está usando parâmetros.

138
00:09:05,630 --> 00:09:12,770
‫Portanto, revise os parâmetros do seu aplicativo, desenhe a câmera de depuração usando o snippet que acabamos de escrever e teste-o na

139
00:09:12,770 --> 00:09:14,090
‫janela de visualização.

140
00:09:14,360 --> 00:09:19,340
‫Vá e clique no botão de gatilho algumas vezes em locais diferentes e veja onde a câmera acaba mostrando

141
00:09:19,340 --> 00:09:21,110
‫o vídeo de pausa e tente.

142
00:09:22,440 --> 00:09:22,760
‫OK.

143
00:09:22,770 --> 00:09:23,250
‫Bem vindo de volta.

144
00:09:23,550 --> 00:09:24,630
‫Portanto, obtenha o ponto de vista do plano.

145
00:09:24,630 --> 00:09:29,640
‫Vou copiar o nome do método e trazê-lo aqui porque é um parâmetro de saída.

146
00:09:29,670 --> 00:09:36,090
‫Precisarei declarar primeiro as variáveis nas quais quero que esses valores entrem na localização do vetor.

147
00:09:36,780 --> 00:09:41,070
‫Temos um F, um rotador, uma rotação.

148
00:09:42,320 --> 00:09:45,590
‫E queremos passá-los como argumentos.

149
00:09:45,620 --> 00:09:48,080
‫Deixe-me apenas corrigir meu recuo lá um pouco.

150
00:09:48,470 --> 00:09:51,620
‫E vamos passar no local, o rodízio.

151
00:09:52,280 --> 00:09:58,520
‫E sabemos que, porque acabou de ser declarado aqui ao ler isso, podemos adivinhar que esses são agora

152
00:09:58,520 --> 00:10:03,890
‫nossos parâmetros, mesmo que não haja nenhuma utilidade de sintaxe do C++ a esse respeito.

153
00:10:04,550 --> 00:10:09,440
‫E então podemos passar este local em vez do local do ator, e

154
00:10:09,440 --> 00:10:17,870
‫podemos passar essa rotação em vez da rotação ativa em nossa câmera de depuração e podemos seguir em frente e construir essa compilação e

155
00:10:17,870 --> 00:10:19,070
‫testá-la no editor.

156
00:10:19,340 --> 00:10:21,290
‫Bem, parece que a compilação está completa.

157
00:10:21,300 --> 00:10:22,850
‫Vamos jogar.

158
00:10:23,540 --> 00:10:29,110
‫E quando eu apertei o Trigger, você podia ver uma câmera aparecendo bem acima do meu ponto de vista.

159
00:10:29,120 --> 00:10:29,900
‫Isso é um bom sinal.

160
00:10:30,260 --> 00:10:31,370
‫Eu recuo um pouco.

161
00:10:31,370 --> 00:10:32,000
‫Você pode ver.

162
00:10:32,000 --> 00:10:32,480
‫Ai está.

163
00:10:32,480 --> 00:10:38,240
‫Temos essas câmeras que estão apontando exatamente na direção certa de onde eu estava olhando.

164
00:10:38,240 --> 00:10:43,640
‫Então você pode imaginar como seremos capazes de disparar um raio daquela câmera até o

165
00:10:43,640 --> 00:10:48,860
‫final da câmera e tentar acertar algo ali que eu estava olhando na época.

166
00:10:49,100 --> 00:10:51,120
‫E é isso que vamos fazer na próxima palestra.

167
00:10:51,140 --> 00:10:51,680
‫Vejo você lá.

