Transcrições
1. Trailer do curso: Um dos gêneros mais populares nos jogos modernos é o atirador. Confie em mim, eu Google este cenotes legítimo dentro do gênero shooter vem em infinidade de sub-gêneros. Saqueadores como Destiny, campo de batalha militar e Call of Duty, C5a, arena halo, como Overwatch Survival Horror, Resident Evil. A lista realmente continua. Esta aula tem como objetivo ensinar-lhe os fundamentos da mecânica avançada de tiro em primeira pessoa, permitindo que você crie qualquer jogo de tiro de sua escolha. Oi, meu nome é Tim, mas alguns de vocês podem me conhecer melhor como madeira para o meu canal do YouTube com mais de 130 mil assinantes fora de fazer vídeos do YouTube em meus jogos favoritos, eu atualmente trabalho para Epic Games, o fabricantes do Unreal Engine no popular jogo Battle Royale Fortnite. Neste curso, vamos começar com um modelo completamente em branco para transformá-lo em um shooter robusto em primeira pessoa, vamos criar seis armas totalmente personalizáveis cada um, mas seus próprios sons, animações, tempos de
recarga, projeta bala, intensidade de recuo, efeitos de impacto, captadores de
munição e muito mais. Vou mostrar-lhe como imitar jogo,
como Call of Duty, como Call of Duty, usando traços de linha invisíveis para gerar eventos de sucesso dinâmicos, outras armas irão imitar títulos mais realistas, como campo de batalha, que disparam projéteis reais para fora das nossas armas, permitindo-nos personalizar a velocidade da bala e a força gravitacional. Vamos cobrir como explodir coisas com lançadores de granadas e foguetes. Vamos até fazer uma classe inimiga que responda dinamicamente ao dano dependendo da parte do corpo que atingimos o festival. Cada ativo usado neste curso é 100% gratuito, já que usaremos o Unreal Engine 4, o mesmo mecanismo de jogo usado para criar esses títulos AAA populares. Embora esta classe possa ser feita por qualquer pessoa, eu recomendo para aqueles com pelo menos alguma experiência de codificação do Unreal Engine, maior parte do nosso trabalho será feito scripting em blueprints. Então, se você quiser levar suas habilidades irreais para o próximo nível, ou você simplesmente quer aprender como jogos de tiro populares são criados. Siga-me e eu o guiarei pelo processo passo a passo. Em Unreal Engine 4.
2. Visão geral do projeto: Olá a todos e bem-vindos a esta aula no Unreal Engine 4, onde vamos construir um atirador em primeira pessoa. Meu nome é Tim. Estarei te guiando por todas as coisas legais e incríveis que vamos fazer nesta aula. Então eu vou tentar manter este primeiro vídeo bem direto e apenas tomar um pouco de tempo para rever de
uma maneira mais detalhada para quem esta classe é mais adequada. E então, quando tirar algum
tempo para ver o projeto final que vamos construir. Então, praticamente qualquer um que queira pode fazer essa aula, eu recomendo para pessoas que são mais de um nível intermediário. Então, se você tomou o curso anterior que eu fiz em jogos de aventura de ação, então você deve estar bem pisando neste. Quando digo intermediário, não me refiro a alguém que saiba uma quantidade extrema de coisas. Não quero
afastar as pessoas da aula se nunca tocaram no Unreal Engine antes. Mas você só tem que saber isso como se eu estivesse esperando que você saiba coisas muito básicas. Só não vai ser tomado o tempo para explicar o que as diferenças entre como um flutuador e um inteiro vai estar criando um monte de variáveis nesta classe. E eu não vou ter tempo para visão geral, como onde as coisas estão localizadas no mecanismo e o que é um projeto. E assim como as coisas básicas do tipo iniciante. Então, se você está preocupado com isso, você pode ir em frente e tomar as outras aulas que eu fiz. Mas se você se sentir bem confortável com essas coisas ou você simplesmente não se importa, então você está no lugar certo. Eu não vou ser o tipo de pessoa que vai
ser apenas arrastando para fora um monte de nós e apenas diz fazer isso, fazer aquilo, fazer aquilo,
e então boom, essa coisa funciona como eu realmente quero que as pessoas aprendam e entendam o que é que eu Estou fazendo. Então eu vou ser minucioso e meticuloso o melhor que eu puder para que você possa entender o que estamos realmente fazendo para que você possa criar algo por conta própria, porque você sabe, esse é o ponto, não é? Então, hmm. Só pensei em divulgar isso antes de começarmos. Mas se tiver alguma pergunta, sinta-se à vontade para deixá-las na discussão e
farei o meu melhor para respondê-las o mais rápido possível. Então, sim. Então vamos em frente e tirar algum tempo. Vou abrir o projeto que temos. Isso vai ser exatamente o que seu projeto vai parecer quando tudo estiver pronto e feito. Então, vou clicar em Play e veremos o que temos aqui. Então, imediatamente você vai notar que temos alguns inimigos aqui. Temos um tipo muito básico de minimapa que engana faixas. Podemos ver vestígios. Traça rastros. Quem se importa, onde nosso jogador está se movendo no mapa. Não é nada de especial, mas vai te dar uma idéia de como fazer esse tipo de coisa. Aqui temos dois tipos diferentes de superfícies que eu vou explicar por que eles estão lá em um momento. Aqui atrás temos nosso armário de armas. Temos seis armas diferentes que vão fazer, três das quais são imagens de acertos. Eles vão estar desenhando essas linhas invisíveis. É semelhante a um jogo como Call of Duty, onde o impacto da bala na superfície é instantâneo. E os últimos três aqui, o rifle, lança-granadas e o foguete. Esses vão ser projéteis. Nós realmente vamos gerar um projeto que, como um projétil que tem um componente de movimento para
ele, ele vai atirar para fora do cano de armas e nós vamos ver o que isso bate. E assim podemos fazer coisas legais com isso. Podemos aplicar velocidades diferentes e gravidade diferente para criar diferentes arcos e explosões e coisas legais como essa para causar algum dano de raio. A pistola é semiautomática. O rifle vai ter algum recuo para ele e ser uma variante automática na espingarda vai atirar um spread. Então, se chegarmos a qualquer uma dessas armas e apertarmos a tecla E, vamos equipá-la e você pode ver nossa munição atual ou munição reserva e, em seguida, também o tipo de fogo. E então você vê esta barra de resistência também aparecer no canto inferior direito. E então temos a nossa mira, que dinamicamente ajustada para o jogador se movendo e correndo. Então é tudo animado. Eu ficarei linda. Então a ordem em que estas armas são apanhadas, na verdade não importa, mas seja qual for a ordem em que as apanhem, vamos amarrá-las a essa chave. Então pegamos a pistola primeiro. Então, se eu acertar um, vamos voltar para o pistilo e eu acertei dois vão para o rifle de assalto aqui. Então três serão a nossa espingarda. Quatro são fuzis, cinco é o nosso lança-granadas, e seis é o nosso foguete. E todos eles têm seus sons legais e tudo mais. Então, se eu for em frente e voltar para a epístola para que você possa ver a bala se espalhando. Pense pistola para se sentir como a mira para foguete. Foguete não tem bom fogo no quadril. E o fogo do quadril é algo que vamos fazer e realmente importa. Vou explicar isso a segundos. Então, para os nossos tipos de munição, temos uma variante de AML por cada arma. Se eu chegar até ele e acertar E, não farei nada a menos que você pegue a resposta correta. Então esta é a munição da pistola. E se você olhar para nossas reservas, o 144 agora se torna 16 e 8. E não posso interagir com nenhum destes, mas troquei a espingarda de assalto. Posso pegar essa, a espingarda. Este. Você entendeu o ponto. Ok. Passando para nossos diferentes tipos de superfície. Então uma maneira de ilustrar isso na varredura de sucesso no show do projétil. Então, se eu atirar isso para o céu, as epístolas atingem Scan. Você está vendo, você está vendo alguns efeitos, mas nada está realmente acontecendo. Posso ir em frente e recarregar nossa arma. Mas se eu mudar para algo como a espingarda e eu acertar o firewall, na verdade, se você olhar para o cano, realmente viu algo sair disso. Novamente, é muito evidente que você usou o lançador de granadas. Pode ver um arco muito mais drástico lá. Então o que vamos fazer é ter
diferentes efeitos de impacto dependendo de diferentes superfícies. Então nós temos metal, que são manequim homens são de uma variante de metal porque estamos faltando no departamento de FX aqui. Basta dar uma demonstração e então nós temos pedra, então um par de efeitos diferentes. Então, se eu filmar isso, você percebe que alguns buracos de bala entram assim. E nós vamos personalizar os tamanhos desses. E você verá algumas pequenas cintilações de metal. E então temos diferente é um pouco difícil de ver com a pistola. Mas sim. Então, se eu mudar para o nosso rifle de assalto, algumas coisas que faremos com isso é se eu apenas segurar o gatilho e eu não estiver mirando, terei algum recuo que está movendo a arma para cima e as balas são tipo de espalhando aleatoriamente. Mas se eu fosse apontar no recuo não controlador e realmente só recarregar aqui por um segundo. Então eu posso demonstrar isso. Estou mirando e as balas aterram exatamente onde estamos mirando. Então teremos fogo realista adicionado a isso, então a espingarda, se atirarmos isso, teremos uma propagação. Como isso. Muito legal. Finalmente, eu vou mostrar, eu acho que eu mostrei à barra de resistência como isso vai para baixo para correr. Deixe ir. E depois volta como mágica. Uau. Por último, mas não menos importante, temos nossos inimigos. Então todos os nossos inimigos são iguais. E o que vamos fazer é recriar marcadores de sucesso. E nós vamos ter diferentes tipos de marcadores HIT dependendo se é um hit normal ou um hit kill. E então temos diferentes materiais físicos atribuídos a esses inimigos aqui. Vai detectar diferentes quantidades de dano dependendo de onde os atingimos. Então a cabeça vai fazer o máximo. - Sim, as cabeças podem fazer o máximo. Então temos o corpo, as pernas, os braços. Então, se eu fosse atingido no peito, 2015512, e então a cabeça é meio legal porque se acertarmos na cabeça dele vai ter um número amarelo como esse e então ele tem 100 de saúde. Então ele pode morrer aqui. E nós deveríamos ter um marcador de leitura como esse. E então temos uma física boneca de pano que são aplicadas a estes. Então nós vamos realmente atirar para fora um pouco de um impulso dependendo de onde nós atingi-los. Então, se eu tiver 20, 40, 60, 80. Então, se eu atirar nele como no braço, se
move para trás com o braço. E então uma arma diferente selecionar que a pistola não tem muita força, mas nosso choque e tem muita força. Então, se eu o acertasse aqui, ele estava voando para trás. Levamo-los para trás, rodas voando para a frente. Então tudo isso é ditado por onde estamos atingindo esses inimigos. Espingarda de atirador, podemos apontar com uma mira. Lá vamos nós. E por último, mas não menos importante, temos um lançador de granadas e o foguete para causar danos. Então você vai ver muitos números danificados e como um cone dele, assim para obter algumas explosões legais, alguns efeitos de impacto maiores e tudo mais. Então esse é praticamente o projeto. É o que vamos fazer. Isto. O que eu queria criar com isso era essencialmente como um modelo realmente, realmente ótimo. Então, a maneira como estamos construindo isso, como você verá, que quando tudo for dito e feito, você terá um sistema muito, muito robusto e
avançado de armas e captadores e materiais físicos diferentes para que você pode facilmente trocar em suas próprias malhas GAN e seus próprios efeitos sonoros se
quiser ser capaz de torná-lo o que quiser. Então, enquanto há arte, acho que nesta aula, como fazemos com efeitos sonoros e temos alguma arte. A maior parte do que vamos fazer será usar blueprints e scripting no Event Graph. Então eu queria ter todo esse conhecimento básico lá para que se você quisesse colocar isso em seu portfólio, você pode transformar isso facilmente em um atirador futurista trocando as malhas. Os efeitos sonoros, como eu disse, são que você pode torná-lo em sobrevivência tipo zumbi jogo. Você pode fazer desses caras alienígenas ou zumbis seus homens do exército ou o que quer que seja. Você pode ajustar a quantidade de munição e os tipos de quantidade de dano que eles causam. Vamos tornar tudo isso muito facilmente acessível. E a razão pela qual eu fiz isso foi porque eu queria fornecer uma base, como eu disse, que você possa fazer isso no tipo de jogo que você quer fazer com que o projeto de todos no final não pareça o mesmo. Então todos vocês terão isso, mas então vocês terão o conhecimento de editar isso facilmente e torná-lo em algo bonito que vocês querem, porque há tantos tipos diferentes de atiradores por aí. Então eu queria fornecer essa base para você. Então espero que isso pareça interessante e divertido, legal. E se acontecer, eu me juntarei a vocês no próximo vídeo. Então, obrigado por fazerem esta aula. Eu realmente aprecio se você é um retornante ou esta é a sua primeira vez. Em vamos começar no próximo vídeo.
3. Faça o download e instale: Olá a todos e bem-vindos de volta a outro vídeo Unreal Engine 4. Este vai ser muito curto, doce. E ao ponto que eu vou fazer é apenas falar brevemente sobre como você pode instalar o Unreal Engine 4 em seu computador se você ainda não tem. Então, se você abrir um navegador de sua escolha e ir para Unreal Engine.com ou qualquer outra coisa. Isto, estou nos Estados Unidos. Então, o que quer que seja para você, vá até aqui e você terá algumas informações sobre o motor em todas essas coisas legais, alguns jogos que foram feitos com ele. Todas essas coisas grandes e legais jogos épicos que eles têm acontecendo aqui. Basta ir em frente e clicar em Download. Você vai querer apenas obter a licença legal de criadores, que é absolutamente gratuita. Pressione o download e siga as etapas para fazer isso. Ao fazer isso, você também deve ter o lançador Epic Games instalado no seu computador. Então, se abrirmos isso e você tiver uma conta nele, você vai até essa aba Unreal Engine e depois ir para a biblioteca. Então você deve ver aqui esta é a versão Engine que você está indo para bater o Plus. E então você vai selecionar qual você quer. O que vamos usar para este projeto é 4.26.2 ou 4.26.2, eu acho que é o que é tecnicamente chamado. Tecnicamente falando, você pode usar o que quiser. Se você quiser usar este quatro pontos 27, ou se você quer ser realmente louco e fazer Unreal Engine 5, eu acho, vá em frente. Eu aconselharia você usar 4.26.2 porque é isso que eu vou usar. Isso é como a versão mais recente que é como não um acesso antecipado coisas. Então vai ser o mais estável. E embora não haja, como normalmente muitas diferenças
enormes entre as versões do Unreal Engine. Enquanto você faz isso, você pode encontrar um par desses pequenos tipos de coisas. Você pode achar que algo que estou fazendo é um pouco diferente na sua versão. Então, se você quer jogar pelo seguro e quer jogar de forma inteligente e não correr riscos, então baixe para 0.26.2 caso contrário, boa sorte para você. Mas quando ele fizer isso, estaremos prontos. No próximo vídeo, vamos começar a criar nosso projeto e adicionar alguns arquivos de conteúdo. Então, vejo-te lá.
4. Configurando nosso projeto: Todos e bem-vindos de volta a outro vídeo no Unreal Engine 4. Agora que temos o motor com sorte baixado, podemos começar a criar nossos projetos. Então é isso que vamos fazer neste caso. Ok, então, no seu épico lançador de Jogos, vá em frente e clique em Iniciar ao lado da sua versão de motor que você tem. E depois de um segundo de inicialização e carregamento, este menu vai abrir. Vamos clicar no jogo porque estaríamos fazendo jogos. Bata em seguida. E nós vamos estar trabalhando em um projeto em branco. E irreal tem modelos em primeira pessoa. E apesar de tudo estar bem, praticamente todo o código que a Epic tem lá, não usaremos de qualquer maneira. Então, usando um projeto em branco, vamos ter que fazer alguns passos
neste vídeo e o próximo que normalmente não teríamos que fazer. Mas ao fazê-lo desta forma, podemos ter tudo e mais personalizado da maneira que queremos. Só vai funcionar melhor para nós. Certo, confie em mim. Então vá em frente e clique em Projeto em branco. Encontre um lugar no computador que você deseja salvar este projeto. E eu vou chamar isso de FPS. Como devo chamá-lo? Projeto de classe. Isso parece muito bom para mim. Tudo bem. E, em seguida, vá em frente e quando você estiver pronto, dê um nome a ele, vá em frente e clique em Criar projeto. Com o nosso projeto aberto. Se você fez isso corretamente, você deve ver essas duas cadeiras
estranhas, com essa coisa de vidro muito cara sentado em uma mesa. Por que isso é o mecanismo padrão. Não faço ideia, mas é. Podemos ir em frente e clicar neste pequeno botão aqui para mostrar todas as nossas pastas. O gritante, um deles, o conteúdo inicial que deveria ter sido ativado automaticamente. E vamos começar por preparar um par de coisas. Então vamos em frente e clique com o botão direito do mouse no conteúdo e fazer uma nova pasta e vamos chamar isso de FPS. Oh, atire. Jogo FPS. Gostaria de manobrar em torno do meu microfone. Espere um segundo. Ok. Debaixo dessa pasta, vamos clicar com o botão direito do mouse lá e chamar esse blueprints lá também. Eles estão certos. E então, por baixo de novo, vamos fazer outro chamado personagem. Então FPS jogo blueprints personagem. E se você é como eu, você gosta de definir as coisas como cores. Então eu vou manter a tecla Shift pressionada e selecionar todos eles. Vou definir a cor. Vou deixar minhas pastas vermelhas. Vamos fazer assim, está bem? E se fosses inteligente, ao contrário de mim, terias arrastado isto e guardado, parece que podemos sempre usá-lo mais tarde. Ok, na nossa pasta Blueprints, vamos clicar com o botão direito do mouse e abrir espaço. Vá para a aula de Blueprint, o que é ridiculamente difícil para mim dizer por alguma razão. E nós vamos fazer uma base de modo de jogo baseado em modo de jogo, como ele diz aqui, esta dica de ferramenta define o jogo que está sendo jogado, suas regras marcando outras facetas do jogo. Nós não vamos colocar um monte inteiro de dados aqui, mas estamos criando isso foi chamado BP base de modo de jogo sublinhado. E vamos clicar com o botão direito. Faça outra classe aqui, controlador
jogador, BP sublinhado jogador controlador. E por último, mas não menos importante, vamos clicar novamente. E, em seguida, por baixo de todas as classes é menu suspenso. Vamos procurar por HUD, certo, deve ser bom fazer algo com o HUD. Então vamos BP sublinhar HUD. Bem, podemos fazer é apertar o botão Salvar tudo. Vai se livrar desses asterix ali. Então, todas as nossas coisas estão agora salvas. Então dentro da nossa pasta de personagens vamos fazer o nosso personagem. Então, mais uma vez, personagem Blueprint Class e vamos chamar este jogador BP. É Control-S. Para dizer isso bem rápido, eu faço isso muito. Sim. Então, duas maneiras de fazermos isso. Podemos clicar duas vezes na base Demode ou podemos fazer o que eu gosto de fazer, que é configurações, configurações do projeto. Então abaixo do projeto aqui há esta aba, você está dizendo mapas e modos. Você clica nisso. Então, vamos cair sob o modo de jogo selecionado. Você vê que temos todas essas pequenas coisas padrão que estão esmaecidas. É por isso que criamos principalmente uma base de modo de jogo para que possamos encaixar em nosso personagem como nosso padrão. Nós não fazemos isso, então não importa qualquer script, mas perto do jogo não vai registrar isso como o personagem que queremos jogar conosco. Então vamos encaixar na base do Modo de Jogo BP para o Peão Padrão. Vamos colocar em bp player e nossa classe HUD, dp HUD e player controller class bp, player controller, game state player state state player game game instance pode criar aqueles se quisermos, mas nós realmente não estaremos utilizando-os. Então os padrões devem ser bem e dandy. Uma outra coisa que eu quero fazer antes de terminar este vídeo é neste pequeno menu drop-down bem aqui, em um clique com o botão direito do mouse em configurações avançadas abaixo do jogo, isso é apenas preferência pessoal. Eu gosto de selecionar jogo recebe controle do mouse. Isso permite que sempre que eu apertar play, Eu não tenho que clicar dentro da janela
cada vez que há automaticamente entra no jogo. E, em seguida, debaixo do mesmo menu suspenso, eu gosto de uma nova janela do editor, em
vez de jogar nesta coisa. Então, se você notar que se apertarmos Play, você tem música. Bem, não é realmente música. É som atmosférico, suponho. E bater nas teclas é bater no mouse, mover o mouse, ele não faz nada agora porque nós não adicionamos esse script ainda. Então, se você fosse
fazê-lo à moda antiga e usar um
dos modelos e só você pode se mover imediatamente. Mas no modelo em branco, você não pode fazer isso. Então, no próximo vídeo, vamos permitir que nosso jogador comece a olhar ao redor, se movendo. E sim, vamos fazer alguns lattes duros. Então agora é apenas algumas coisas básicas de estrutura, mas é bom saber como fazer isso. Então é isso que vamos fazer no próximo vídeo. Então espero vê-lo lá.
5. Fazendo nosso personagem se mover: Olá a todos e bem-vindos de volta a outro vídeo. No último, criamos nosso projeto. E neste vídeo vamos permitir que o nosso jogador olhe ao redor e se mova para que não sejamos tão estranhos, imóveis. Eu nem sei como você quer chamá-lo. Então, para começar isso, muito simples, Vamos para Configurações. As configurações do projeto já o têm aberto aqui. E, em seguida, abaixo do motor, você vai querer selecionar a entrada. E você verá essas ligações para mapeamentos de ação em mapeamentos de acesso. Queremos criar vários destes. Então vamos começar, fazer isso em uma ordem estranha porque na verdade mapa ele diz no topo, Vamos clicar no sinal de mais. E vamos digitar salto. Debaixo disto. Basta digitar a barra de espaço. É tudo o que queremos fazer lá. Abaixo dos mapeamentos de acesso queremos criar 41234. Você tem que acertar este pequeno triângulo para vê-los. Vamos criar um chamado X. E clicar nele pode cair em todos eles, como fiz por mim. mouse Y é outro que eu quero ter seguir em frente e mover para a direita. Para seguir em frente e mover para a direita. Você quer acertar este pouco mais para ter certeza de que existem dois deles. Mousex, rato branco e deixa um. Então, para o mouse X, nós gostaríamos de fazer esse MouSex coisas muito loucas para o mouse. Por quê? Não é o Mousey, o rato estava bem para seguir em frente. Ele queria ser W e S e certo, você quer fazer D e A. e certo, você quer fazer D e A.
Mas uma coisa que você pode notar são essas coisas em pequena escala aqui. Então, por que não jogamos invertido ou não estranho, vamos fazer um negativo para avançar para S, já que S seria para trás e estamos fazendo um para frente, queremos fazer aquele negativo. A mesma coisa para
um. A seria esquerda é o oposto da direita. Portanto, queremos que seja negativo como a nossa escala. Isso é tudo preparado e bom disposto. Então você pode tecnicamente sair de lá. A próxima coisa que queremos fazer é uma planta que você quer abrir nosso controle de jogador. Certo? Você verá esta palavra câmera. Ignore a câmera, exclua os nós padrão lá. E o que vamos fazer é chamar esses dois ratos de entrada. Então eu fiz, então vamos digitar o mouse X. Você quer clicar no evento eixo. Foi o que acabamos de criar. E um rato, por que não você? Lá vamos nós. Do mouse X, queremos adicionar suas entradas. Se eu souber soletrar, lá vamos nós. E o valor do eixo será esse valor. Agora, se você quisesse mudar isso por uma variável, você poderia fazer um pouco de multiplicação aqui e disse a uma variável, alterar suas configurações de sensibilidade dessa forma. Pode não ter feito sentido o que acabei de dizer. Mas não se preocupe com isso. Não é importante. Para o mouse por que você deseja adicionar o valor do eixo de plug-in de pitch ao valor. Vamos em frente e selecionar a coisa toda. Aperte C para fazer uma caixa de comentários e nós vamos apenas chamar este mouse entradas. Como isso. Eu não gosto das bolhas e vou fazê-la ler como fizemos antes. Lá vamos nós. E isso é tudo o que queremos fazer. Ao lado de compilar esta lista suspensa, vá em frente e pressione Salvar na compilação e faça somente com sucesso. Isso significa que sempre que você clicar em Compilar, ele também será salvo. Hey, compilar, salvar um razoavelmente bom para saber essas pequenas coisas. Confiem em mim, pessoal. Como o Controle S ali. próximo é o nosso HUD. Vamos para o gráfico de eventos aqui. E nós vamos fazer evento sorteado receber HUD. Veja o que isso faz em um segundo. Fora do fio de execução que você deseja fazer desenhar um retângulo, desenhar rect ou o que quer que seja. E, em seguida, fora do tamanho x, plotar um asterisco, fazer multiplicação para um int ou um flutuador. E, em seguida, copie colá-lo e fazê-lo para o tamanho. Por quê? Você deseja conectar isso para tela x tamanho x verde x tamanho x tamanho. Por que tela? Por quê? Vamos multiplicar isto por 0,5. O que estamos fazendo aqui é desenhar um pequeno retângulo em nossa tela. Disse que a cor e torná-lo branco. E vamos torná-lo dois por dois, W e HR largura e altura. Então não é muito simples lá. 0,5 é ela pegar o tamanho da tela no x e no y e está cortando ao meio. Então, só para demonstrar isso, se eu apertar Play, você vai ver que eu posso movê-lo. Eu posso olhar em volta para uma coisa e você verá um pequeno ponto lá que vai ser útil para nós quando fizermos o nosso radical. Você pode ver o centro da tela. Então, o controlador e o wheter, tudo bem. A última coisa que queremos fazer é permitir que o nosso jogador se mova com W, A, S e D. E queremos que ele seja capaz de saltar. Então vamos abrir o nosso jogador. Eu acho que todas essas configurações realmente ir em frente e usar rotação do controlador. Sim, desmarque isso com o vice-presidente. Jogue sozinho. Desfaça isso. Na verdade, eu vou fazer um novo gráfico de eventos e eu vou chamá-lo e movimentos. Se você quiser adicionar um novo gráfico de eventos, você só aperta este pouco mais no novo gráfico. A razão pela qual estou fazendo isso é apenas para fins organizacionais, eu quero colocar todo o meu tipo de componentes de movimento, saltar, correr, movendo-se em um gráfico de eventos para que não haja apenas como um conglomerado de eventos tudo em um gráfico. Gosto de me manter organizado. É importante. Então clique com o botão direito do mouse e agora vamos chamar avançar, não a função, mas o evento do eixo que criamos. E como você provavelmente pode imaginar, nós queríamos a mesma coisa para se mover, certo? Ok. Fora de movimento 40, deseja adicionar uma entrada de movimento. E queremos fazer a mesma coisa em copiar colar que de mover para direita nos valores do eixo e o valor da habilidade como antes. Mas fora da direção mundial, queremos avançar, avançar, avançar. Por quê? Bem, eu soletrei errado. A maior parte do vetor para a frente e, em seguida, a direção do mundo fora da direita. Vou pegar o vetor certo. Desenho de qualquer um desses rotadores. Você quer fazer um rotador. Este de baixo aqui,
na verdade, conectou-o em ambos. E eu não vou falar em detalhes sobre o que diabos está acontecendo aqui, porque isso é o que normalmente é configurado por padrão. Então não é assim tão louco. O que estamos fazendo aqui. Estamos apenas configurando como se você
fizesse um projeto de terceira pessoa ou projeto em primeira pessoa, esse script já está aqui por padrão. Então fora do fabricante rotator e arraste para fora de qualquer lugar em se quebrar o rotador uma OMS, o controle de lei antigo em qualquer nó e clique você pode realmente agarrá-lo e conectá-lo em alguns outros. Então queremos que os Xi sejam conectados. E fora dessa rotação, queremos obter rotação de controle. Estamos recebendo rotação do nosso controlador lá. Creio que está correcto. Então vamos destacar a coisa toda. Aperte C e vai dizer movimento WASD. Lá vamos nós. Por último, mas não menos importante, vamos fazer a nossa coisa para o salto. Então temos um salto de ação. Então, o que queremos em pressionado, estes já estão embutidos, tão épico torna muito agradável e fácil para nós. Pressione que você queria pular, então liberado é parar de pular. E então vamos comentar a caixa em torno disso. E diremos ação, evento ou o que for. Claro. Como quiser chamá-lo, o que torna mais fácil, o que flutua seu barco, digamos Compilar e Salvar. E agora, quando batermos no jogo, podemos dar uma olhada. Você pode ir para frente, para trás, direita, esquerda, e podemos saltar para cima e para baixo. Então agora somos um personagem que pode se mover e tal. Ok, então aqui está o roteiro. Se você precisar vê-lo novamente, basta pausar ou fazer o que você precisa fazer. Lá está ele. Mas sim, deve ser isso. Então, no próximo vídeo, temos nossa configuração de personagem. Vamos começar a adicionar alguns pacotes de conteúdo. E então uma vez que fizermos isso, vamos começar realmente a fazer coisas legais como adicionar armas e criar nosso personagem e dar-lhes armas e coisas assim. Espero que vocês estejam ansiosos por isso e eu os verei no próximo vídeo.
6. Adição de pacotes de conteúdo: Olá a todos, Bem-vindos de volta a outro vídeo. No último, montamos alguns movimentos de personagens e coisas muito básicas. E neste vamos começar a adicionar nossos pacotes de conteúdo ao jogo. Há apenas um, ou tecnicamente, suponho, qualquer que seja a maneira que você olhar para ele. Então vamos em frente e adicionar à Epic Game Store sob o Unreal Engine. E vamos passar da nossa guia da biblioteca para o mercado. Feito. Ok? E, em seguida, insira produtos de pesquisa. Você quer digitar armas militares. Silver deve ver isso. Pacote de prata de armas militares. Eu acredito que este fabricante em particular tem alguns futuristas. E como uma arma militar, negra ou de outro tipo. Mas a prata é aquela que tem as armas necessárias que iriam usar. Você pode se sentir livre para usar alguns diferentes, mas apenas saiba. Você tem que usá-los por sua conta e risco. Se quer ser fiel a saber o que funciona, vou usar isto. Mas, sabe, você pode fazer o que quiser. Cabe a você. Então, neste pacote de prata de armas militares que
vamos fazer é adicionar ao seu projeto. E você vai notar que ele não diz que há quaisquer compatíveis. Fique tranquilo, trabalharemos em torno do soviético. Você clica sobre isso e pode chamá-lo de um botão. E você mostrará todos os projetos. Vá em frente e navegue até o nosso projeto de classe FPS ou seja lá qual for o seu nome. E vai dizer que não é compatível com 4.26. Mas é, eu lhe asseguro, porque tecnicamente você viu na demonstração que era. Então vamos em frente e selecionar para o ponto 2 1, que é a última versão do motor com a qual foi compatível. As versões do Engine não mudam muito
ao ponto em que ele realmente vai estragar as armas, eles ainda funcionam. E 4.26, mesmo que não sejam tecnicamente compatíveis ou o que seja. Então vá em frente e selecione isso e, em seguida, adicione dois projetos. E se você olhar para aqui, ele irá adicioná-lo ao projeto e funcionou muito bem. Então isso funciona. A outra coisa que queremos fazer é ir para a aba Aprendizagem, que eu honestamente não sabia que existia até depois de um ano usando o Unreal. E a guia Aprendizagem tem um monte dessas demonstrações realmente legais e jogos diferentes como um jogo de RPG e veículo e algumas, algumas paisagens de arte e apenas algumas coisas legais aqui. Você vai querer selecionar em um jogo de tiro aqui. Agora, este não pode ser adicionado a um projeto. É seu próprio arquivo, então você precisará criar um projeto e instalado em algum lugar no seu computador. Fique tranquilo, sempre que terminarmos este vídeo, você o exclui. Só precisamos de algumas pastas de lá, então vá em frente e crie esse projeto. Agora eu fui em frente e tomei a liberdade de realmente abrir este projeto. Isso não é algo que você tem que fazer por qualquer meio, mas este é um projeto muito legal para olhar ao redor e se divertir um pouco. E nós vamos usar alguns dos ativos daqui, mas não todos eles. Então, algumas coisas diferentes que você pode fazer neste momento. Se você clicar no conteúdo, com o botão direito do mouse e diga mostrar no Explorer, você seu Windows Explorer. Não quero ligar para o Internet Explorer. Eu nem sei o que um hectare suas pastas. Ok, vamos abrir este navegador de conteúdo e você verá como essas pastas se correlacionam com essas pastas. E é isso que queremos. Você pode fazer assim. Ou no Epic Games Launcher, você verá jogo de tiro vai aparecer sob meus projetos. Clique com o botão direito sobre isso. Você pode mostrar, mostrando a pasta dessa forma. E então você apenas clica abaixo do conteúdo e, em seguida, é exatamente a mesma coisa. O que queremos fazer é pegar animações, segurar personagens de controle, afetar ozônio, sons. Clique com o botão direito do mouse e Agora, se estes são, se esses dois projetos, o jogo Shooter e o que criamos estão na mesma pasta como eles estão para mim, que é aqui. Você pode ir em frente e apenas ir abaixo do conteúdo e apenas colá-los bem ali. Mas se você tem um problema em descobrir onde isso
está, basta ir para o seu projeto. Mesma coisa, conteúdo, mostrar no Explorer e lá está. E então eu vou clicar com o botão direito do mouse e apertar colar. E você vai ver como eles estão aparecendo bem ali. Agora isso pode levar um pouco de segundo, mas eu vou realmente fazer uma nova pasta. E vamos chamar este jogo de tiro. E eu quero pegar essas animações, personagens, efeitos e sons provavelmente deveriam ter feito isso ao contrário. Mas aqui vamos arrastar isso para o jogo de tiro. Isso pode levar um pouco de segundo para fazer. Oh, fez instantaneamente. Se você fizer isso dentro do mecanismo, provavelmente levará um segundo se você fizer isso no Explorador de Arquivos, é como bam, instantâneo. A única razão pela qual fiz isso é só para que estas coisas sejam boas e organizadas. Você pode notar que estas são as cópias do Cray. Isso pode, isso provavelmente vai acabar. E honestamente, porque se eu for ler o conteúdo, ver como ele não está lá. Portanto, este produto precisa ser atualizado. Se uma pose para baixo, abra de volta, vai ficar tudo bem. Ok, então isso é tudo o que queríamos fazer neste vídeo. Adicionamos nossos pacotes de conteúdo. Eu vou realmente a última coisa que precisamos fazer ir para Adicionar importação, ir para Adicionar pacote de conteúdo de recurso. E então vamos precisar pegar a terceira pessoa, uma característica de planta porque precisamos do homem do manequim. Literalmente, a única coisa que precisamos. Adicionar este pode atrapalhar um pouco os nossos mapeamentos de entrada, mas podemos sempre fechá-los. Teremos que ver. Então vamos apenas adicionar isso ao projeto. E aí que aparece. Por favor, diz-me que isto ainda funciona. Isso ajuda. Graças a Deus gracioso. Porque eu acho que se você entrar nele, poderia ter adicionado, sim, então ele adicionou algumas de suas outras entradas, que não é o que vemos é se livrar deles. Sim, e tudo funciona. Está tudo bem. Então isso vai dar certo para este vídeo. Obrigado por assistir, e te vejo na próxima.
7. Criando o personagem primeira pessoa: Olá a todos e bem-vindos de volta a outro vídeo. Neste, vamos continuar e
vamos criar o nosso personagem em primeira pessoa. Então, se você tem o nosso projeto aberto, vá em frente e sob personagem jogo FPS, Vamos abrir o plano de jogador bp. Arraste-o pela parte superior, se já não estiver. E nós vamos estar brincando no visor. Então, com nosso personagem selecionado, vamos adicionar componentes e vamos adicionar uma câmera. E podemos manter isso com a câmera do nome. Então, por baixo da câmera com a sua selecionada, vamos criar uma criança nessa câmera. E queremos encaixar em uma malha esquelética. E podemos chamar este jogador de armas. Certo, então com as câmeras selecionadas, há algumas coisas que queremos fazer. Queremos verificar Usar rotação do controle do peão. É uma coisa que queremos fazer. Desculpe, só estou me referindo às minhas anotações para ter certeza de que não estou perdendo nada. Eu acho que na verdade é 0 para a câmera no Z, nós queremos definir isso para 75. Localização z, 75. Então, nos braços do jogador, a malha esquelética que vamos encaixar é este herói F PP aqui. Vai aparecer lá em cima. Agora, o que podemos fazer com esta pequena lupa, ela vai abrir onde este recurso está dentro do nosso navegador de conteúdo aqui. E o que podemos fazer é arrastar isso e, em seguida, arrastar isso para a nossa pasta de caracteres para que possamos vê-lo aqui. E então podemos acertar F2 e podemos renomear armas de jogador. Então é o mesmo ativo. Mas agora é uma pasta R e podemos acessar coisas com ela. Então, com o nosso jogador ARM selecionado, uma coisa que queremos fazer realmente rapidamente é a escala de limites de pesquisa. Queremos mudar isto para dois. A razão pela qual estamos mudando isso para dois em vez de um é que se você não mudá-lo para dois, ele vai interagir com a câmera engraçada. E dependendo de onde você está olhando, se você estiver olhando diretamente para cima ou para baixo, a malha realmente desaparecerá. Então isso é apenas um pouco estranho cenário que você quer ter certeza de que você faz. Então, para os braços, a localização, eu só vou te dar esses números para que você tenha que mexer com ele sozinho. Já avaliei tudo isso para você. X vai ser negativo dez, z vai ser negativo 1, 50. E, em seguida, a rotação z vai ser 90 negativo. Então, voltada para a minha velocidade da câmera um pouco, ele está virado para a frente. Você tem os braços assim mesmo na câmera. Isso parece muito bom. A última coisa que queremos fazer com os braços é ter certeza que não temos sombra porque não temos um corpo inteiro. Então ele vai entrar e jogar e mostrar-lhe isso. Parece um pouco esquisito e não queremos esquisito. Então vamos apenas desmarcar sombra do
elenco sob a iluminação novamente com o jogador ARM selecionado compilar. E aí vamos nós. Parecemos normais. Não podemos ver os braços agora. Ok. Algumas outras coisas que eu quero fazer neste vídeo antes de
avançarmos sob o Componente de Movimento de Personagens, esta é apenas a minha preferência pessoal aqui. Deixe-me encontrá-lo. Velocidade máxima de caminhada em 600. Vou definir isso para ser 750. Como o personagem anda um pouco lento por padrão. E acho que é isso. Então, se você notar o material que está
nesses braços saindo ferrado transferindo-o para cima. Então o que vamos fazer é refazer. Vamos fazer exatamente como era originalmente. Então, vamos clicar com o botão direito do mouse em jogos FPS selecionar nova pasta e vamos criar uma nova pasta chamada materiais. E eu vou definir isso para a nossa cor vermelha, qualquer cor que você tenha. E então aqui, você vai clicar com o botão direito do mouse e ir para materiais e texturas estão indo para apenas ir material bem ali. Nós vamos para M para fazendas de camada de sublinhado de material já. E depois vamos abrir os braços dos jogadores. Acredita que consegues fazer isto. Legal. Ok, então se você segurar T e clicar, você pode obter amostras de textura. E para esta amostra de textura, o que eu quero fazer é conectar um na Base Color 1 em metal. E serão erros, mas não se preocupe. E depois o outro fica normal. Com essa configuração, você vai clicar com o botão direito e você vai procurar uma constante. Vai ser só uma coisinha com um pequeno número lá dentro. E vamos colocar isso em rugosidade. E já que sou perfeccionista, vamos ter certeza de que tudo isso está em ordem assim. Para o nosso valor de rugosidade, vamos fazer algo como 0,3 ou algo assim. E então para estas amostras de textura, então temos algumas texturas que existem. Dentro deste projeto anterior, o jogo de tiro é onde estamos tirando esses materiais. Então esse material, se abrirmos
isso, é todo tipo de bagunça aqui. Como você provavelmente pode ver. É isso que estamos tentando recriar. Então vamos ter que usar algumas dessas texturas que existem, essas que ainda funcionam. Vamos usá-los. Então esse sap um que queremos é que você pode apenas fazer FPS sublinhado d em FPS sublinhado M para o metálico. E então para o nosso normal, você provavelmente pode adivinhar que vai ser FPS sublinhado N para normal, então você deve obter uma pré-visualização para aparecer. Então essa rugosidade realmente diz, então não. Então, se eu definir este, você pode ver como não há nenhum super áspero, nenhum brilho qualquer. referidos zeros podem ser muito brilhantes. Então eu vivo em torno do intervalo 0.3 se você quiser fazer um ponto ou talvez você gosta dele realmente brilhante e só queria 0.1.2. Isso é bom também. Vou ficar com 0,2. Então, há o nosso material. Você pode clicar em Aplicar. Isso é tudo o que vamos fazer lá para salvar isso. E então vamos aplicar isso. Então é chamado de armas de jogador. E lá vamos nós. Então ele se encaixa perfeitamente. Prepare a última coisa que queremos fazer em nossa pasta de personagens. Então, vamos clicar com o botão direito do mouse e vamos para Animação, Animação Blueprint. Então, na animação, blueprint é um blueprint que pode se conectar a Skeletal Mesh e ele irá controlar essencialmente quais animações você deseja reproduzir uma. Então, vamos em frente e fazer isso agora mesmo. Antes de fazermos isso, vamos fazer outra coisa. Então, antes de eu mencionar eu gosto de copiar estes braços. Quero fazer um novo esqueleto. Então eu estou realmente indo para pegar este esqueleto FTP herói e copiar colar isso. Então podemos achar que entramos em personagens de jogo de tiro aqui, FTP neste esqueleto. Então vamos em frente e mover isso para a nossa pasta de personagens. E então vamos nomeá-lo como jogador, jogador esqueleto. Por que não? Então deve estar meio confuso agora. Espero que ainda seja capaz de funcionar. Uma coisa que podemos fazer para verificar e ver se ele funciona enquanto clicamos em uma de nossas animações. E então vamos fazer um onde eles realmente vão usar. Então, o rifle ocioso é um deles que vamos realmente usar. Então vai ser como não pode encontrar esqueleto, você
gostaria de escolher um novo? Então vou dizer que sim. E nós teríamos bem ali o esqueleto do jogador e ele vai redirecioná-lo para aquele esqueleto. E isso nos ajuda e não quer trabalhar. Diabo de copiar e colar, arruinar bens. Ok. Me dê um segundo. Eu vou descobrir isso. Aquele Lubeck. Acho que me lembrei de como fiz isso antes. Então, se você clicar, clique duas vezes em nossa malha esquelética vai realmente pedir-lhe para criar um novo esqueleto, e é isso que queremos fazer. Então ele vai ter todas essas coisas já pré-configuradas aqui. E ele vai essencialmente atribuir esta malha a este esqueleto, que como queremos. E assim chamou-lhe esqueleto de armas de jogador. Então, na verdade, vou deletar isso. Espero que o computador não me odeie por fazer isso e forçado a apagá-lo. Nós somos bons. Vamos dar-lhe uma lista de nomes jogador sublinhou esqueleto. E então agora se fôssemos voltar para nossas animações de jogo de tiro, e faríamos algo como equipar rifle. E diria que não é possível encontrar o esqueleto. Gostaria de escolher novo? E eu digo que sim. E então escolheremos o esqueleto do jogador. E a animação funciona muito bem. Então, oito, então agora temos 12. Então nós apenas temos que manualmente, quando em qualquer animação destes que queremos usar, nós apenas teremos que clicar manualmente nele,
adicioná-lo ao esqueleto, e assim ele aparecerá aqui em nosso navegador de ativos. Então podemos fazer isso para o rifle ocioso. Eu só vou fazer isso porque essa vai ser a nossa principal animação ali mesmo. Muito bom. Ok, então de volta ao personagem, agora
podemos criar o que queríamos criar em primeiro lugar, que é Blueprint. Sem animação, desenho de animação. E então vamos colocar isso no esqueleto
do jogador, aquele que acabamos de criar. E vamos chamar este jogador de sublinhar Anim VP. E nós não precisamos realmente fazer nada aqui agora. O que vamos fazer é apenas atribuí-lo, usar o plano de animação com os braços selecionados. E queremos o jogador e a BP. Então, na verdade, não vai fazer nada agora. Mas agora isso é, a funcionalidade agora está conectada em nossa pasta de caracteres. Então isso é tudo o que tenho para este vídeo. Eu acredito. Acho que não há mais nada que eu tenha deixado de fora. Basta verificar as anotações e parece que estamos bem. Então isso vai dar certo para este vídeo. No próximo, vamos continuar e começar a animar nosso personagem. Então ele já é de nós começarmos a colocar armas nas mãos. Então, vejo-te lá.
8. Animar nosso personagem: Ei pessoal, bem-vindos de volta a outro episódio da nossa série Unreal Engine 4, fazendo um jogo de tiro em primeira pessoa. No último vídeo, começamos a criar nosso personagem. Nós lhe demos algumas armas, criamos um material para isso. E este aqui para impedi-lo de ficar lá de pé desajeitadamente na oposição o tempo todo. Nós vamos estar fazendo algum trabalho neste projeto de animação para dar-lhe algum movimento. Ok, então a primeira coisa que eu quero fazer é abrir o nosso jogador no MBP. E se você ainda não trabalhou em um blueprint de animação antes, essencialmente um blueprint de animação é um blueprint que
se conecta a um determinado esqueleto e parte de um determinado personagem. Então, se eu fosse para a minha malha esquelética, em meus braços de jogadores, que são essas coisas. Você pode ver que a malha ou a animação tem um blueprint de animação associado a ela. E é este que criamos no último vídeo. Então, o que fizermos aqui será emitido aqui e nosso personagem. Então, qualquer coisa que conectamos nesta pose de saída vai ser emitido para o nosso personagem. Animação. Blueprint tem um gráfico de animação e um gráfico de eventos. O gráfico de eventos é essencialmente apenas um gráfico que vincula variáveis que criarão duas variáveis encontradas neste blueprint. Isso vai fazer mais sentido quando realmente o fizermos. E então o gráfico de animação é onde realmente
implementamos as regras que irão decidir quais animações reproduzir quando. Essa é a melhor maneira de explicar isso agora. Mas vai fazer mais sentido quando começarmos a colocar algumas coisas aqui. Então o que queremos fazer primeiro é criar um espaço de mistura de animação. Então, com a nossa pasta de caracteres aberta, Vamos clicar com o botão direito do mouse no espaço vazio e ir para animação e mesclar espaço, não deslocar 1D. E vamos usar o esqueleto do jogador, que está bem aqui, o que criamos. E vamos chamar isso de corrida ociosa. Então eu não correr é um tipo muito comum de espaço de mistura. Os espaços de mesclagem permitem que você coloque várias animações dentro deles. E então você pode mudar uma cirurgia que animação você está jogando com base em um determinado valor de eixo. Então, neste caso, nosso nome será velocidade. E o que vamos fazer neste espaço de mistura é que vamos fazer a transição de uma pose ociosa para uma pose ambulante. E isso vai ser ditado pela nossa velocidade. Para divisões de grade são ok, ou valor máximo do eixo, vamos fazer 600. Se você se lembra no último vídeo, definimos nosso movimento de personagem para 750. Então, se estamos indo 600 e acima, eu quero alternar entre duas animações diferentes. Então o rifle ocioso é o primeiro que queremos pegar. E nós vamos arrastar isso em 0 aqui. Este mostrador verde é o que podemos ver para se mover entre eles. Você pode ver o valor de velocidade mudando ali mesmo no valor de visualização ali mesmo. E nós vamos precisar pegar outra animação porque estes não eram padrão. Vamos criar um novo esqueleto no último vídeo. Então ele vai filmar um jogo de animações, animações de jogador em
primeira pessoa bem aqui. E você quer não corroer sua espingarda? Ou isto deve ser como o nosso fustigado? Façam-lhe um disparo. Estou cego aqui? FTP ou rifled run. Clique duas vezes sobre isso. Não foi possível encontrar o esqueleto. Então vamos atribuí-lo ao esqueleto do jogador e um realvo. E você pode ver lá ele está se movendo lá em frente e pressione Salvar. Podemos pausar. Podemos mexer com os sons disso mais tarde. Está bem. E acho que saio do nosso espaço de mistura. É constrangedor. Então eu vou abrir isso de volta. Então eu vou pegar nossa espingarda aleatoriamente e arrastar isso em 600. Então agora você pode ver se nossas velocidades estão aumentando, você pode ver aquela animação mudando do ocioso 1 para o de corrida ou o andar e o que quer que você queira chamá-lo. Então, vamos bater em Salvar. Isso está parecendo bom. E agora vamos para a nossa animação. Plano, plano do evento de DNA. Está bem? Então, em algum espaço vazio no gráfico de eventos, vamos procurar por um evento, eventos. Impressões azuis inicializam animação. Este é o equivalente a um evento começar a jogar. Para esquemas de animação. O que queremos fazer é clicar com o botão direito e dizer, “Get Ownning ator”. Às vezes você diz obter personagem jogador, Obter jogador Peão. Às vezes não importa. Mas vamos lançar para o RBP. Não ser 0. Jogador BP. Seja qual for o objeto, às vezes só mais longe. Esta é a única vez que não vamos
usar elenco ou pegar o personagem. Vamos clicar com o botão direito do mouse no jogador bp e promover isso para uma variável e vamos chamar este jogador. Então tudo o que isso fez foi criar uma referência, referência ao jogador. Para que agora o que podemos fazer é conseguir isso. Você pode obtê-lo. E então qualquer tipo de variável que é encontrada dentro daqui ou função ou o que quer que possamos simplesmente puxar para fora de lá. Então, criar referências a coisas é algo que vamos fazer muito será principalmente criar referências ao nosso jogador. Ok, então agora aqui em baixo, animação de atualização de blueprint. Vou chamar um nó de sequência. Na verdade, não vai fazer nada fora da sequência ainda. Mas apenas para referência futura fora de então um vai dizer é válido com o ponto de interrogação. E ligue isso para tentar, Get Pewn Owner. E é nó válido é essencialmente apenas uma maneira de ele é uma espécie de dado o senso comum do computador. Então, se algo que eu realmente não sei como explicar, mas está dizendo como, vai fazer sentido, nós estaremos usando isso no próximo vídeo também. E vou explicar com mais detalhes lá porque será
muito mais fácil explicar o que ele faz lá. Ok, agora, vamos para o nosso gráfico Anim. E vamos clicar com o botão direito do mouse e vamos procurar um adicionar uma nova máquina de estado. E eu quero clicar sobre isso e renomear isso. E vamos chamar esse movimento do jogador e, por enquanto, vamos colocar isso diretamente na pose de saída. Se você clicar duas vezes em uma máquina de estado, você verá essa bolha de entrada. E o que você pode fazer é arrastar para fora e você pode adicionar Estados. Nós não vamos ser o máximo, então um conduíte estados ou o que quer que seja. Então vamos arrastar para fora e vamos adicionar um estado e vamos chamar isso de corrida ociosa. Então, se você não está familiarizado com máquinas de estado, esses estados são onde você vai conectar suas animações e
, em seguida, você pode criar transições de sub I adicionou um estado diferente. Essas coisas são essencialmente condições que precisam ser verdadeiras ou falsas para a transição entre animações diferentes. Como eu disse, muitas dessas coisas fazem sentido, como quando você está realmente fazendo isso. Então vamos clicar duas vezes na execução ociosa. E o que queremos fazer é pegar nosso espaço de mistura chamado Odle Run e conectá-lo à pose de saída. E o que você vai notar com este aqui é que ele tem uma variável de velocidade. Então, se fôssemos fazer isso, mas veja se temos nosso nome para velocidade. Então é isso que está agarrando aqui. Então agora está definido como 0. E nós não queremos que isso sempre seja definido como 0 porque se ele é sempre definido como 0, e nós sempre estaremos lá. Por isso, queremos ligar isto à velocidade dos nossos personagens. Então vamos clicar com o botão direito aqui promove para uma variável e vamos chamar isso de velocidade. E isso é tudo o que precisamos fazer lá dentro. Então, agora, se voltarmos para o gráfico de eventos fora de tentativa Obter proprietário do peão, nós vamos obter velocidade, a velocidade do nosso personagem. E queremos obter o comprimento do vetor. E então queremos pegar nossa velocidade e definir isso. Queremos que a quantidade SEC de que é ramificação válida. Então o que isso está fazendo aqui, esta primeira parte é que está recebendo a velocidade de nosso personagem, obtendo o comprimento desse vetor. E então definindo isso para essa variável que criamos chamada velocidade, que é configurada aqui para controlar quais animações estamos executando. Então, para esta caixa comum, eu só vou dizer sets, andando em animação ociosa, algo assim. Então deve ser assim. E então aquele movimento trabalhista que eu vou executar, nós só temos um estado agora fazendo isso. Então você compilar, nós o temos ocioso. E se você apertar Play, você pode ver que temos alguns braços aqui. Na verdade, não temos um monte de imóveis, então temporariamente eu vou encher Alt, fazer oh Deus, e assim eu acho que definir para dez. Segure em. Alternativa. Fazer uma cópia de algo, apenas me dar um pouco de espaço para andar. Agora, se eu apertar Play. Então você pode ver que agora estou ocioso. E então quando eu o movo fazendo a animação ambulante, nós não estamos segurando nenhum tipo de armas, então é um pouco difícil de ver. Mas é assim que funciona. Provavelmente vai refazer este ambiente e entre vídeos. A última coisa que podemos fazer aqui é que se você realmente for aqui e for para Rifle Run, você verá que temos essas pequenas notificações. E você pode clicar com o botão direito do mouse em qualquer lugar e adicionar
uma notificação dentro de uma animação e reproduzir como um efeito de partícula ou um som ou qualquer coisa. Estes sons são realmente meio que quebrados aqui, então ele é colocado para baixo, ele não é realmente implementado. Assim como podemos, mas seja qual for o som que quisermos aqui. E então sempre que essa animação é reproduzida em cruzes ali, ele vai realmente tocar qualquer som que encaixarmos lá. Então eu acredito que porque nós temos os sons aqui que nós temos os sons de passos, grama, azulejos de metal, e eu acho que eles estão meio quebrados assim. Então, homem, grama, azulejo mental e nós fomos totalmente executados. Está bem. Então, está bem, então copiar e colar as coisas, meio que estragar tudo. Então, o que vamos fazer aqui, então siga onde eu estou. Jogo de tiro soa bem aqui. Corra totalmente. Abra isso e vamos colocar essas coisas perto da onda sonora. Então, temos totalmente executado de um a 10. Então, um. Dou-te um segundo para fazeres isto e depois volta. Ok, agora que todas as
nossas ondas de corrida estão agora corretamente colocadas de volta neste randomizador e produzidas. Este sinal de som deve realmente funcionar. Então dentro de nossa animação de corrida de rifle, tocar som, e então vamos para o Sound Sue. Vejo que você realmente ouve. Vou fazer o volume do jogador um. Eu queria ser um pouco mais baixo. E então faremos a mesma coisa aqui mesmo. Definido como um. Ele salva. Então agora eu me livrei do meu senhor. O que eu estou fazendo? Então, agora, sempre que andarmos, você deve ouvir alguns passos. E eu caio fora do mapa, mas você pode ver que tem aquele som ambiente. Ouça-me mesmo livrar-me daquele sénior. Isso soa muito melhor. Passos, melhores paisagens sonoras vêm até ele. Está bem. E se você não achar que isso está no lugar certo, você pode movê-los para locais diferentes e visualizá-los aqui. Como isso. Mas sim, é assim que podemos adicionar apenas uma caminhada básica no nosso jogo. Então, no próximo vídeo, vamos continuar e realmente começar a colocar algumas armas nessas mãos. Então espero vê-lo lá.
9. Equipando nosso loadout (parte 1): Olá a todos e bem-vindos de volta a outro vídeo. No último, montamos algum movimento básico do jogador, fazendo nosso personagem parecer que eles estão andando entre vídeos, eu fiz algumas coisas. Eu fui para a geometria. Arrasto uma caixa aqui para termos um pouco mais de espaço aqui. Se você está curioso sobre o que eu fiz. Eu ajustei x para 2500, y para 2500, e z para 100. E se você entrar em nossa visão ortográfica, eu a tornei agradável e centrada aqui. Se você tem coisas que estão fora da rede. Então, como eu tenho minhas configurações de snap para em 100. Então, como se eu fosse apenas como mover isso aqui, um 100, ver como não está na grade. Se você tiver esse problema, basta pressionar Control e ele se
encaixará no tamanho da grade que você estiver usando. Se eu puder desfazer isso alguma coisa de reconstruir, tudo bem. Foi o que eu fiz. E então se você tem como seu jogador é igual um tamanho ruim ou ele é apenas como no ar. Se você pressionar a tecla End, fim é ao lado de excluir, a
propósito, colina, em seguida, bater no chão. Por isso, o Control N ajuda-o à grelha, quaisquer que sejam as definições da grelha. E algo como no chão. Fatos divertidos para saber sobre Unreal Engine. Ok, então agora com isso feito, vamos continuar. Eu também me certificaria de nomear suas coisas. Eu nomeei este andar e coloquei em pastas. Organize sua vida. Você vai me agradecer mais tarde. Então neste vídeo, o que vamos fazer é começar a escrever o código que nos permitirá colocar armas nas mãos do nosso jogador. Imediatamente. Este vai ser um dos roteiros mais complicados do jogo. No jogo. Acho que realmente fiz sentido na aula. Era o que eu queria dizer. Não é, você sabe, não são questões super complicadas por muito tempo. E o fluxo de consciência desta casa, há muitos nós desde que temos seis armas, há muitas cópias colando. Então pode ser fácil se perder ou, você sabe, apenas ficar confuso como onde todos os dados estão sendo extraídos, você vai ver. Mas vou tentar guiá-lo passo a passo para não ficar super confuso. Ok, a primeira coisa que queremos fazer é você vai clicar com o botão direito do mouse no jogo FPS, criar uma nova pasta, e eu vou chamar esses dados de clique com o botão direito do mouse e jogos FPS e criar uma nova pasta. E vou chamar isto de armas. Eu vou definir os dois são de cor vermelha bonita. Em vez de nossa pasta de dados, o que você quer fazer é criar uma enumeração. Clique com o botão direito, vá para Blueprint. Enumeração. E enumeração é uma lista de valores nomeados. Não é mais complicado do que isso. É só pensar nisso como uma lista. Então yo E sublinhado, carregar para fora. Então vamos dar um nome a este. Você clica duas vezes e abre isso. Vamos criar para enumerar as excursões 12. E então vamos chamar alguém sem arma. E então este outro tem uma arma. Salve isso. Fechar. É lindo. Então eu poderia escrever para clicar novamente, fazer outra enumeração, vamos chamar este sublinhado E e um tipo de arma. Abra essa. Teremos seis integradores aqui. Então, 3, 4, 5, 6. E se você for muito, muito inteligente, provavelmente saberá que temos seis armas, então vamos colocar os nomes e as nossas armas. Vou ligar para um serif auto ou iPhone porque é mais fácil para mim digitar algumas letras a menos. E eu jogo muito destino. Então é por isso que lhe dei o nome do rifle de sniper. Temos oh, meu Deus, um lança-granadas. E depois lançador de crianças erradas. Meus dedos batem nas teclas erradas o tempo todo. Diga, legal. Agora o que queremos fazer? Se você ainda não acessar sua pasta de personagens, abra seu player, e nós criaremos nossa primeira variável. Então clique na variável e vamos chamar essa carga para fora. E nós vamos definir isso para ser do tipo de carga para fora. Então, agora, se você olhar, nós temos a enumeração que acabamos de criar ali, definida como uma variável e líquido, nós temos ambas as nossas opções aqui. Então podemos fazer é como se pudéssemos arrastar isso para fora e podemos fazer o que é conhecido como ligado. Então agora podemos executar eventos diferentes dependendo do que a integração é definido S em qualquer momento. É assim que as animações funcionam. Tudo bem. O que vamos fazer agora é criar a nossa primeira arma. Agora, a maneira como estamos fazendo isso é que vamos ter uma base de armas como pai. Ou praticamente todo o nosso roteiro vai, nosso roteiro geral vai mentir. E então nós vamos criar seis plantas crianças que vão herdar todos os dados do pai,
a base, com alguns pequenos ajustes e desvios para ele. Então. Vamos em frente e criar a base. Então vamos clicar com o botão direito do mouse e ir para o blueprint. E vamos usar um ator, que é um objeto que pode ser Players responder ao mundo que não recebe qualquer tipo de entrada ou qualquer coisa. E vamos chamar esta arma. Eu ia fazer uma piada lá, mas decidi não. Ok, na nossa base de armas, vamos adicionar componentes e queremos adicionar um gel,
meu Deus, uma malha esquelética, e vamos chamar isso de malha de arma. Não vamos encaixá-lo como qualquer coisa. A única coisa que queremos fazer com esta malha é garantir que não faça sombra. Porque a nossa mão lança uma sombra. Não queremos que a arma em nossas mãos faça sombra. E não estamos configurando nada porque esta é apenas a base. Então você não precisa. A próxima coisa que queremos fazer é executar um criar duas variáveis. O primeiro vai ser do tipo arma chamada tipo arma, desculpe. E nós vamos fazer isso do tipo, tipo arma. Então você vê bem aqui eu tenho todas as nossas armas. O outro que vamos fazer vai ser chamado de nome de soquetes. E nós vamos fazer isso com o nome do tipo. O valor padrão para isso será b, minúsculas b sublinhado. É a arma certa? Crenças. Então, arma certa. Você não tem que fazer isso de verdade. Bem, você tem que digitar este NB, não precisa fazer isso. Vou mostrar-te aqui mesmo. Então, se você for para o nosso esqueleto, malha esquelética em nossos braços de jogador, há um soquete aqui chamado B, arma direita. Então, isso é essencialmente, nós vamos criar diferentes soquetes para armas
diferentes porque eles são todos tamanhos diferentes. E então nós queremos que o soquete seja um pouco diferente que não
tenhamos problemas com o corte da arma na mão tanto. Mas o valor padrão será essa arma certa. E nós estamos configurando isso para ser um nome porque esse é o socket que nós vamos eventualmente codificar também, obtém nossas armas para anexar. E isto é, uma vez que esta é uma variável, podemos configurá-la dinamicamente dependendo da arma que temos. Ok, a próxima coisa que queremos fazer é em nosso jogador um espaço aberto e nosso gráfico de eventos é onde vamos colocar todos os nossos eventos. Nós vamos criar um evento personalizado e vamos chamar isso de pick up. Agora, se você sabe alguma coisa sobre eventos personalizados, você sabe que você precisa escrever um script que realmente chama esse evento. Este evento vai ser chamado dentro do nosso, se você se lembrar no primeiro vídeo. E tínhamos as armas a flutuar para cima e para baixo, vamos chamar este evento naquelas plantas. Então este é apenas um evento personalizado sentado aqui por enquanto. Uma pequena prévia para o futuro. Suponho que vamos adicionar uma entrada de um novo parâmetro. E vamos chamar essa arma de desova. E nós vamos fazer isso do tipo base de armas. E vamos fazer disso uma referência de classe. Neste curso, vamos usar referências de classe e referências de objeto. A principal diferença entre eles é que uma referência de classe vai se referir a toda a classe. Então ele vai se referir à Base de Armas, este projeto, e também vai se referir a todos os seus filhos. Tudo. Uma referência de objeto é um objeto de instância do tipo. Então isso seria referir-se a como o rifle de assalto especificamente, são a pistola especificamente, queremos referir-se a todas as classes. Então vamos conseguir uma referência de classe. E isso é tudo o que queremos fazer agora. Porque vamos ligar uma função a isto. Então vamos em frente e criar essa função. E vamos chamar isso de armas de desova. E queremos que isso tenha uma entrada é bem do tipo base de armas e vamos chamar isso de arma. A razão pela qual queremos que isso tenha uma entrada é se
voltarmos ao gráfico de eventos e chamarmos essa arma de geração de evento, o que você sabe que ela está pedindo uma arma? Porque nós fizemos essa entrada. Se eu ir em frente e excluir esta entrada e compilar e salvar. Ele se foi. E não temos, sim, nada para ligar isto. Você acaba em um plug esses dados em. E isso é deprimente. Então, queremos criar uma entrada para passar os dados ao longo como tal. E isso é lindo. Eu acho que é lindo. Agora este guião vai ser extremamente estupidamente longo. E para evitar que nos arrastemos para fora deste nó literalmente umas 20 vezes, eu vou promover isso para uma variável. E eu vou colocar isso em uma variável local. A diferença entre uma variável e uma variável local se você não estiver familiarizado, é que uma variável local é uma variável que é feita principalmente apenas para manter as coisas um pouco mais organizadas. Uma variável local. Por um lado, eles só podem ser criados dentro de funções. Então, se eu for a qualquer outro lugar, eu não posso criar uma variável local no meu gráfico de eventos só pode existir dentro de funções, e elas só existem dentro dessa função específica. Então eu sei que eu não vou usar essa variável em nenhum outro lugar no meu script. Então poderia muito bem torná-lo uma variável local para que, se eu for a outro lugar, eu não tenho que vê-lo porque eu não preciso dela. A próxima variável que criamos será usada dentro de outros eventos. Então vamos torná-la uma variável normal. E chamaremos isso de “primeira vaga “preenchida. E tudo o que começa com um A é e o ponto de interrogação é tipicamente um booleano. Então vamos em frente e arrastar esse booleano para fora. Agora, o que você pode fazer é conectar isso em um ramo e fazer a coisa verdadeira falsa que eu gosto de fazer é dizer que não. Então ele dizendo é o primeiro slot e não preenchido, então podemos traçar nossa filial e conectá-lo assim. Então, sem o nó é essencialmente apenas muda o que verdadeiro e falso seria. Assim é o primeiro slot. Se o primeiro slot ainda não estiver preenchido, você deseja gerar um ator da classe. Que classe queremos que seja? Bem, o que podemos fazer, temos três opções. Podemos ligar a nossa turma. Daqui. A partir daqui, nós criamos uma variável local, então poderia muito bem, todas essas três coisas significam exatamente a mesma coisa. E esses dados, essa variável, é a mesma coisa que essa variável, e tudo é igual a esse blueprint. Então queremos gerar algo de uma base de armas. A transformação da geração. Queremos transformar o ator. O ator sendo eu mesmo. Eu mesmo o jogador. Fazer, fazer isso um pouco mais. Ok? E então o que queremos fazer é esse valor de retorno agora
transformado em uma referência de classe para uma referência de objeto. Vamos clicar com o botão direito em promover para uma variável. E nós vamos chamar este slot de arma 0, 1, assim. E então nós queremos tomar R é a arma é primeiro slot preenchido e nós vamos dizer verdade que ele está cheio. Isso impedirá que esse script seja executado por esse ramo mais de uma vez. A próxima coisa que queremos fazer é anexar ator a componente. A coisa que queremos para o alvo que queríamos anexar suas armas slot 1, quaisquer armas no slot de armas um. O pai vai ser os braços. Então nós queremos anexar este ator arma slot 1, 2 nossos braços. E vai ser como, bem, o que é tomada você quer? Bem, eu já disse que é a arma certa. É por isso que temos essa variável. Então, como esse valor de retorno e isso é tudo de base de armas, podemos acessar suas variáveis. Então vamos dizer obter nome do soquete e conectá-lo para o nome. Então é por isso que criamos essa variável. E podemos acessar. Odeio quando faz isso, quando não está perfeitamente alinhado. Ok? Então, podemos acessar essa variável porque esse valor de retorno é que você pode ver a base de armas. Então nós temos a base de armas, então você obtém suas variáveis. E que lindo. Agora queremos criar outra variável e vamos chamar essa arma atual. A arma atual vai ser uma variável do tipo arma objeto base vai ser um específico. Vamos definir o slot de armas um para a arma atual. A arma atual é basicamente qualquer arma que esteja em nossas mãos. Então, se temos armas slot um atualmente equipado, slot de
arma um é a arma atual. Mudamos para a arma secundária. Ranhura de arma t2 será a arma atual. E então o que queremos fazer é adicionar uma nota de retorno. Então você deseja retornar esses dados. Então podemos pegar isso e adicioná-lo bem ali. E agora ele adiciona um tipo de objeto base de arma lá. Poderíamos ter batido no novo parâmetro e por ali, mas somos chiques. Diga o nome da arma de retorno. Agora é ser uma compilação. Deixe-me voltar aqui. Agora estamos devolvendo dados. Então, esses dados começam aqui. Está passando por aqui e está passando por tudo isso. E, em seguida, é saída bem ali. E é tudo tipo base de armas. É assim que funciona. Mas temos mais do que apenas uma arma. Nós fazemos. Temos seis. Então é aqui que fica um pouco ridículo. Fora do ramo falso. Você, então, quer perguntar se ranhura de armas t2 não é preenchido. Então vamos copiar e colar isso. E então vamos criar uma nova variável. Na verdade, eu ia acertar o Controle W neste caso. E vamos dizer que é o segundo, eu honestamente deveria nomeá-los assim. Quântico. Tornar mais fácil sobre os olhos é o primeiro. Slot preenchido. Vou arrastar o segundo slot e colocá-lo lá. Então, agora, se o primeiro slot é preenchido e vai ser como,
Bem, o segundo slot é preenchido? E então ele vai correr através desta mesma linha de código novamente. Se o segundo slot não for preenchido,
bem, então vamos gerar um ator. Vamos colocá-lo em nossas mãos. E nós vamos definir isso para ser slot de arma 2. E então nós vamos dizer é que as armas é o segundo filme caça-níqueis. Sim, é. Nós vamos ter que fazer este de um a seis. Então eu vou pular em frente. Vou fazer o terceiro slot, quarto, quinto. Você começa o ponto todo o caminho através do seis. Depois volto e mostro-te. Ok, então se você terminou, espero que aquele pequeno teste, uma pequena tarefa não tenha sido muito difícil. Se não fosse mostrar exatamente o que deveria ser. Então primeiro slot, primeiro slot, arma, slot 1, segundo slot, segundo slot, segundos lote armas como 2,
3, 3, 3, 4, 4,
4, 5, 5, 5, 6, 6, 6, 6. Então esse é o enorme conglomerado
de uma função aqui. O que vamos fazer é comentar caixas em torno desta coisa vai dizer gerações, arma, ator nas mãos do jogador, e atribui pode até mesmo vê-lo no slot 0. Eu acho que eu realmente soletrar tudo bem aqui. Ok, então isso é o que isso está fazendo essencialmente. E estamos retornando esse valor todas as vezes. Então é assim que vamos gerar nossas armas. Então, se voltarmos ao nosso gráfico de eventos, o que queremos fazer aqui depois disso é que queremos fazer outro evento personalizado. Os clientes vêm trabalhar comigo. Oh meu Deus. Por que não posso fazer coisas? Ok. Vamos fazer uma chamada arma de equipar assim. E então vamos chamar a arma equipada assim. Em equipar arma, nós vamos fazer uma entrada de chamada arma e nós vamos fazer de arma objeto base. Então agora podemos ligar isso assim. Por enquanto, vou cortar este vídeo aqui. Vai haver duas partes porque, como eu disse, é bem complicado. Isto de quando este evento é executado, que nós não temos nenhum que acontece aqui que o dirija. Vamos criar uma certa arma. Então, se o nosso primeiro slot, vamos apenas dizer que é o esforço. Não temos armas. Se a primeira vaga não estiver preenchida, vamos criar um ator de base de armas tipo. Vamos atribuir isso à primeira vaga. Eu vou definir isso. Vou dizer que as nossas primeiras caça-níqueis agora filmam para que se interagirmos com outra arma, ela cairá aqui. E então lá embaixo, lá embaixo, eles estão lá embaixo. Vamos anexar este ator,
esta arma aos nossos jogadores, braços no nome do soquete. Vamos definir isso como nossa arma atual. E então vamos retornar esse valor para então fazer mais coisas para realmente equipar essa arma. Porque o que precisamos fazer é executar algumas dessas armas alternando animações nos sons. E precisamos realmente ter a malha da arma aparecendo em nossas mãos. Não há nada que esteja realmente fazendo a malha aparecer. E então também quando trocamos fazendo essa outra malha desaparecer. Então é isso que vamos fazer no próximo vídeo. E espero vê-lo lá.
10. Equipando nosso loadout (parte 2): Todos, bem-vindos de volta a outro vídeo. E o último, começamos esse roteiro muito longo que nos permitirá equipar, mostrar e trocar entre nossas armas. Como eu disse, essa aula é muita coisa de gráfico de eventos. Este é um dos mais pesados. Assim que terminarmos esta parte, vamos trabalhar na criação das nossas armas. E haverá coisas mais empolgantes acontecendo, mas nós temos que fazer todas essas coisas back-end primeiro para que nosso jogo realmente funcione. Está bem? Então, onde paramos, temos nosso captador de arma são função de arma de geração e, em seguida, nosso evento equipar arma. O que vamos fazer é começar a construir este evento de armas. A primeira coisa que queremos fazer é puxar para fora um ramo 0, também um pouco de petisco entre os vídeos. Eu peguei todas as variáveis dos slots de armas e criei uma categoria. Então tudo que você precisa fazer para criar uma categoria é ter uma variável selecionada e digitar uma categoria. E então eu vou criar um. E então você pode arrastá-los por aí, colocá-los na ordem correta. Então agora você não precisa ter essa lista super longa de variáveis em todos os lugares, facilita sua vida. Mas o que vamos fazer é criar uma nova variável. Lembre-se está trocando de arma. E isto vai ser um booleano. Então você quer verificar antes que possamos equipar uma arma, queremos ter certeza de que não estamos já trocando armas. Está bem? Se não estamos no momento, se já não estamos trocando uma arma, então queremos fazer outra verificação. E vamos dizer que está recarregando. Isto é um booleano, sim. Está bem. Vamos ver se estamos recarregando e eu recarregando script ainda não existe isso, mas ele irá eventualmente. Esta parte está essencialmente aqui. Então, se estivermos recarregando uma arma e tentarmos trocar, essa recarga será cancelada. Ele não vai continuar enquanto a outra malha de armas e dados aparecerem. Então, se estamos recarregando, queremos desligar o recarregamento. Se não estamos recarregando, então só queremos dizer, bem, estamos trocando uma arma. E queremos conectar esses dois assim. Se estamos recarregando, agora não estamos recarregando, e então podemos começar a trocar a arma. Se não estamos recarregando, então ele vai dizer que estamos trocando uma arma. Bem, nós queremos fazer aqui é criar outra função para executar. Esta função vai existir para mostrar nossas malhas de armas ou para esconder a que temos equipado atualmente. Então, vamos nomear com precisão este esconderijo e mostrar malha de armas. Podemos ir em frente e fechar isso. Podemos ir em frente, arrastar isto para fora e colocá-lo bem ali. Mesmo que não haja roteiro nele. A primeira coisa que queremos fazer quando se trata de esconder e mostrar malha de armas é, bem, queremos passar os dados de antes. Então temos são configurados automaticamente para o objeto de base de
arma e vamos apenas nomear esta arma. Certo, e como antes, quero promover isso a uma variável local porque isso
vai ser uma função peluda e peluda. Arma local atual. Agora, se você se lembra, eu falei que é válido antes e é aí que isso vai voltar. Então, se conseguirmos nossas vagas para armas, vamos conseguir uma vaga para armas, uma das primeiras que queremos perguntar, abrir a vaga 1. Se as armas pensavam que uma é válida, queremos definir, isso pode nem aparecer a menos que eu tenha, oh, ele define ator escondido no jogo. O ator que queremos definir dica e jogo é slot de arma 1, e queremos torná-lo escondido. Então, verdade significa invisível. Isso significa visível. A razão pela qual isso é válido existe, certo? Quando se trata de este script, é que se você executar esconder e mostrar malha arma, quando slot arma um não existe, ele vai ficar confuso. Então é válido é uma espécie de senso comum para computadores. Então ele vai reconhecer como, ok, você está dizendo para fazer as armas slot um invisível mas eu não vejo nada no slot de armas 1. Não há dados nesta variável atualmente. Por isso, vou continuar o meu caminho. Certo, então agora queremos perguntar isso novamente para as armas 2, 3, 4, 5 e 6. a mesma coisa. Então podemos copiar e colar. Não é válido. Então, se não é válido, então vai perguntar sobre armas slot dois. Se for válido, ele vai definir o jogo escondido do ator e, em seguida, ele vai apenas continuar no roteiro assim. Então é assim que deve parecer. E então queremos colocar o slot de arma 2 assim. Então isso é válido coisa existe principalmente porque nós vamos querer tornar as armas pensadas uma visível, certo? Mas ele vai continuar um e ele vai olhar para o lote de
armas para a primeira arma que nós pegar. Quando pegarmos nossa primeira arma, não
haverá nada nos slots 23456. Então é válido vai ser capaz de determinar que isso nem é curvado. Então é apenas uma maneira de evitar erros. Foi uma longa maneira de explicar isso, eu acho. Então vamos copiar e colar esses dois e fazer exatamente as mesmas coisas até termos seis deles. Pode acertar um pouco de nós redirecionar para torná-lo não feio. Então temos 1, 2, 3, 4, pelo
menos precisamos de mais dois para 5 e 6. Como eu disse, isso não é super complicado, é apenas longo porque você tem que verificar para você agora, eu estou sendo legal. Estou a dar-vos seis armas aqui. Está bem. Então, temos armas para fora. Uma ripa de arma também. Bem, não são três. Abrir slot para Cinco diz, oh, legal. Ok, o que isso está fazendo? Vamos voltar de tudo isso. E vamos dizer couros, malha de armas
atualmente equipada. Então, se você não tem isso aqui, você vai equipar uma nova arma, e vai funcionar corretamente. Digamos que você tenha o rifle de assalto, certo? E então você muda para o pistilo. A pistola funcionará corretamente, mas você verá a malha da pistola ou a triste malha ainda e estará sobreposta. O rifle de assalto. Então isso é apenas esconder todas essas malhas para que elas não se sobreponham. Mas o que queremos fazer é garantir que o nosso novo apareça. Então é aqui que isto fica ainda mais ridículo. Então fora do ator set, escondido e jogo quer traçar um ramo. E queremos fazer isso, seja válido ou não. Então ambos vão se conectar assim. Talvez eu queira isso um pouco mais para baixo porque vai ser grande. E então o que eu quero fazer é sair desta filial, eu quero pegar nossa arma local atual. Então lembre-se, a corrente local vai acontecer é isso aqui, que será arrastado para aqui, que também é igual a isso, que também igual a isso, que também é igual a isso, que também é igual a isso, que é isso. É assim que isto pode ficar confuso. Está bem? Então, se nossa, se nossa arma atual for igual ao slot de armas 1, e se você se lembrar, na arma gerada, estamos definindo o slot de arma um para a arma atual. Se mudarmos para armas, muito para isso se torna a arma atual. Então, se a nossa arma atual é igual ao slot de armas um, você pode ser capaz de adivinhar o que queremos que ela faça. Queremos pegar o slot de armas 1, e queremos definir ator em Endgame. E queremos deixar isso desmarcado. Queremos que isso apareça. Queremos que as armas que uma, seja lá qual for essa arma, se tornem desocultas, apareçam. Em outras palavras, então o que vamos fazer é agora precisamos copiar, colar isso mais cinco vezes. Eu sei, conheço pessoas. Isso é loucura. Então lá vai você. 123456. Tudo o que você quer fazer aqui é apenas slot em armas pensadas para abrir slot 2. Então isso é igual a ranhura de armas. Então, se ele, se ele não for igual a 0 e slot 1, ele vai correr para baixo. Ele vai dizer, Bem, ele evolui no slot dois? Se acontecer, vai mostrar. Se não acontecer, vai ser como, Ok, bem faz isso,
ele vai abrir três, assim por diante e assim por diante. Três. Codificar é monótono quando ele fica assim e você tem tantas armas para verificar. Tudo bem, então agora eu tenho aquele destaque, aquela coisa toda. Comentário mostra malha de arma
recentemente equipada. Boom, assim. Está bem. Fique tranqüilo. Esta função e esta função são as mais longas que alguma vez irão criar. Está bem? Você pode fechar, nunca olhar para trás. Vamos ligar a arma à arma aqui mesmo. Só para ter certeza de que os dados estão sendo passados corretamente. Vamos parecer uma linha bem reta, irreal. Oh, meu Deus. E o que queremos fazer é tirar essa carga e queremos que ela tenha uma arma. Agora temos uma arma. Então vamos retirar um nó de atraso. E vamos adiar para o ponto. Oh Deus, 33 segundos. Vou adicionar um comentário aqui para você. E dizer que permite tempo. Para animação de troca de armas. Se isso não existir, esse pequeno atraso, então a animação da arma, esse código será executado tão rápido que você não verá a animação de troca de armas. Agora vamos finalmente definir o ponto 33 foi um bom momento que eu acho onde ele parecia muito bom. Armas é arma está trocando arma. Não vamos trocar a arma. E então vamos fazer outro booleano imediatamente. Chame isso de atirar, podemos atirar nossa arma? Nós podemos. Ok, será falso padrão. Quando começamos a criar outros eventos em ações de entrada para filmar, estaremos ligando e desligando isso porque não queremos ser capazes de atirar nossa arma. E estamos recarregando e fazendo outras coisas. Então, vamos dizer que URI permite filmar. E depois, ou você não pode atirar enquanto. Trocar leptons quer ser capaz de atirar uma arma quando você está alternando entre eles vai ser estranho. Está bem? Então isso é tudo o que queremos fazer lá. Legal. Ok, então agora, como eu disse antes, nossos captadores de armas vão fazer este evento de coleta de armas. Mas e se já tivermos todas as nossas armas e só quisermos alternar entre elas? Ainda bem que perguntou. Foi quando teríamos acabado de executar a arma de equipar. Mas queremos ligar esses dois são chaves de um a seis. Então, agora vamos fazer isso. Então vamos em frente e eu vou criar um novo gráfico de eventos para isso, e eu vou chamar isso de mapeamentos de ação. O que eu quero fazer aqui é ir 1, 23, me dar uma queda de 5 e você adivinhou, 2100 e só brincando, são seis. Tudo bem. Cara, coloque isso no semi bem. Posições. Espaçando-os muito. Ok, então nós temos 1, 2, 3, 4, 5, 6 bem ali. Para começar, puxe para dentro E se um ramo como não relacionado a chamá-lo. E vamos dizer que a vaga das armas está cheia? Se a nossa vaga de armas estiver cheia, então queremos fazer outra verificação só para sermos mais seguros. Queremos ter certeza de que nossa arma atual é igual a armas Slot 1 igual 0. Oh, espere, desculpe, não é igual. Eu era como esperar, isso não soou bem fora da minha boca. Está bem. Se atual, tudo bem. Esta coisa aqui permitir desativa como assim, se você tem armas slot um verificado ou você tem slot aberto 1 equipado, você não quer. Se ele apertar a única tecla de novo, e isto não está aqui. Você só vai continuar executando essa animação de comutação. Você vai mudar para a mesma arma uma e outra vez. Isso está desabilitando a habilidade de mudar para a arma que você já tem. Então se isso, se a arma atual já não é uma, que
significa que se n é igual a 2, 3, 4 e você está tentando mudar para um, então nós queremos chamá-la de arma equipar evento. E a arma que queremos criar neste caso é o slot de arma 1. E então vamos definir isso como a arma atual. A razão pela qual estamos configurando isso como a arma atual é porque essa função de arma de geração só
funcionará na primeira vez que você interagir com essa arma. Então eu tenho a pequena arma
flutuante gerando aquele ator no mundo pela primeira vez. Estou colocando todas as localizações na minha mão e todas essas coisas. Estou configurando isso como a arma atual. Mas agora digamos que tenho todas as seis armas. Já estão todos gerados. E eu só quero alternar entre eles. Então agora só precisamos executar a arma equipada, que mostra e esconde o fósforo. E também faz a pequena animação. É tudo o que queremos fazer. Então é por isso que queremos, nada está configurando isso como a arma atual. E desde que criamos essa entrada aqui, podemos configurá-la para ser qualquer coisa específica. Nós sempre queremos que a chave seja uma arma pensada. Então vamos em frente e copiar e colar toda essa coisa e fazer a mesma coisa para 2, 3, 4, 5 e 6. Estes são um pouco próximos um do outro. Então, vou dar-vos um segundo para fazerem tudo isto
para os slots de armas dois a seis. Então, vejo você em um segundo. Está bem. Agora, com tudo isso feito, você deve ter primeiro 11 a 2 segundos 333444. Apenas certifique-se que todos estes são os números corretos aqui. E então vamos comentar a caixa em torno da coisa toda. E diremos descobertas chave para equipar armas depois que eles têm ben e inicialmente pegou. Então, como eu tenho dito, tudo isso como coisas de back-end. Pode não estar totalmente fazendo sentido neste momento, mas quando nós realmente adicionamos as malhas de armas, quando nós realmente fazemos as animações para colocá-las em nossas mãos. Tudo isso vai de repente ou poderia lindamente e você vai ser como, oh meu Deus, isso é incrível. Ok, então obrigado por me ajudar nisso. No próximo vídeo, vamos começar criando nossos captadores de armas que tenhamos algo para realmente executar esse evento. E quando pudermos executar esse evento, podemos começar a criar nossas animações para realmente segurar as armas, reajustar os braços porque está um pouco quebrado com os ativos que temos. E então podemos colocar as armas em suas mãos. E assim que tivermos tudo isso, vai ser lindo. E então podemos adicionar algumas funcionalidades legais para as armas, realmente fazê-las funcionar. Então espero que vocês ainda estejam no nosso caminho através disso. Você aprendeu algumas coisas que ele por assistir e eu te vejo na próxima.
11. Criando uma Weapon: Olá a todos e bem-vindos de volta a outro vídeo sobre Unreal Engine para fazer este shooter em primeira pessoa. Nos últimos dois vídeos, fizemos um monte de copiar e colar tipo de script, fazendo com que nossas armas apareçam e se escondam, só vamos dizer aparecer e reaparecer, mas eles realmente não fizeram nenhum sentido. Então, neste vídeo, vamos continuar com essa funcionalidade, cria alguns blueprints para realmente nos
dar algo para pegar e executar o evento que fizemos. Então a primeira coisa que queremos fazer é na nossa base de armas, nós vamos realmente fazer todos os nossos filhos quaisquer edições que fizermos dentro da base de armas, ele será automaticamente aplicado a todas as crianças, se ou não os fazemos agora ou mais tarde. Então vamos fazê-las agora e vocês verão por que estamos fazendo isso agora em um segundo. Então vamos clicar com o botão direito no Weapon Base, criar Child Blueprint. E eu vou chamar essa arma de sublinhado Pistola. Vamos continuar fazendo isso por todos os seis. Então a nossa espingarda e nós temos uma espingarda. Você tem uma espingarda de atirador? Temos um lança-granadas. Por que eu esqueço? Está bem. Lança-foguetes. Bem-vinda. Está bem. Eu tenho as armas sublinhadas que eles estão ligados à base de armas ou apenas por razões de nomenclatura. Porque nós estaremos criando como impacto rival automático, efeito e chegada automática, isso e esse tipo de coisa. Tudo o que queremos fazer até agora, vamos abrir a nossa arma. A única coisa que temos, podemos clicar aqui e dizer mostrar variáveis herdadas. Isso é o que queremos. Então queremos ser capazes de ver o nosso tipo de arma e o nosso nome de encaixe. Então vamos em frente e realmente fazer isso um por um. Meia um nome. Vamos nomear. Este ainda é o soquete sublinhado e vamos criar isso. Você sabe o que? Não, retiro o que disse. Vamos fazer isso mais tarde porque ainda não foi criado, então pode nos dar um erro. Desculpe por isso. No entanto, para o tipo de arma, podemos definir isto para ser pistola. E para a malha de armas, queremos que este seja o nosso clique cedo demais ou pistola. Lá vamos nós. Lá está ele. Saia de lá. Vamos fazer muito mais edição aqui. Mais tarde. Tipo de arma, rifle automático, purê de armas. Chama-se rifle de assalto. Vamos espingarda. Faça isso do tipo espingarda. E vamos em frente e não arma Schwartz, arma de tiro. E vamos como nossa espingarda. atirador. atirador. Temos mais dois. Na verdade, nem vou fazer disto uma janela maior aqui. Quem se importa? Lançador de granadas e foguetes entrando nas malhas agora, mesmo que não haja nenhuma funcionalidade adicionada, só para que você possa visualizá-los quando precisarmos. Ok, a próxima coisa que queremos fazer é criar nossos captadores de armas. Então, se você sabe, eu vou te mostrar que eu tenho os outros projetos ainda abertos aqui. Então, se eu for tocar Play, vamos criar essas coisas que podemos então pegar e interagir com isso. Isso é ótimo. Essas coisas, objetivos, filme ali. Com a nossa pasta de jogo FPS selecionada, vamos criar uma nova pasta e vamos chamá-la de interagir uma tigela. E então dentro dessa pasta eu quero criar uma pasta chamada armas. Porque nós também estamos em nossa pasta interactable vai fazer M0, isso também vai ser interactable. Por enquanto, vamos ficar com as armas. Botão direito. Então temos uma classe de ator e chamamos de arma. Atenda, base. Vamos abrir isso e você pode arrastar isso ao longo do topo porque nós vamos estar fazendo algumas coisas diferentes aqui. Então, imediatamente, luzes com a nossa rota de cena. Apenas fique com isso. Quem se importa? Vamos dar um pulo um passo. Malha Esquelética, e vamos chamar isso de malha de arma. E então isso é um pouco estranho, mas nós vamos adicionar uma malha estática e vamos chamar essa caixa invisível. E, em seguida, vamos também adicionar um componente de movimento rotativo. E vamos definir o z para ser como 130. Quanto mais alto for, mais rápido vai. Z significa que vai balançar. Tipo como você pode, você pode, você pode mexer com isso se você quiser que ele faça alguma rotação louca. Mas para o bem disto, vamos manter isto bem simples. Esta caixa invisível é um pouco estranha. A razão pela qual temos uma caixa invisível, porque a maneira como estamos interagindo com isso é através um traço de linha em algumas das malhas como a pistola são muito pequenas. E então quando eu estava brincando com isso, eu descobri que ele nem sempre bate ou funciona tão bem porque a malha em si é tão pequena. Então esta caixa ser invisível significa que sempre vamos bater com outra coisa, apenas nos dar um raio maior, então podemos apertar a tecla E e interagir com ele mesmo que você não possa realmente vê-lo. Então, com esta caixa, o que quero fazer é torná-la invisível e escondida no jogo. Então desmarcada, visível e verificar jogo oculto. A escala, Vamos bloqueá-lo e você torná-lo 0,55 do seu tamanho. E para a malha estática, só
queremos o cubo básico de um m. Uma vez que temos configurado para ser invisível, você não vai realmente vê-lo mesmo nos viewports bem aqui. Mas aí está. É invisível. Mas agora está tudo pronto. E podemos ir em frente ao nosso gráfico de eventos. Na verdade não precisamos, precisamos do evento realizado, precisamos do Event Begin Play. Se você se livrou deles, você sempre pode ligar de volta. Vamos tirar o nosso personagem daqui. Vamos lançar para ser, espere um segundo. Durante a rede. Deve funcionar. Estranho, talvez fora de apenas elenco para jogador API. E as minhas coisas de ortografia estão erradas. Por que essa coisa nos odeia? Espere um segundo aqui. Ok, então eu encontrei algo que eu literalmente nunca encontrei antes da minha vida quando eu encontrei uma solução para isso. Então, se você não é capaz de lançar para o jogador bp fora de obter personagem jogador. Vá em frente para o nosso jogador BP. Bem aqui em si mesmo. Role para baixo para peão e auto possuir jogador, ir para o jogador 0, compilar isso. Você aperta o play. Tudo ainda está funcionando. E agora, fora do nosso personagem de jogador, podemos lançar para ele. Agora é magro. Vá para o jogador, que é o que eu sempre esperava que acontecesse. Então isso foi muito estranho. Mas infelizmente, vamos seguir em frente com o botão direito do mouse e promover isso para uma variável e chamá-lo de jogador. Uma coisa que você percebe sobre mim é que eu sou muito perfeccionista, então eu estou sempre indo para a caixa de comentários, mesmo o mais simples dos scripts para que eu saiba o que tudo isso está fazendo aqui. Então, sim, nós só temos uma variável para o jogador para que
possamos referenciar todas as suas funções e variáveis e todas essas coisas. Aqui, vamos criar um evento personalizado e vamos chamar isso de retirada. Eu meio que escolhi o que está acontecendo, interagi com armas. Está bem, só para ficar com ele. Então vamos criar uma ligação que será chamada de interativa. Então vamos mantê-lo agradável e semelhante. Atacar o nosso jogador. Se você manter pressionada a tecla Control, ele irá obtê-lo automaticamente. E então nós queremos obter o evento de uma arma de arma já. Então, se você se lembra do último vídeo, dois vídeos atrás, coleta de
arma é esse evento que começa a desovar a arma, trazê-la para o mundo pela primeira vez e então a equipa. E já que temos essa entrada aqui, quando o chamarmos, ele vai perguntar qual deles você quer identificar? E você pode ver que está pedindo, agora, já que isso era uma referência de classe , está pegando todos eles. Agora temos a espingarda automática, lança-granadas, pistola. Podemos gerar qualquer um desses. O que queremos fazer é promover isso a uma variável e podemos manter a arma de nome para gerar. Eu só não quero os espaços e é assim. Ok? Depois disso, queremos retirar um nó do uma vez. Então só queremos fazer isso uma vez e vamos tocar um som hoje. E quando tocarmos o som, queremos destruir o ator. Então vamos destruir essa caminhonete. Uma vez que tocarmos um som, eu quero promover este som uw variável dois, e vamos chamá-lo de som pick-up. Como isso. Eu acredito que é isso. Então temos que fazer aqui para as nossas armas. Na verdade, quer saber? Eu vou ser legal. E vamos adicionar mais uma coisa para o sinalizador. Mas antes de fazer isso, vamos comentar e eu vou dizer corre evento no jogador
bp que conhecemos o script. Agora você provavelmente está dizendo para si mesmo, bem Tim, este é um evento personalizado em si vai o que vai chamar este evento. E você estaria certo em se perguntar isso. E vamos criar, isso é o que vamos fazer. Vamos criar um mapeamento de ação para o 0x0 no like é o que vai ativar este evento, que irá então ativar este evento. E isso funcionará nesse evento. E será só uma coisa enorme e longa. Então, antes de dizer agora, bem, isso é como difícil. Não é assim tão difícil, é apenas muito complicado. E então há um monte de plantas que estão conversando uns com os outros para fazer esse tipo de coisa acontecer. Se você notar isso, eu tinha as armas balançando para cima e para baixo. Então vamos fazer isso agora. Então, fora do evento tick, se você não está familiarizado, então Event Begin Play e evento tick, nosso plano do Presidente Eddie. Se você está familiarizado com codificação semelhante, Event Begin Play é o equivalente a anular Início. Ele é executado sempre que este projeto existe, sempre que ele é chamado para o mundo. Então isso pode ser talvez como no segundo em que você acerta o play. Ou pode ser sempre, sabe, neste caso, sempre que você gerar esta arma. Quando a arma é gerada, esse evento e o jogo serão executados. O tick de evento é executado uma vez a cada quadro. Então, o tick do evento é melhor para o que você vai ver aqui quando estamos, se você está mudando certos valores, você quer que o jogo esteja constantemente verificando isso. Então você iria executá-lo como um tique-taque de evento. Nós vamos fazer é adicionar uma linha do tempo e vamos chamar isso de Bob. Para o Bob para cima e para baixo. Incrível. Vamos clicar duas vezes em Bob. Certo, vamos abrir o velho Bob. E eu vou fazer isso durar 2,5 segundos. Queremos que isto faça o loop. Queríamos nos curvar constantemente para cima e para baixo. Nós vamos adicionar a faixa vetorial do vetor é x, y e z. E nós podemos bloquear e nos livrar de x e y. Nós só queremos mexer com z. Então vamos em frente e se você pressionar Shift, você irá adicionar quadros-chave. Então vamos ter quatro desses. O primeiro vai ser o tempo 0, valor de 0. O segundo vai ser o tempo de 0,75 e vai ter um valor de, deixe-me apenas referir as minhas notas. Vai ter um valor de 0,5. Este terceiro vai ser 1,75. Oh Deus, eles se sobrepuseram. O último colocado no tempo 2.5. Ok? O terceiro é o tempo 1,75, valor de 0,5 negativo. E, em seguida, este último é o tempo de 2.5, valor de 0 novamente. Então vai subir e depois descer. Agora isso é um pouco irregular. Então, se realçarmos todos eles,
clicar com o botão direito do mouse e clicar em Auto, agora ele vai criar uma linha mais suave como essa. E isso é exatamente o que queremos. Então podemos fechar Bob, e agora temos uma nova faixa. E, na verdade, desculpe, não demos o nome a esta nova faixa. Podemos dar um nome a sair. Está bem, Legal. Vamos chamar isso de pairar ou algo assim. Agora podemos realmente sair. Fora da atualização. Queremos adicionar ator e deslocamento local e o local que queremos ser esse valor. Então, está atualizado. Então não é, não é não está executando este ato publicitário ou compensação legal. Quando isto terminar, está a executá-lo como uma actualização, por isso está a executá-lo constantemente. E são esses eventos que acontecem a cada segundo. E o local está atualizando com esse valor assim. Então vamos em frente e comentário caixa isso também e dizer paira para cima e para baixo para o estilo. Ok, então nós fizemos tantas coisas para tal funcionalidade. Então, aqui vamos nós. Há um pouco de estilo para você. Tudo bem, eu prometi, e faça parecer legal. Está bem. Então vamos acabar com a arma, escolher uma base. É tudo o que queremos fazer. Então, queremos começar a fazer crianças para isso também. Então vamos criar uma classe Child Blueprint e chamar isso de arma de pistola. E eu vou em frente e pular em frente. Acredito que saiba como clicar com o botão direito do mouse e criar classe
Child Blueprint para todas as seis armas. Então vá em frente e faça isso e eu me juntarei a você em um segundo. Tudo bem, agora com isso feito, você deve ter todos os seis. Devíamos ter sete plantas e o teu total, porque uma é a base. E o que queremos fazer é simplesmente abrir um desses. E vamos para a nossa malha de armas e vamos fazer a única espingarda. Então o que queremos está lá fora assim. Esqueci-me de fazer uma coisa. Desculpas é a malha da arma. Eu quero estar no ar, por isso disse ser uns 150, talvez. Então o valor que eu tinha no outro projeto é 110, tive que voltar e verificar qual era o número. Então agora isso vai estar pairando acima do solo e você percebe que ele é automaticamente atualizado aqui assim. A outra coisa que eu fiz foi eu fiz o y negativo 20. Por isso, afasta um pouco. Então isso torna isso aqui um pouco mais centrado com nossas raízes de cena bem ali. Você pode substituir o cenário apenas arrastando isso para cima. Mas então se você fizer isso, então você não será capaz de movê-lo para cima porque então este
será o centro de tudo. Será a raiz. Ok? Então, as outras coisas que queremos fazer em todas estas plantas, são armas para desovar. Queremos configurá-lo como a espingarda automática. E o som de captação é que podemos começar a encaixar o sentido desde que definimos isso para ser uma variável. E há um chamado aumento de espingarda, assim. E esse é o que queremos. Se você sentir que é muito alto ou muito silencioso, você sempre pode ir por baixo do som de pick-up. E você pode fazer isso como 1,5 ou algo assim se você quiser ou você pode fazer mais silencioso. Na verdade, cabe a você. Mas é isso que queremos fazer em todos estes. Então você pode ir em frente. Mais uma vez, confio em você, vou te mostrar mais uma vez que você pode fazer o resto deles. Vou dar-te uma pequena tarefa aqui, arma para desovar. Queremos fazer com que a pistola em como estes não tenha realmente nada lá ainda, mas como eu disse, a funcionalidade funcionará de uma vez. Está tudo preparado a malha da arma. Vamos fazer isso com a pistola. Então aí está. E o som do captador, todos
eles são chamados de raios. Então você vai ver raios de pistola e você quer usar a fila que os sons ligeiramente diferentes cada vez. Então vá em frente e tente fazer o resto das armas, e eu voltarei em um segundo. Então peço desculpas de novo. Há uma coisa que me esqueci de mencionar. Então, na base de coleta de armas, certifique-se na base para que isso se aplique a todas as crianças. Vá para a caixa invisível e desmarque o bloqueio e faça o valor y de 1 antes de ser 0,5 e isso é um cubo. Queremos que isto seja mais retangular porque as nossas armas são muito longas. Queremos que isso encapsule toda a arma. Então, apenas faça 0.51.5. E então você pode tornar isso invisível novamente e compilar e salvá-lo. E então isso será aplicado a todos os outros. Com isso, podemos colocar nossos captadores de armas no mundo. Então vamos colocar o pistilo, espingarda automática ou a espingarda. Oh Deus, a espingarda. Sabe por que o choque em baixo. Estranho. E então nós vamos, esta biblioteca cai. Talvez apenas o ângulo que eu estava caindo no mapa deve ter pensado que eu estava colocando-o embaixo do chão. granadas e lança-foguetes. Então agora temos todas as nossas armas. Se eu entrar e apertar Play, você pode ver que eles estão fazendo lá Bob e, e mesmo coisa, talvez um pouco alto demais ainda, você pode diminuir isso, basta mudar o valor Z no pai lá. E então isso deve consertar isso. E você sempre pode sintonizar essa Abby, fazê-los girar mais rápido, o
que você quiser. A última coisa que queremos fazer neste vídeo é
permitir que possamos interagir com essas armas. Então vamos para nossas configurações, configurações do projeto. Vamos entrar em entradas e criar um novo mapeamento de ação. E vamos chamar isso de interagir. E nós vamos ligar isso ao nosso gosto. Se encontrarmos. Alguém com facilidade e a letra mais comum do alfabeto. Ok, então nós queremos estar no jogador BP, no personagem. E queremos que isso esteja em nossos mapeamentos de ação para que possamos encontrar algum espaço por aqui. E vamos chamar a interagir. Agora, aqui estão algumas coisas que queremos fazer quando interagimos. Queremos traçar um traço de linha por canal. Um traço de linha é a mesma coisa que
vamos fazer quando dispararmos as nossas armas de varredura. Vai traçar uma linha invisível para o mundo, mas precisamos dar a ele um ponto de partida e um ponto final. Então vamos pegar nosso componente de câmera e vamos obter a localização do mundo. Então, a localização da câmera. E também queremos obter o vetor avançado. Então a localização da câmera e o vetor que está apontando para a frente. Vamos multiplicar esse vetor avançado por um valor baixo. Sim. E isso vai ser o quão longe no mundo nós queríamos filmar. Neste caso, vamos definir para ser algo como 200. E então nós vamos adicionar estes juntos assim. Odeia-me. Espere. Pensei que fosse um carro alegórico. Espere um segundo. Acabei de ter vetor um vetor mais. E nós vamos vetor mais um vetor e fazemos disso o nosso ponto final. E então nosso ponto de partida será a localização da câmera. Ok, então o que estamos fazendo aqui é que estamos conseguindo a localização do nosso componente de câmera. Isto aqui mesmo. Vamos ter a sua localização. Vamos conseguir qualquer que seja a direção que for para a frente, vamos multiplicar essas 200 unidades. Então essa seria a distância de como aqui, como começar daqui até aqui. E então vamos adicionar essas duas coisas juntas para obter o nosso endpoint. E então nosso ponto de partida é apenas a localização da câmera. Tudo bem? E assim, fora do valor de retorno, queremos obter uma instrução if. Porque nós só queremos, então se você vê verdade, se houve um hit false caso contrário, então nós só queríamos que este traço de linha fizesse qualquer coisa se realmente atingíssemos alguma coisa. Por agora vamos retirar uma sequência, mesmo que estejamos fazendo apenas uma coisa porque queremos interagir com várias coisas. Então isso é só para o futuro. E depois, fora de um, queremos lançar para a nossa arma, pegar a base. E depois, fora da nossa roupa, vamos quebrar os resultados deste sucesso. E então o Ator Hit é o que vamos conectar ao nosso objeto. Então, o que o resultado do freio está essencialmente fazendo é desenhar esta linha, rastreá-lo, vendo, ok, o que isso atingiu? Há todas essas opções para coisas que podem bater. Neste caso, estamos à procura de um actor para ser atingido por esta linha invisível. E o ator que queremos ver se estamos batendo é nossa cara de captador de armas. E se a nossa base de recolha de armas for atingida e deixa-me
voltar a isso para que possas ver se a nossa base foi atingida. Queremos executar isto interagiu com a arma. Interagiu com a arma. E, em seguida, se você se lembrar, interagiu com arma, corre coleta de arma, que corre arma de geração, que então equipa uma arma. E lá vai você. Agora és um génio da codificação. Parabéns. Agora, se fôssemos entrar e brincar e caminhar até qualquer arma e interagir com ela. Você vai notar que temos esse efeito sonoro. Desaparece e tudo isso. Mas nós realmente não conseguimos vê-lo em nossas mãos, embora esteja em nossas mãos, os soquetes de armas estão um pouco ferrados, então ele está realmente apontando para baixo e nós não podemos realmente vê-lo, mas nós fazemos tê-lo equipado neste momento. Então nós podemos fazer um pouco de uma coisa de depuração para ter
certeza de que isso funciona e vamos fazer isso agora. Então, em qualquer lugar em nosso gráfico de eventos, isso vai ser temporário. Basta acertar sete fora de pressionado. Vamos fazer uma cadeia de impressão. E então vamos pegar a arma atual, arrastá-la para fora e conectá-la a isso. Então agora sempre que atingimos sete, ele vai sair para a tela através de texto que nossas armas atuais. Então, agora, se acontecermos em jogo, e eu interagir com o rifle de assalto e acertar sete. Temos a arma de rifle automática como arma atual. Agora a pistola e o abatido o atirador. E se eu tivesse sete deveria ser o atirador. Deve ser uma granada. Ali, o foguete. Agora, vamos tentar alternar entre armas. Então eles acertaram um. Essa foi a pistola, acho Rizzi, triste que pegamos. Então acerte um e agora sete. Então, o rifle automático, a segunda arma que escolhemos foi as Epístolas dele também. E agora sete, desde a pistola, por isso está a mudar entre as armas. Está a fazer tudo o que queremos fazer. Está a funcionar perfeitamente. Agora tudo o que temos que fazer é nos dar uma maneira de ver o que realmente aconteceu na tela. É o que vamos fazer no próximo vídeo e espero vê-lo lá.
12. Fazendo nossas próprias próprias animações de arma: Olá a todos, Bem-vindos de volta a outro vídeo. No último episódio, criamos nossos captadores de armas e toda a nossa funcionalidade de troca de armas parece funcionar. Neste vídeo, vamos estar de volta ao Blueprint
de Animação para que possamos realmente ver o que aconteceu. Hm, em vez de apenas computacionalmente acontecendo em segundo plano. Então vamos em frente e fazer isso. Agora, a primeira coisa que queremos fazer é ir para o esqueleto de armas do jogador localizado em nossa pasta de personagens. E como eu disse antes, temos esta chave de arma certa. Fora deste socket, queremos clicar com o botão direito do mouse e queremos adicionar um socket. Ok, nós acertamos F2 aqui. Podemos dar a isto um nome específico. Neste caso, vamos chamar esta chave de pistola. Vamos clicar com o botão direito novamente em uma tomada e vamos adicionar uma para cada arma. Então auto soquetes de rifle, assim por diante e assim por diante, e adicionar um soquetes, soquetes de espingarda. E então eu confio em você, eu acredito que você pode fazer os três finalistas para eu estar de volta em um segundo. Ok, agora que temos todos os nossos encaixes no lugar, eu estou em primeiro lugar em um mundo perfeito, nós teríamos um animador que faria animações que segurariam perfeitamente cada uma de nossas armas. E então poderíamos encaixar essas animações. Não temos esse luxo. Este pacote só vem com, vem com dois. Ele só tem um para um lançador, mas o lançador não é o lançador correto e o rifle não é o rifle correto. Então o que temos que fazer, temos que fazer isso, o tipo de maneira alternativa de traduzir ossos ao redor e criar nossos próprios soquetes. Então é por isso que estamos fazendo isso. Se você adicionar um monte de animações, você não terá que fazer isso apenas para o registro. Então, o que queremos fazer, se você se lembra, se em nosso jogador de bp, em nossa arma de geração, nós anexamos nossa arma aos braços dos jogadores baseado no nome de um determinado soquete. E, por padrão, essa é a arma certa, que é esta. Bem, nós vamos mudar isso para que ele realmente se encaixe na mão corretamente. Então o que queremos fazer é ir para as nossas armas. E em cada arma, queremos mudar esse nome para o que criamos. Então a tomada automática é o que queremos. Lançador de granadas, certifique-se de que está escrito corretamente caso contrário. A forma de jogo para o trabalho. Soquetes de pistola. Sim. Combiná-los com estes e soletrá-los corretamente. Como eu disse. Ao contrário de mim, que é horrível em soletrar ,
aparentemente, estão quase terminando. Só mais uma. Tudo bem, e então a base apenas manter o mesmo que o padrão. Um. A próxima coisa que vamos fazer é mudar esses valores para que ele realmente se encaixe corretamente. Algo que possamos fazer. Dizia que posso mostrar-te, o que é fixe. Então, sob a configuração de cena de visualização, controlador de visualização, Vamos para animação específica dos EUA e queremos usar um rifle ocioso. Então, oh Deus, isso foi muito rápido. Você provavelmente queria ser como dois ou um aqui. Então temos a nossa tomada de pistil bem ali. Debaixo do nosso soquete de pistil, se você clicar com o botão direito do mouse, você pode adicionar um ativo de pré-visualização e nós podemos realmente adicionar nosso pistilo ali mesmo. E então você vê, neste momento, é por isso
que nós não podíamos ver nossa arma quando nós interagiríamos com ela no último vídeo, como eu disse, ela estava apontada para baixo. Por isso, precisamos de fazer algumas edições a este ponto claramente. Então vá para o nosso painel de detalhes. Se você não vir o painel de detalhes, basta ir para os detalhes da janela e ele aparecerá. E verá que aqui está o nosso nome. O nome dos ossos é a arma certa. Queremos alterar as configurações. Então eu já fiz tudo isso por você porque eu sou uma pessoa tão legal. Isso deve se alinhar relativamente bem, mas você pode fazê-lo à mão, como movê-lo ao redor e tudo isso. Mas os locais que eu tenho são 0,71 negativos. Para o x, o y é 0,6, z é 9,3. A rotação é negativa 90. O y é 0, z é 0. E isso vai ficar muito bonito. Agora, o que vamos fazer no Animation Blueprint é fazer com que este braço desapareça e vamos mover realmente os dedos em um bom local. Mas nós talvez, para outras armas, nós vamos estar alterando tipo de onde este outro ombro está e tal. Se você quiser, você pode clicar com o botão direito aqui e remover todos os ativos anexados e agora a pistola desaparecerá. Mas você pode ver agora como a pistola se encaixa em um local diferente do que a arma certa. Então vamos para a espingarda automática e vamos fazer isso agora. Desculpe, só estou checando qual era o soquete. No outro projeto. A localização relativa é negativa 1,5, o y é 1,5, o z é 7,6 e a rotação é negativa 90. Então, se você quiser ver o que isso parece em ativos de PU. Então fuzil. Então lá vai você. Agora ele realmente disse a eles que uma coisa maluca. Vamos fazer a próxima espingarda. Pré-visualizar ativos. Só estou fazendo isso por diversão hoje em dia. Eu acho que é legal. Então veja como isso parece realmente estúpido. Você realmente vê um movimento por aí. Se eu pré-visualizar ácido lá, é meio legal. A localização relativa é negativa 1,17. O y vai ser 2.06, alguns números muito específicos aqui,
e depois 10.2 e, em seguida, 90 negativos. E lá vai você. Há isso e ver os dedos cortando por aqui. Então vamos corrigir isso na imagem, um plano e a mão não está lá em cima o suficiente. Mas nós só queremos o soquete em que estamos focando está nesta mão, o polegar e esses dedos? Parece que está no poema dele? É com isso que estamos mais preocupados aqui, porque essa é a raiz, esse é o ponto de fixação que estamos definindo através desses projetos. rifle de sniper é o próximo. Deixe-me ir. Agora, para esta espingarda de sniper, o que ganhamos? A espingarda de atirador é um 0,53 negativo. O y é 0. Há 0,87 e o z é 12,9. E, em seguida, a rotação como sempre vai ser 90 negativo. E isso parece muito bom aí. Quanto a esta mão, lembre-se que estamos apenas focando esses dedos. Lançador de granadas, recurso de visualização de aplicativos, granada. Saiba que há um lançador de ajuda. Ei, Kanzi, clique. X é negativo 0,42, y é 1,46, z é 10, e então negativo 90. Então lá vai você. É um belo lançador de granadas de login lá. Finalmente, temos nossos foguetes. E então, para o foguete, temos x de negativo 0,72, y de negativo 2,36, z de 13, e então negativo 90. Então se você quiser, você pode mexer com ele. Estes números funcionam. Eu fiz isso à mão e agora estou apenas dizendo quais foram os números, mas isso deve funcionar e então você pode simplesmente remover esses ativos e sair do nosso esqueleto. Agora, se você entrar em nosso personagem e entrar
no Plano de Animação do Player no Gráfico de Eventos, vamos querer fazer algo fora de nosso outro nó de seqüência. Finalmente, eu sei. Então vamos fazer isso agora. Da-da, da-da, da-da, da-da. Então, se você se lembra, vamos primeiro traçar um ramo. Se você se lembra, criamos uma referência ao nosso jogador e temos uma carga para fora. E então nós queremos obter essa variável aqui. Então vamos verificar se é igual a algo. Se isso tiver uma arma, conecte isso aí. Só estou tentando me certificar que isso não é super ridículo. Oh Deus. Provavelmente posso reescrever isso um pouco. Lá vamos nós e ficamos mal. Ok, então só queremos animações para jogar. Se tivermos uma arma, não
queremos que nossas mãos estejam viradas para fora assim e não temos uma arma. Então, se tivermos uma arma, vamos em frente e criar uma nova variável. E chamaremos essa arma atual. E nós vamos fazer isso do tipo carregar para fora. Tudo bem. Vamos definir isso para ser algo. Então, isso é igual a. A arma atual neste projeto é igual a carregar para fora neste projeto. Mas queremos que esses dois projetos sejam capazes de falar um com o outro e fazer que eles façam uma arma atual
neste projeto igual à mesma coisa que carregar neste. Então vamos para o jogador. Vamos tirar nossa carga. E então vamos também, oh, na verdade, eu sinto muito. Eu fiz isso de trás para frente. Em vez de fazê-lo carregar para fora, torná-lo um tipo de arma. Peço desculpas por isso. Sim. Alterar tipo de variável. Vai ser como se estivesse tudo bem. Então temos um jogador e vamos pegar a arma atual. Então nós vamos pegar o tipo atual de armas e então nós vamos pegar o tipo de arma. Pegue o tipo de arma e então defina isso. Então, vamos destacar isso e dizer links. Arma atual na base de armas com Anime Blueprint. Então o que isso está fazendo aqui, e você verá por que estamos fazendo isso em um segundo. Estamos pegando essa variável e nossa arma baseou o tipo de arma. E se você se lembra, em todas as crianças, nós definimos isso para ser algo. E essencialmente o que estamos fazendo é dizer seja qual for a arma atual, seja qual for o tipo de arma atual. Então pistola, rifle de assalto, queremos definir que seja igual à variável encontrada dentro deste projeto de animação. Ok? Agora, se voltarmos ao gráfico de animação, vamos desvincular esse movimento do jogador porque queremos fazer algumas coisas malucas. Então vamos arrastá-lo até aqui e vamos dizer dinheiro. Vamos guardar esta pose e chamar-lhe-emos o mesmo nome, movimento dos jogadores. O que o cache poses faz essencialmente é que leva todos esses dados e, em seguida, coloca-os em um novo nome. Então, se você notar como estes apenas ir em uma direção, aqui ou aqui, eles não são como nós que têm saídas e entradas em ambos os lados. Então agora o que eu posso fazer é chamar os fluxos de caixa dos EUA, o movimento dos jogadores, e eu posso tipo de continuar na filial para fazer isso, salvar isso como uma pose de dinheiro e depois ligar isso em outra coisa. Então é isso que vamos fazer. Então, vamos destacar sobre isso e dizer máquina de estado na máquina de estado controle movimento jogadores. Então este é o nosso primeiro passo, por assim dizer. Mas queremos fazer mudanças nessas animações com base em armas diferentes. Então, reconhecidamente, isto vai ser um pouco confuso. Mas se segurarmos nossas armas, como eu disse, essas animações não se alinham perfeitamente. Então vamos precisar fazer algumas modificações em alguns de nossos ossos em soquetes em nosso esqueleto. Teremos que mover isso para fazer parecer que nossos caras estão segurando as armas. Porque o, há todos os tamanhos diferentes e nós não temos nossas próprias animações. Então vamos pegar esse movimento de jogador de pose de dinheiro. E vamos clicar com o botão direito do mouse em algum espaço aberto e dizer
Transformar, Transformar, modificar bone aqui mesmo. E está ligado estes. Você vai ter uma espécie de nó de conversão como este. Ok? Este primeiro vai ser para a pistola. Quero pegar dois desses e conectá-los um ao outro. E então eu quero arrastar para fora daqui e eu quero armazenar em cache. Eu vou componente para o local, ok, jogo claro. E agora podemos armazenar em cache. E então vamos guardar isso como pose de pistola. Ok. Para o osso para modificar, Queremos obter o osso do ombro esquerdo ser ombro esquerdo. E queremos traduzir isto. Então vamos esta pequena caneta expõe e vamos desmarcar isso. Desmarque que só queremos fazer tradução. Não estamos girando ou mudando a escala de nada. Em vez de ignorar, Vamos adicionar a existente. E queremos fazer x negativo dois, y negativo 34, e z negativo dez. Como isso. Então, a outra coisa que queremos fazer é também apertar com o ombro direito. Porque se você se lembra, o ombro direito está um pouco estragado também. Como você vai ver, nós queremos girar isso. Então vamos não expor a tradução e não expor a escala. Não queremos usá-los. Nós só queremos a rotação, a rotação que vamos adicionar à existente. E então vamos definir isso para ser negativo 10. E o x como esse realça toda essa coisa. E vamos dizer traduzindo. Animação ou pistola Coase. Estamos com baixo orçamento. Não temos um monte de animações extravagantes. Poderíamos apenas ligar. Por todas as nossas armas. Temos que traduzir para os ossos à mão para
fazê-los parecer que fazem alguma coisa. Então nós poderíamos realmente copiar e colar isso. E traduzimos pistola para rifle automático. Porque ainda não temos animações. Ok? Em vez de pose de pistola, vamos fazer uma pose de rifle automático. Ok. Capitalizar o quê? Está realmente fazendo isso comigo. Ok. Graças a Deus. Tudo bem. Temos um par de diferentes. Temos o ombro esquerdo que queremos ser negativos 20 e z.
e isso é a única coisa que queremos traduzir aqui quando se trata da nossa espingarda automática. Apenas um pouco de movimento do ombro lá para movê-lo para baixo e para cima um pouco. Copie e cole novamente. E faremos isso pela nossa arma de tiro. Na verdade, porque precisamos deles. Então vamos copiar este, em vez disso, a pistola. E vamos fazer essa espingarda. E eu vou parar de fazer piadas. Bem aqui. Para nome cache deve compor. Ombro esquerdo para a espingarda vai ser negativo dois, y de 0 e z de três. E o outro osso que queremos é começar a mexer com o índice. Então queremos o índice da mão direita um. Então, como se você notasse antes, como o dedo indicador sobrepõe um pouco o gatilho, isso é o que estamos consertando aqui. Então nós queremos pegar a tradução ou desculpe, não, a rotação. Nós só queremos fazer este z de 20 e depois estes outros. Então, mil e 20. A mesma coisa para a espingarda franco-atirador. O ombro esquerdo da espingarda vai ser negativo. E, em seguida, dois negativos no y. e depois sete para o ombro esquerdo. E então isso vai ficar o mesmo porque os dedos estão tão lixados da mesma maneira. Oh, eu tenho que mudar isso para uma pose de rifle de atirador assim. Em homem, pois agora estamos no nosso lança-granadas. Pose do lançador de granadas. Para o lançador de granadas, queremos mil e, quero dizer, a única coisa boa é que o mesmo tipo de soquetes, um ombro esquerdo, e o índice dos que temos que mudar. Eles não são realmente mudar como muitas dessas outras coisas. Mas sim, é muito tedioso, no entanto. E por último, mas não menos importante, lançador de
foguetes, foguetes, postura de lança-foguetes E então para o lançador de foguetes, a
tradução será negativa 0,5 e o x, y é 0, e então z é 5. E então isso é tudo. Então temos todas essas poses misturadas aqui. Você pode pausar se você ficar um pouco perdido, você precisa ver os números novamente. E então o que vamos fazer é uma última coisa antes de começarmos tudo a funcionar. Então, queremos pegar nossa arma atual. E queremos misturar poses. Esperança que o outro. Oh Deus, mistura. Mesclar poses por esta enumeração. Onde é que está? Quando poses por tipo de arma? Sim. Ok. Isto está correcto. Ok. Queremos misturar poses por tipo de arma e, em seguida, queremos adicionar pinos para todos esses elementos aqui, que são todas as nossas armas aqui. Boom. E então, o que é muito legal. Podemos apenas agarrar. Então, para a nossa pose padrão, vamos usar o movimento do jogador. Para a nossa pistola, queremos usar a mangueira da pistola, só isto, e depois a pose da espingarda automática, e depois o tubarão compor. E, em seguida, o rifle de atirador colocado em cache. Em seguida, a pose do lançador de granadas,
depois a pose do lançador de foguetes. Ok? Então, se fizermos
isso, ainda não funcionará porque não estamos produzindo nada. Então podemos fazer é ir em frente e apenas descontar isso de novo e chamar essa pose de arma. E agora vamos pegar a pose das armas. Meu Deus, jogo. Trabalhe comigo e às vezes odeia usar poses de dinheiro. Às vezes, sim, eles realmente procuram por aquele idiota. Então agora você pode ver que está atualizando e estamos em
pose de pistola porque eu acho que deve ser apenas pistola por padrão. Um valor padrão dessa enumeração é pistola. Então você pode ver que ele está realmente fluindo através, ele está correndo por aqui. Onde vamos para a Base de Armas? Vê esta magia. Se eu guardasse para o rifle automático. Vamos lá. Ok. Ele não quer atualizar. Isso é constrangedor. Bem, em espírito, funcionou. Oh, espere. Ali. Então você pode ver como as mãos dele estão realmente se movendo. Vê o dedo, como isso se moveu um pouco mais que a granada. Você tem a pose da pistola. Bem ali. Estamos traduzindo esses ossos. Levando a espingarda automática, a arma de tiro , o
atirador, a granada, a atenção, o lança-foguetes, e tudo isso. E assim que o valor da arma atual vai ser
ligado a qualquer arma que tenhamos equipado no jogo. E então o que está acontecendo esse gráfico Anim é que estamos controlando nossa execução ociosa ou armazenando isso aqui. E nós estamos pegando esses dados e estamos transformando alguns dos locais disso com base em qualquer arma que tenhamos definido por esta enumeração e que está sendo emitida para a tela. Então, se tivéssemos realmente animações, nós apenas pegávamos como fuzil e, em seguida, apenas arrastávamos isso para aqui. Mas tornando todo esse passo desnecessário. Mas como eu disse, não temos animações. Então é assim que temos de o fazer. Agora uma coisa que eu esqueci de mencionar que é muito importante é que dentro do nosso jogador BP, um, quando estamos anexando os atores dois componentes, em vez do padrão que é manter corpos simulados e soldar, queremos ter certeza de que estes estão todos definidos para encaixar no alvo e queremos desmarcar, bem os corpos simulados. Então vamos em frente e fazer isso. Isso é apenas uma pequena configuração que vai causar um pouco de um problema
dentro do nosso script e essencialmente fazer com que ele não funcione, o que não é bom. Nenhuma mistura fará isso. E então, se formos aqui e
virarmos, temos nosso pistilo para rifle, o que eu acho que há um problema com essa animação. A espingarda parece boa. espingarda de atirador parece boa. Em um monte de realmente bom. E o Racket parece bom. Podemos alternar entre estes agora. Veja se a malha atual está desaparecendo, a nova está aparecendo e a animação está funcionando corretamente. Veja as mãos se movendo para onde as armas não estão. Você realmente veria isso muito bem, especialmente assim para algo assim. Então, tudo isso está funcionando bem e bem. Vamos em frente e consertar o rifle de assalto, e então terminamos com esse vídeo. Então, como um pequeno petisco, apenas como uma pequena dica legal, se você quiser realmente ver o que está errado aqui, você pode apertar o botão ponto-e-vírgula no seu computador. À direita de L, você pode inserir o que é conhecido como a câmera de depuração e podemos nos separar do nosso player. Podemos ver que temos um problema com o ombro esquerdo. Então nosso braço direito está no local correto, mas nosso braço esquerdo está muito atrás. E apenas, apenas, apenas não fazer isso. Ótima. Então tenho que consertar isso. Desajeitadamente, descobri que talvez você nem tenha tido esse problema porque se eu entrar na minha arma de rifle, eu tenho que ser uma pistola. Então está fazendo a animação da pistola. Se você executou uma pré-visualização desses ativos, você sempre pode alternar isso aqui. E então você pode ver como se eu fosse fazer algo louco como 40, você pode ver isso acontecer em tempo real para a mão deles subir assim. Ela é meio legal. Como isso. Eu compilar ou voltar para o seu valor padrão e, em seguida, ele será feito. Então, se eu acertar no jogo, isso pode ter sido apenas um problema meu. Lá vai você. Agora o nosso rifle automático é o único que está sendo mantido, e isso também está no slot um, para que possamos pegar estes e qualquer ordem que quisermos. Então o slot um era a pistola triste, espingarda, granada, um desses hiper. Lá vamos nós. Portanto, há uma funcionalidade que podemos realmente fazer qualquer coisa, mas tudo funciona. Estamos segurando nossas armas e podemos pegá-las e está tudo bonito e bom. Então estamos fazendo um grande progresso aqui. Espero que você esteja gostando da aula até agora e espero vê-lo na próxima.
13. Comutação entre armas: Olá a todos e bem-vindos de volta a outro vídeo. No último episódio, adicionamos algumas animações para que possamos nos
ver visualmente alternados entre nossos diferentes esquemas de armas. Entre os vídeos, eu fiz algumas coisas muito pequenas em nossa base de coleta de armas, eu fiz a altura da nossa arma. Mattea tinha 110 anos, animou 75. Isto é apenas uma preferência pessoal. Para mim. Eu sinto que eles estão em uma altura melhor agora. E, em seguida, no nosso jogador Anime Blueprint, Eu adicionei esta seção que diz que traduz ossos para segurar uma arma diferente apenas que as pessoas possam ver o que esta parte faz. Ok, o que vamos fazer neste vídeo vai, vamos nos afastar do mundo da codificação
pesada e traduzir todos esses ossos e fazer essas coisas loucas. E nós vamos adicionar um pouco de talento ao nosso projeto porque atualmente se você apertar o botão, ele simplesmente meio estranho automaticamente transições instantâneas entre as armas que
queremos realmente animar algo em joga fora. Então vamos em frente e fazer isso agora. Então, se você está em nosso jogador Anime Blueprint, Isso é incrível. Vá até a máquina do estado do movimento do jogador e abra isso. E nós vamos arrastar para fora e nós vamos adicionar um estado, e nós vamos chamar isso de arma de troca. E eu quero arrastar uma transição para e para trás. Então queremos ser capazes de ir do nosso ocioso para a nossa arma de troca e, em seguida, da
nossa animação de troca de armas de volta para o nosso ídolo andando um. Para configurar isso, precisamos fazer algumas coisas. Então, em primeiro lugar, se você se lembrar, se eu ir para apenas para basicamente comprar gráfico é fechar. Se você for a este evento de arma de equipar que é aleatório, primeiro
pegamos uma arma e quando alternamos entre elas cada vez, você saberá que dentro de lá temos essa variável que diz que está trocando de arma. Quando este evento é executado ou executado, Inglês é difícil, esta variável se torna verdadeiro e, em seguida, após 0,33 segundos, ele vai se tornar falso. E dissemos que dá tempo para uma animação de troca de arma ocorrer. Então não está indo instantaneamente de verdadeiro para falso. Permite tempo para que esta inovação ocorra. Então é isso que vamos fazer agora. Então, primeiro, vamos ao nosso gráfico de eventos ou um blueprint. E vamos criar uma nova variável e chamar isso de troca de arma. E vou fazer disto um booleano. E tudo o que queremos fazer é definir isto para ser igual à mesma variável encontrada dentro do nosso jogador. Get está trocando de arma. Ligue isso a isso. Então agora temos um booleano que está em nosso Anime Blueprint que é definido para igual em todos os momentos ao valor do encontrado em nosso player. Então vamos fazer isso. E diz, diga muito pouco para trocar de arma enriquecida. Tão simples, certo? Isto até agora. E nós vamos adicionar isso fora do ramo de outras, outras coisas. Você pode, se você compilar como eu, você provavelmente vai ter um par de pequenos problemas aqui. Isso é só porque em nosso gráfico enum, nós realmente não temos nenhuma animação aqui. Então vamos ter que ir em frente e adicionar 11 que queremos adicionar está em nosso jogo de tiro. Vamos para animações de jogo Shooter, animações
FTP, e queremos equipar rifle. Então o rifle equipado parece com isso e temos um som quebrado aqui. Então o que queremos é chamado, ele é chamado de brincadeira, eu acredito, SR, SR, clipe AR de fila de som, e ele está quebrado. Então vamos equipá-lo de qualquer maneira. Multiplicador de volume, podemos ficar em um por agora e disse que esta lupa para realmente encontrar este. E vamos em frente e corrigi-lo. Então procurar um clipe, Clip 1, e então equipado para escrever n é igual a 3. Então agora dizemos que colocamos em uma fila. E agora funciona. E eu posso ouvi-lo assim. Bastante direto. Este agora funciona. Então vamos voltar ao nosso Anime Blueprint, movimento do jogador gráfico de
animação, abrir a arma de troca. Tem o nosso navegador de ativos. E temos uma espingarda equipada aqui. Se você não tem rifle equipado, estão prontos, só provavelmente vai dizer que não está configurado para este esqueleto hit Sim,
e, em seguida, selecione esqueleto jogador e, em seguida, ele vai
aparecer aqui porque o esqueleto jogador é o esqueleto bem aqui que criamos para ser anexado a este, nosso personagem e nosso projeto de animação do personagem. Agora temos que fazer é eu preciso criar alguns estados, quero dizer, até o jogo. Ok, quando você quer mudar para esta animação? E o que você quer mudar de volta para este aqui? É muito, muito simples. Nós só queremos dizer, bem, estamos trocando uma arma? Se estamos trocando uma arma, nós queremos ir de Idle Run 2 troca de arma. E se não
trocarmos uma arma, queremos voltar. E eu vou deixar deve compilar e salvar. Então, agora, se formos até aqui e
pegarmos uma arma, devemos vê-la animar e inanimar novamente e anatomizá-la novamente. E é animada. Saber isso. E podemos trocar agora. Novamente, o desperdício completo de Santa Fé, é meio estranho. Mas só às vezes é branco. Isso é muito estranho e será algo ao redor com esta animação. Vamos ver o que a promessa, ok, Eu acho que o problema foi persistente porque eu tinha o arquivo de animação aberto porque agora eu não estou recebendo esse erro. Está funcionando muito bem. Então, quem tirou a arma do quadro? Vai mudar tão rápido, que nem dá para perceber que está a falhar. Além disso, outra coisa que podemos verificar é que eu tenho atualmente armas slot 1 equipado, que é o PESTLE atualmente se eu estou batendo um, ele não está fazendo nada. Se você se lembra, nós adicionamos este script aqui para garantir isso. Então, se nossa arma atual é a mesma coisa que o slot de arma que temos equipar. Não vamos executar nada. Então não podemos equipar, refamiliarizar a arma que já temos. Então um não funciona e dois não funciona, não trabalha para o seu trabalho 56. E já que temos esses nós são válidos. Encontre-os, meu Deus. Meu Deus, é fácil se perder. Então ele diz que temos estes é válido sabe se eu fosse para me
livrar desses nós é válidos aqui. E eu estou fazendo isso e então eu bati 2, 3, 4, 5 ou 6. Vai ficar confuso. Essa sensação de que nós temos esses. Ele só vai viajar até o próximo. Não vai ficar confuso. E tudo funciona perfeitamente. Então isso é tudo bem e bom. Nós vamos apenas continuar, adicionar algumas funcionalidades a essas armas e fazê-las parecer, som e sentir realmente incrível. Então vamos fazer isso no próximo vídeo e te vejo lá.
14. Crosshairs dinâmico: Todos e bem-vindos de volta a outro vídeo no Unreal Engine 4. É um novo dia, pelo menos é para mim. Então vamos começar este dia de avião. Alguma música épica de tiro em primeira pessoa que realmente definiu o tom, eu acredito. Então. O que vamos fazer neste vídeo e no próximo conjunto de vídeos é que vamos estar usando a interface do usuário, fazendo alguns widgets, alguns UMG, o capô, como você quiser chamá-lo. Então vamos começar isso criando uma nova pasta em nosso jogo FPS e chamar essa interface de usuário. Sinta-se livre para chamá-lo UMG em widgets de gráficos de movimento real, o que você quiser chamá-lo, eu vou chamá-lo de UI. Dentro daqui, vamos criar dois widgets. Se você não está familiarizado com quais widgets estão lá, como aviões 2D, onde você pode colocar seu HUD e outros ativos 2D. Então temos HUD e depois cruzamos aqui. Este vídeo, nós vamos fazer nossa cruz dinâmica que vai estar se movendo dependendo de espalhar-se e se movendo em título, dependendo de quão rápido nossos personagens se movem. Antes de abrirmos nossa cruz aqui, o que queremos fazer é criar duas novas variáveis, uma dentro do nosso personagem. E então vamos querer criar um dentro da nossa arma. Então, dentro de nosso personagem, vamos criar um booleano e chamá-lo de mirar. Isso vai ser usado em vários scripts dentro do personagem, onde vamos disparar diferentes eventos dependendo se estamos mirando,
apontando para baixo site ou não. A razão pela qual estamos fazendo isso agora é porque ele tem alguma funcionalidade dentro da nossa cruz dela widget. O outro plano queremos abrir a base de armas dele e vamos criar uma nova variável e a faculdade e as balas se espalham. Vou fazer isso, eu digitei carros alegóricos. Esta variável vai configurá-lo para o valor padrão de 350. O que essa variável vai fazer é estar no controle de um cálculo que dita o quanto nossas balas estão se espalhando quando estamos atirando no quadril porque não queremos ser totalmente precisos. E assim este número vai correlacionar-se diretamente com o quão distantes são os pêlos cruzados por padrão. Então vamos abrir aqui em frente. E você verá o nosso tamanho de tela padrão 16 por 9 na tela de preenchimento aqui vamos fazer isso personalizado e é automaticamente, ou por padrão vai configurá-lo para ser um 100 por um 100. E por mim tudo bem. Vou renomear nosso painel de tela selecionando-o e pressionando F2 e chamar essa tela de cruz aqui. E eu vou procurar uma caixa de tamanho, jogar isso na tela. E então eu vou arrastar uma imagem e colocar isso na caixa de tamanho. Então, você deve ter uma hierarquia que se pareça com isso, onde a imagem é um filho para a caixa de tamanho e as caixas de tamanho, filho para o painel de tela. A caixa de tamanho, nós vamos nomear essa cruz superior aqui na imagem vai apenas nomear esta imagem de preenchimento superior. Agora, por padrão, as imagens serão definidas para variáveis. Você pode pensar, você pode desmarcar isso. Eu não acho que vou usá-lo, mas nós queremos que nossa cruz aqui seja uma variável. Com a nossa mira superior selecionada. Queremos ancorar isto no topo. Quero ter certeza de que nossas posições estão às 030. Os tamanhos estão bem. O x, vamos fazer 0,5 no alinhamento. Vamos nos certificar de que clicamos em Tamanho para o conteúdo, que vai dimensionar esta imagem de preenchimento dois, esses números, e vamos ter uma largura e uma altura sobrescrever. E vamos fazer com que 1.5 e 20. Agora temos a nossa pequena imagem de Crosshair bem ali. Vamos em frente e aperte Controle W para copiar colar isso são duplicados e vamos fazer este chamado mira inferior. E baixo hit Caps Lock, imagem de preenchimento
inferior e o cabelo cruz inferior. Vamos em frente e definir isso para ser ancorado no fundo. E estamos a fazer esta pequena flor aqui em baixo. Agora, vamos redefinir nossas posições, ter
certeza de que estão todas em 0. E então eu acredito que o porquê disso será um e nós vamos manter o 0,5 alinhamento para o fundo. Vamos em frente e virar a esquerda. Agora, temos mira esquerda e imagem do Phil. Para a esquerda. Vou ancorá-lo à esquerda. Vou redefinir nossas posições para 00. E nós vamos fazer é apenas inverter a largura e a altura. Assim, a largura será de 20 e a altura será de 1,5. E eu preciso mudar isso um pouco mais. Então vamos fazer o alinhamento 0. Sim. E provavelmente 0,5. Isso parece bom. Sim, cruzou a esquerda o alinhamento 0 e o 0.5 no y. último, mas não menos importante, temos o direito. Então vamos fazer o certo, mira e certo. Imagem do Phil. Vamos ancorar isto no lado direito. Vamos anotar o tamanho. Sua posição de 0. O alinhamento será x de 1 e y de 0,5. E lá vamos nós. Agora nós cruzamos os cabelos assim. E como já temos esse ponto branco no centro da tela, não
precisamos realmente colocar um ponto branco no centro. Para o restante do vídeo. Nós vamos estar no gráfico de eventos e nós vamos realmente fazer essas mestiças se moverem. E a melhor maneira de fazer isso é criar um par de funções que provavelmente serão bem feias. Então, sempre que o código se torna feio, você apenas coloca esse menino mau em uma função. Então é isso que vamos fazer. Criar uma nova função e nomear este movimento cruz hairs ou algo assim. Para esta função, queremos dar a isso uma entrada de um flutuador e vamos
chamar isso de alvos porque é um valor alvo que estamos indo para ser movendo-se em direção. E vamos promover isso para uma variável local e chamá-lo de Target local. Porque este guião vai ser muito longo. Nesta direção. Eu fui em frente e bati em Alt para quebrar este pin porque nós vamos estar fazendo algumas contas, o assunto favorito de todos. Então, em um alvo, vamos adicionar um flutuador mais um flutuador. E vamos promover isso a uma variável e vamos chamá-lo de balas espalhadas. Nós vamos ligar esta propagação de bala tem variável até nossa variável de
propagação de bala que criamos na Base de Armas. Então este plug-in, o resultado dessa matemática em nossos alvos locais. Então é apenas passar isso, adicionando-o a um valor e, em seguida, definindo isso como o novo valor. Este é o momento em que vamos atravessar por aqui. Então vamos pegar nossa mira de cima. Se você manter pressionada a tecla Control, ele irá obtê-lo automaticamente. Se não, ele vai perguntar se você quer pegá-lo ou tirá-lo daqui. Vamos definir a tradução de renderização. E então, fora da tradução, vamos clicar com o botão direito e dividir o lápis Atingido vai ficar em um valor x e y. E o que queremos fazer fora daqui é que queremos obter
a tradução ou ser transformados, desculpe. E então vamos dividir isso duas vezes adicionais. Então vamos dividir e dividir a tradução novamente. Então agora temos um x e y. Conecte isso assim. Vamos ligar o x diretamente porque não queremos mudá-lo. Mas para o y, aqui vamos
nós, vamos interpretar também. O valor de retorno deste irá para o nosso y, mas precisamos preencher estes. Então o nosso alvo vai ser o nosso alvo local. Tempo delta está indo para, nós estamos indo para obter o mundo Delta segundos, que é exatamente como o tempo de dentro do jogo, retorna o tempo delta quadro em segundos ajustado pela dilatação do tempo. dilatação do tempo é como se você
acelerar, acelerar o tempo ou cortar no tempo, isso é exatamente como o tempo que ocorre no mundo. Então interrompa a velocidade. Vamos promover isso a uma variável e chamaremos de velocidade de interrupção. E vamos fazer isso como, Oh, você pode compilar primeiro e torná-lo 30. Então, o que tudo isso está fazendo? Então, nosso cabelo cruzado superior, queremos que isso se mova para cima e para baixo, certo? Então isso está no plano Y. X é por aqui. Por que é assim? Então, mantemos os atos exatamente iguais quando estaríamos nos movendo ou algo assim. Mas queremos mudar o y que é para cima e para baixo. Interpolação ou interrupção é essencialmente um movimento de um valor para outro durante um determinado período de tempo a uma determinada velocidade. Então nós temos nosso valor atual, que é esse valor y que já está definido em. E então nós vamos ter o nosso valor alvo, que vai ser onde ele vai se mover para o valor-alvo. Lembre-se, é isso, e vai ser ajustado por qualquer valor
que a bala espalhou que colocamos em nossas armas. Ele vai se mover para lá apenas tempo delta é sempre como o tempo do mundo. Você praticamente sempre puxou esse nó para fora. E então a velocidade de interpolação é apenas configurada para você quão rápido você quer que ele se mova do ponto A para o ponto B. E então eu disse 30 está bom. E é assim que funciona. É o que isso está fazendo. Tente fazer isso. Agora parece super feio, mas é uma espécie de script funky. Então vamos comentar caixa isso e dizer top. Movimentos da mira, algo assim. Então o que queremos fazer agora é fazer isso por todas as nossas outras mira. Então vamos copiar e colar. E tudo isso vai ter pequenas variações. Então vamos fazer a parte de baixo a seguir. Vamos arrastar de baixo para cima. Vai substituí-lo. A única coisa que queremos fazer é que o fundo vai se mover na direção oposta como o topo faria. Então vamos apenas multiplicar isso por um inteiro, por outro tempo de fluxo de flutuações flutuantes. Conecte isso como o alvo, e vamos multiplicar isso por 1 negativo. Então isso vai inverter esse número para nós. Desculpe, o roteiro é meio feio. E então vamos chamar esse momento de fogo cruzado de baixo fundo. E se você já não poderia adivinhar para nossa esquerda e nossa direita, o que queremos fazer é apenas inverter o x e o y, porque agora vamos estar nos movendo no plano x em vez do plano y. Então vamos em frente e agarrar como um elevador cruz cabelo. E a esquerda será apenas o alvo local. Mas em vez de x e y, vamos quebrar estes pinos aqui. Vamos conectar o x em nossa corrente e, em seguida, retornar o x e, em seguida, apenas conecte diretamente o y. assim será o movimento do cabelo cruzado esquerdo I soletrado algo. Sim, 30. E por último, mas não menos importante, para o certo. Vamos citar esses direitos. E tudo o que queremos fazer para os direitos é fora dos alvos locais tempo de fluxo floats, multiplicá-lo por negativo 1 para inverter qualquer que seja esse outro valor. E depois bada bing, bada, boom. Agora temos toda essa configuração. Parece muito bom. Com isso feito, podemos entrar em nosso gráfico de eventos e realmente chamar essa função para a vida. Então nós vamos precisar, nós não precisamos pré-construído vai precisar Event Construct e evento tick. Então, fora de uma construção van, que é a variante widget de um vamping em jogo. Então, é como sempre que este widget é criado, isso será executado. O que queremos fazer é pegar nosso personagem de jogador. E então vamos lançar para o personagem do jogador, o jogador da BP. E então vamos definir isso para uma variável chamada jogador. Sim, essa é a nossa referência ao nosso jogador. Então agora temos o jogador como uma variável neste blueprint aqui. E então queremos criar um evento personalizado imediatamente. E vamos chamar essa atualização de mira. Então. Nós vamos querer executar este evento fora da construção do evento imediatamente. Então, na atualização do crosser o que queremos fazer, vamos pegar a referência ao nosso jogador, e então vamos tirar nossa carga. E lembre-se que eu lhe disse antes sobre enums e ser capaz de ligá-los e desativá-los e executar diferentes eventos dependendo do que ele disse também. É o que vamos fazer agora. Então vamos ligar nossa enumeração como tal. E o que quero fazer é se não tivermos uma arma. Então, ok, vamos fazer isso. Então vá cruzar sua tela. Certifique-se de que está definido como uma variável. Então pegue, pegue, pegue, e então vamos definir visibilidade e copie e cole isso. Então temos dois deles, ligá-lo ao alvo. Então, se não temos uma arma, e temos uma arma, se temos uma arma, queremos que nossa mira seja visível. Se não o fizermos, vamos pô-lo em colapso. Como isso. Aqui vamos nós. Então só queremos a nossa cruz. Há uma aparição se tivermos uma arma. Então este script de topo está feito. Vamos para o fundo e queremos fazer outras coisas. Depois que aparecermos, vamos em frente e pegar a arma atual. E então vamos espalhar a bala da arma set. Então estamos recebendo qualquer valor. Então, como se eu fosse para as nossas baías de armas, certo, nós temos bala espalhada a 350. Mas eu posso ir com o nosso rifle automático e agora eu tenho que ver a bala se espalhar e eu posso definir isso para ser algo, algum outro número e eu posso mudar isso em uma arma com base em arma. Então o que esta cruz aqui está fazendo é que está recebendo esse valor. Então agora vamos fazer algumas contas. Certo, vamos fazer uma flauta dividida por flutuador. E vamos dividir esse número por 50. E eu vou colocar uma vírgula aqui e dizer em contagem para propagação de bala. Ok, você tem que se envolver demais com a matemática e os valores. Isso é apenas coisas que eu fiz nos testes, descobri que funcionou. Então vamos multiplicar isso por um negativo. Então certifique-se de que ele está se movendo na direção correta. E então o murmúrio que a bala espalhou HUD. Vou definir esse valor como a matemática. Então a revolta se espalhou HUD está em nossa função Crosshairs movimento. Assim, negrito espalhado HUD, estamos adicionando isso a qualquer que seja o nosso alvo atual. Depois disso, o que queremos fazer é definir um temporizador por evento. Os temporizadores são ligeiramente diferentes dos cronogramas. Queremos ter certeza de que esse loop e queremos executar esse temporizador a cada 0,01 segundos, então ele está se movendo rápido ritmo. E fora do evento, vamos criar um evento personalizado. E vamos nomear este movimento por aqui. Ou também é um nome que já usamos. Vamos citar esse movimento cruzado aqui e vamos citar isso como caramba, movendo-se por aqui. Na verdade, vamos chamar de traduzir. Mira é isso que estamos fazendo. Na verdade, estamos traduzindo. Lá vamos nós. Isso faz mais sentido. Ok? Isto é o que realmente queremos movê-los. Ok. Está tudo bem para mim. Eu não movo Cross aqui. Vamos adicionar uma ramificação porque queremos ser capazes de saber se o nosso jogador está realmente se movendo. Então vamos buscar o nosso jogador. Vamos pegar nosso Componente de Movimento de Personagens. Lá vamos nós. Componentes de movimento de personagem é isso, controla todas essas coisas. Então mudamos a velocidade de caminhada antes. Podes fazer-te saltar mais alto, saltar sete vezes, fazer orçamento, um
monte de coisas diferentes. Então nós estamos pegando esse componente e há algo construído em chamado está caindo. Conecte isso no ramo porque você quer verificar se estamos caindo ou não. Se estamos caindo, vamos em frente e fazer cruz trans tarde. E o alvo que queremos é criar isso para uma variável e chamá-lo de alvo caindo. Então este será o número para o qual definimos se estivermos caindo. E vamos fazer este negativo 60. Então lembre-se em Traduzir mira, nós adicionamos esta entrada aqui. Então agora ele está pedindo um alvo de um valor flutuante. Então o que estamos fazendo aqui é que estamos dizendo, ok, se estamos caindo, comece isso como negativo 60 e então nós estamos adicionando isso ao spread negrito e, em seguida, definindo isso como este valor. E esse valor é o nosso valor alvo para mover essa mira para cruzar a tela. Então você não, como eu disse, você tem que ficar muito envolvido com a matemática aqui. Mas isso é fazer isso, fazer com que o número de uma bala se espalhe. Mover pela tela de uma forma que não pareça estúpido. Eles são ridículos. Então, se não estamos caindo, queremos puxar outro ramo e queremos ver,
ok, não estamos caindo, mas quão rápido estamos nos movendo? Então destruiu o jogador. Vamos pegar nossos jogadores ou velocidade. Vamos pegar o vetor dianteiro após o comprimento do vetor,
na verdade, o comprimento do vetor em movimento. E se isso for maior que, um, verificará se é maior do que um. Porque se for maior que um, significa
que estamos nos movendo. Então, se for maior que um, também conhecido como estamos nos movendo, então faremos nossa mudança. Nenhum está se movendo. Traduza, traduza, cruze aqui, evento. E o alvo para este vai ser sentir o comprimento do nosso vetor. E vamos multiplicar isso por um negativo. Então, o inverso disso. E então vamos fazer alguma divisão,
dividir isso por 25, dividir isso por 25, e então esse será o nosso alvo para quando estivermos nos movendo. E se não estivermos nos movendo, vamos fazer isso de novo, mira tardia trans. E o nosso alvo vai ser 0 porque não queremos que eles se movam para lado nenhum. Então isto é, se personagem de cursor está andando, personagem está parado, e este, se personagem está caindo. Então queremos que seja muito grande se estivermos pulando. Então essa é a maior. O maior valor é o menor valor porque são números negativos, certo? Ok, então há todo o nosso roteiro bem ali. Cruze a atualização dela tudo isso. Certo, a última coisa que queremos fazer aqui é peso. Estamos quites, ok, sim, estamos bem. Então ativan tick, queremos verificar isso a cada segundo. É aqui que entra a coisa da Amy. Ele pegou o jogador e vamos dizer que está mirando. Ok? Porque se estamos mirando em locais, não
queremos que nossa cruz apareça aqui, certo? Então vamos pegar a mira de novo. E vamos definir visibilidade novamente. Copiar colar. Ok. Vamos definir isso para ser recolhido e, em seguida, definir isso para ser visível. E, em seguida, a última coisa que queremos verificar é que
queremos pegar o jogador e, em seguida, obter a carga fora novamente. E então queremos mudar isso de novo. Então, se não estamos mirando e temos uma arma, então vamos definir para ser visíveis. Se estivermos, se estivermos mirando, vamos definir isso para entrar em colapso. O que é como se você não pudesse ver. A razão pela qual queremos colocar este passo adicional aqui é que se você não tem uma arma, mas você apertar o botão direito do mouse, ele vai
fazê-lo aparecer ainda, mesmo quando você não tem uma arma. Então ele vai meio que ir para o jogo fora um pouco assim. Então vamos mover isso para baixo. Caixa de vírgula remove a mira. Quando Amy no local. Não queremos ver isso com mais dúvida, citar Scott isso nesse caso. Então, se apertarmos Play, ele não faz nada porque precisamos
fazer algumas outras coisas muito, muito fáceis. Então agora vamos para o nosso HUD principal. Arraste isso para fora, e então queremos procurar nossa mira e soltá-la no painel de lona. Vai aparecer, olhar e muito estúpido. Então vamos em frente e ancorar isso no centro da tela. Defina como 0. Em 0. Vamos configurá-lo para ser tamanho dois conteúdo. Isso é realmente muito pequeno. Vou configurá-lo para ser 100 e por um 100 e não dimensioná-lo para o conteúdo que está olhando muito melhor em um alinhamento para x é 0,5 e alinhamento para y é 0,5. Então lá vamos nós, ali está ele. E finalmente, vamos para o nosso jogador, e vamos para o nosso gráfico de eventos e devemos encontrar eventos começar a jogar. E vamos criar nosso widget. Precisamos realmente criá-lo para adicionar à tela. Vamos adicionar o HUD principal. Vamos avançar e promover isso para uma variável e
chamá-lo de HUD principal para que possamos usá-lo mais tarde. E, em seguida, vamos adicionar à viewport. E então vamos dizer cria capuz principal. Isto é o que realmente está fazendo o HUD aparecer na tela. Então, agora, se aconteceu no jogo, você não vai ver nada se eu estiver tentando apontar. Bem, não temos funcionalidade direcionada, mas não está fazendo nada. Pegue uma arma. Agora nós temos nossa mira aqui e eles não estão se movendo, que é o que nós simplesmente, nós adoramos ver isso acontecer depois que passamos todo esse tempo codificando. Você não adora isso? Então vamos em frente e consertar isso. Acontece que perdi um passo extra crucial que precisamos fazer. Então, em nosso jogador, em nosso gráfico de eventos sobre este evento de arma equipar, vamos em frente e pegar a referência para o principal como fizemos
isso e agarrar nossa mira. E então o que queremos fazer é fazer a atualização da mira. Quando equipamos uma arma. Na verdade, não está funcionando em menos, nós fazemos isso. Então isso deve funcionar agora. E então a outra coisa que queremos fazer agora que são cabelo
cruzado está habilitado é que queremos ver
a atualização dela toda vez que reconhecemos uma arma e alternamos entre eles, assim como uma espécie de segurança, certificando-se de que tudo isso está realmente funcionando. Então eu vou apenas ir em frente e copiar isso, ir para pasta Mapeamentos de ação. E então eu vou ligar cada um desses nós aqui só para
ter certeza de que nós continuamos executando esse evento sempre que nós trocamos uma arma como esta, arrastamos isso para lá agora. Então, agora, se eu entrar, aperte Salvar. Outra coisa, eu também esqueci de mudar este para a cruz direita aqui. Mas se você fosse esperto, não cometeu esse erro. Então vamos até aqui. É uma arma. E agora, se saltarmos, movermos, volta. Está se movendo pela tela. Isso sempre vai ser do mesmo tamanho agora. Mas você pode ver que nossa mira está se movendo. E então, se você acha que eles estão se movendo demais ou não, você pode ajustar algumas das contas, alguns desses números dentro. Então aqui. Algumas desta matemática em algumas desta matemática manterão a negativa, mas como dividir por um número diferente, dividido por um número diferente, definir isso como um número diferente, e isso lhe dará um pouco diferente resultados. Então você pode ir em frente e brincar com isso ao seu gosto. Mas fora isso, tudo está funcionando, tudo parece bom. Então, vejo-te no próximo.
15. Criando o HUD principal: Olá a todos e bem-vindos de volta a outro vídeo. No último, criamos uma mira dinâmica. E neste vamos continuar fazendo nosso HUD principal e fazendo nossa informação de armas em certas coisas assim. Assim como no último vídeo, vamos começar fazendo algumas variáveis. Estes vão existir dentro da nossa base de armas. Vamos em frente e fazer três deles. Então, os dois primeiros vamos ser inteiros. Um deles que queremos fazer como munição atual. E do tipo inteiro. Vamos fazer outro chamado total atual. E então outro que é chamado como queremos chamá-lo? Vamos chamá-lo de tipo munição, e vamos fazer isso do tipo texto. É compilar para que possamos editá-los. Então, para munição atual, essa será
a quantidade atual de AMO que temos em nossa revista a qualquer momento. Então, para o valor padrão, vamos fazer isso algo como talvez 30. Então, para nossa munição total atual, vamos nos dar um monte de munição e dizer tipo 244 ou algo assim. E para o tipo de munição, vamos fazer algo como espaço Racket, espaço automático, suportes, algo ao longo das linhas disso. Certo, e assim como antes, se abrirmos nossa espingarda automática, por exemplo, agora temos essas variáveis. E podemos mudá-los de forma independente. Lançador de granadas, mais brilhante, você pode mudá-los e tudo isso
, como você gostaria já. Então agora vamos voltar para a nossa pasta de interface do usuário e vamos criar um novo widgets. E vamos chamar isto de informação da arma. E vamos abrir isso para este. Com o que vamos começar? Vamos em frente. É que isto é uma espécie de grande hierarquia, esta coisa. Então vamos para tela cheia e vamos para o desejado. - Já. A primeira coisa que queremos pegar é uma caixa vertical. Vamos arrastar isso para cima do nosso painel de tela e podemos substituir o painel de tela 0? Agora nós queríamos fazer, Ok, talvez eu esteja tentando me livrar do painel de tela. A. Não
podemos esperar um segundo. Certo, vamos deletar. Posso apagar o painel da tela. Lá vamos nós. Muito bem, vamos mudar o nome desta caixa principal. Queremos que tudo seja centrado em torno desta caixa, não um painel de tela aleatório. A razão é que se tivermos a caixa de tamanho e tem parâmetros diferentes aqui onde só queremos que tudo seja criado nesta caixa. A primeira coisa que queremos fazer é criar um não uma declaração do nosso, Como se chama? Barra de progresso? Será chamado de barra de resistência por nós. Está bem? Na barra de resistência, não vamos realmente fazer nada com ele ainda, mas vamos mantê-los como eles são. Estou da esquerda para a direita, está bem. Podemos alterar algumas das cores de preenchimento e opacidade. Isso parece bom por enquanto. Vamos ficar com ele, vamos ficar com isso por enquanto. Em seguida, queremos fazer uma sobreposição e vamos colocar a sobreposição na caixa principal. E vamos manter isso como uma sobreposição e ver como está debaixo dela assim. Então temos essa caixa vertical, a caixa principal, o padrão do nosso no topo, e então a sobreposição está abaixo e podemos movê-los assim e eles se movem na hierarquia, mas queremos a sobreposição abaixo. Vamos em frente e fazer um borrão de fundo. Vou colocar isso em cima da sobreposição. De modo que vive dentro da referida sobreposição. E então para o nosso fundo embaçado, vamos em frente e torná-lo um preenchimento como esse. Então está enchendo a coisa toda, a força do borrão. Vamos definir isso para ser algo como 1. Então você pode ver isso lá dentro. É meio difícil de ver agora, porque tudo é tão pequeno. Mas quero dizer, isso é uma coisa. Em seguida, queremos uma imagem e a imagem vai viver na sobreposição assim. E vamos chamar isso de fundo. Isso vai encher tudo está bem, para cor e opacidade. Vamos torná-lo preto. E então para o nosso valor, vamos fazer este 0,35, algo assim. Então, ele está criando esse tipo de imagem negra borrada aqui mesmo. Movendo-se em nosso tamanho de imagem. Se você não vê isso na aparência, basta abrir o pincel. Vamos definir isto para 250 por 150. E como a barra de resistência está tão perto, vamos selecionar minha barra de resistência. E, em seguida, no estofamento
inferior, vamos fazer algo como 10 talvez. Portanto, há um pouco separado. E nós podemos realmente ver como nós vamos apenas fazer isso como SharePoint 75 ou algo assim apenas para que possamos ver isso e nós podemos mexer com as cores e coisas diferentes como essa. Mais tarde. Movendo-se, vamos fazer uma caixa horizontal. Coloque isso na nossa sobreposição, e vamos nomear esta caixa de contagem de munições ou algo assim. Vamos fazer o preenchimento à esquerda do negativo seis. Espere não, para o top negativo 6. E então eu quero fazer isso meio centrado aqui assim. Quero dizer que 0. Agora negativo seis porque havia algumas coisas estranhas com o texto que o fez parecer melhor dessa forma. A próxima coisa que queremos fazer, porém, é que queremos fazer um texto e colocá-lo dentro da nossa caixa. E então para o nosso texto, o que queremos fazer é, oh, eu vejo. Vamos fazer o texto ter seis negativos e depois a munição contar. Esse é o que teve seis negativos. É por isso que Quem é o texto que parece um pouco estranho para o nosso valor padrão para um texto. Vamos apenas fazer 0, 0 para cor e opacidade. Eu só gosto de um pouco de como se você apenas vê esta linha aqui, apenas colocá-lo sobre bem ali. Haverá como o ponto 77 para tudo assim. É o que eu gosto para o tamanho abaixo do tamanho da fonte para 64. Acho que não precisamos de sombras ou algo assim. Então isso está parecendo muito bom. Uma coisa que queremos fazer é importar uma fonte específica. Então vamos em frente e fazer isso agora muito rápido. Então, se você ainda não fez isso, você pode ir em frente e baixar os arquivos
do projeto, os arquivos do curso onde quer que eles sejam chamados, em qualquer site que você está visualizando atualmente este curso, você deve ver três pastas dentro dos arquivos deste projeto, fontes
de áudio e ícones. O que queremos fazer é em nosso jogo FPS, Vamos criar uma nova pasta e chamar algo fontes. E vamos definir uma cor para vermelho. Vamos abrir isso, abrir fontes e você verá paresia peri passo negrito e semi negrito. Vamos arrastar e soltar os dois lá dentro. Só disse sim a todos. E vai criar quatro ativos diferentes. Uma coisa que podemos fazer para tornar isso um pouco mais prazeroso de olhar, é se você clicar em um desses, você verá que ele aparece muito pequeno. Vá em frente e faça este tamanho de fonte como 100, e ele vai torná-lo maior por padrão. E veja isso para ambos, algo assim. E apenas salve esse ativo assim. Agora, de volta para dentro da nossa arma informações sobre o texto sob fontes. Vamos fazer este semi negrito e disse agora que temos essa coisa olhando bem ali. E eu apenas renomear este texto também. Texto de munição atual. Olhe bem. Dentro da nossa caixa horizontal, queremos criar outra caixa vertical. Então vamos colocar isso em cima da horizontal. E podemos apenas manter esse nome. Isso é bom. E é aqui que fica um pouco estranho porque agora dentro dessa caixa vertical, queremos colocar uma caixa horizontal. Então temos um monte de caixas diferentes. Então vamos voltar o nosso texto e colocar isso nesta caixa horizontal. E vamos citar este texto de reserva de munição. Mais uma vez, o que queremos fazer aqui é deixar-me apenas verificar as minhas notas muito rapidamente. Oh, eu vejo. Eu vejo. Eu vejo. O que queremos definir isso como é apenas um pequeno corte como aquele. Vamos definir isto para ser da mesma cor. Esta linha com esta linha, vai ser perto o suficiente. Não precisamos ser super perfeitos aqui. Além disso, é tudo preferência pessoal para a fonte. Vamos definir para ser 20. E vamos fazer o semi arrojado mais uma vez. E isso deve ser, eu acredito que deve ser deixado alinhado. Não, vamos torná-lo alinhado e centrado. E então isso vai parecer bom. Vamos copiar e colar este texto. E então eu vou colocar um bem ao lado dele. E vamos apenas dizer reserva de munição. Outra, ambas as cores estão disponíveis, o que é chamado de reserva. Vamos ligar para isso. Barra de texto. E então isso não será um texto de reserva de munição. Vamos definir isso como zeros 0000 por padrão. E então vamos fazer isso centrado e superior. Isso está correto. Tudo isso deve estar certo. 20. - Sim. Sim, acho que parece bom. Está bem. A última coisa que precisamos fazer é criar mais um texto. E queremos que isto esteja na caixa vertical. Então agora ele vai colocá-lo por baixo assim. Ok, e então é aqui que vamos colocar nosso tipo de fogo. Então vamos centralizar este também, e alinhá-lo de fundo. Não precisamos colocar nenhum estofamento. A cor mais uma vez, que é uma espécie de off-white pequena cor cinza que eu acho que parece tudo bem, Vamos fazer semi negrito. Você sempre pode dominar essas coisas como quiser. O tamanho disto vai ser 15. O valor padrão. Vamos definir que para ser espaço colchetes, auto e todas as maiúsculas, colchete Enter. Então ele define isso assim. E estes, na verdade, não estão centrados. Interessante. Provavelmente como um pequeno cenário que eu ainda tenho que refazer. Pode ser com esta caixa vertical. Parece melhor assim. Com estes não parecem muito corretos. Provavelmente isto tem algum tipo de estofamento. Deixe-me verificar aqui rapidamente, descobrir o que está causando isso e não me alinhar como eu queria. Ok, então tudo é realmente o mesmo, mas nesta barra, fazê-lo é realmente uma barra e, em seguida, barra de espaço e, em seguida, pressione Enter e ele vai separá-lo e ele vai ser mais centrado. Agora, a outra coisa é que eu quero separar estes um pouco mais um do outro. Então, uma coisa que podemos fazer é criar algum preenchimento esquerdo de como bom para talvez seis ou algo assim. E então esses números vão ser um pouco mais separados. Agora, na transformação de renderização para nossa barra de resistência, vamos fazer esta versão 1.5. Eu vou fazer se esse é um número muito bom e então você pode encaixar em qualquer cor que você gostaria. Você pode torná-lo vermelho, você sabe, e eu vou torná-lo vermelho. Vou fazer com que seja a cor vermelha. E então um estilo para a imagem de preenchimento. Você pode obter cores
diferentes e diferentes aqui também. Você pode fazer isso vermelho e azul e isso vai realmente dar-lhe como uma tonalidade diferente. Então, sim, há um monte de coisas que você pode fazer com a barra de resistência diferente e diferentes opções como essa. Então você pode fazer esse olhar como quiser. Certo, só para recapitular, vou te mostrar tudo. Então temos uma caixa principal. E se você tiver algum tipo de coisa que pareça estranha, eu percorrerei todas as configurações. Como eu disse, muito disso é apenas preferência pessoal como você quer que ele pareça. Mas estas são todas as configurações que eu tenho atualmente. As sobreposições assim, fundo borrão assim. Então pode ficar à vontade para fazer uma pausa se quiser me copiar, ou se sentir livre para fazer sua própria coisa, porque realmente, realmente não importa. Isso é apenas fazer parecer o jeito que eu meio que tentei replicá-lo no campo de batalha um pouco pelas fontes e coisas assim. Pode fazer o que quiser. Não há resposta certa ou errada. Você pode apenas colocar dois números de texto na tela se você não quer que ele pareça chique. E os marcadores de resistência, essas são as duas únicas coisas que
realmente estamos colocando funcionalidade. O único script que existirá neste vídeo é vincular algumas dessas coisas. Então agora que passamos por tudo isso, vamos ligar algumas coisas a esses números. Nós, estas são as variáveis que criamos no início do vídeo. Então vamos em frente e fazer isso agora. Então, no gráfico de eventos, vamos em frente e obter o gráfico de eventos do personagem do jogador com nossas mesmas informações exatas da arma. Se você não estava ciente, converta para o jogador, promova para uma variável, nomeie jogador. Tipo, tal. Como temos feito muitas vezes agora. Mas nunca envelhece. Você sempre quer fazer referências ao nosso agradável bicayer para que
possamos continuar tirando dados desse jeito. Ok, a próxima coisa que vamos fazer é criar algumas ligações. Então vamos voltar para o nosso designer. O primeiro que queremos fazer é receber esta mensagem de munição atual. E, em seguida, para o nosso texto, vamos para vincular e criar uma ligação. Vai criar automaticamente uma função. E nós vamos chamar isso de obter munição atual, porque o nome que ele vem com é absolutamente atroz. Então vamos em frente e pegar nosso jogador. E depois queremos tirar essa carga. E então queremos dizer que igual, igual tem uma arma. Então só queremos que esse roteiro seja executado se tivermos uma arma novamente, porque não queremos que o jogo fique confuso. Então, se tivermos uma arma, podemos fazer o que estamos prestes a fazer. Então, fora do nosso jogador, vamos pegar nossa arma atual. Seja qual for a arma atual em nossas mãos. E vamos pegar a AML atual dessa arma, variável
que criamos no início do vídeo. E se você conectar isso e eu vou fazer um pequeno nó de conversão, e ele vai fazer exatamente isso. Então é tudo o que temos que fazer por isso. De volta ao nosso designer. Vamos em frente e clicar em Reservar textos de munição e vamos criar uma ligação para isso. Vamos mudar esse nome de aparência atroz para obter munição da Reserva. E então vai ser, na
verdade vai ser a mesma coisa. Então o que podemos fazer é obter todos esses scripts para copiá-lo e colá-lo aqui. Conecte-o, conecte-o. Simplesmente assim. Mas em vez de munição atual, queremos nos atualizar. munições totais são munições maiores. Em. Então a última coisa que queremos fazer é obter esta ligação Auto Text para criar vinculação. E nós realmente não mudamos o nome e está tudo bem, digamos ser demitido do tipo ou algo assim. E então será em grande parte a mesma coisa que queremos fazer. Sim, eu continuo alternando entre as coisas incorretas. Vamos copiar isso de novo. Cole de novo. Só queremos fazer isso se tivermos uma arma, não é? Isso e então vamos pegar o fogo e aquele tipo de fogo ou recebe o que chamamos que estou lá fora. Deve ser do tipo disparado. O vai dizer obter tipo de munição e, em seguida, isso deve apenas ligar diretamente assim. Só funcionará se tivermos a arma. E então sim, isso está tudo bem e bom. Então agora de volta ao nosso HUD principal, queremos criar isso. Vamos pegar uma arma Info deixá-la no painel de lona. Seu tamanho para o conteúdo. Vamos em frente e ancorar isso no canto inferior direito. Digamos, acho que é um lugar bonito, bastante decente. Certo? E a posição x, Vamos fazer negativo 350, posição y, negativo duzentos e cinquenta, cem e 3000 e 0. Tudo isso está bem. Acho que vai achar que está tudo bem, na verdade. Isso parece muito bom. A última coisa que queremos fazer aqui é só
queremos que isto apareça se tivermos uma arma, que é o habitual. Então vamos ter que criar uma referência ao nosso jogador mais uma vez. Então vamos em frente e fazer isso muito rápido. Vou pular em frente porque já
fizemos isso tantas vezes. Não sei, desperdiçando mais tempo. Vejo você em um segundo. Ok, agora que criamos uma referência ao nosso jogador, vamos arrastar essa referência para obter nossa carga de novo e ligá-la novamente. Isto é o que fizemos no último vídeo com o outro a mira. E então o que queremos fazer é pegar informações sobre armas e definir visibilidade. Copiar colar. Temos uma arma, é visível. Se não tivermos uma arma, ela desabou. Ligue os dois alvos assim. E isso deve ser tudo o que precisamos fazer aqui. Osso. Então o que podemos fazer agora é entrar nessas diferentes armas aqui. E eu quero que você vá em frente e tire algum tempo e coloque em quanta AML você quer a arma? Metade. E quanto e o que você quer ter total. Então mude esses números e te vejo em um segundo. Está bem. Então espero que não tenha sido muito difícil. Tudo que você tinha que fazer era abrir as armas e mudar o animal atual na ML total atual. Então agora encaixamos tudo corretamente quando entramos e
jogamos, equipamos uma arma, ela tem quaisquer números, e então mudamos para a arma diferente. E na outra arma e na outra arma, na outra arma e na outra arma. Agora mudará o que tivermos para a munição atual, a munição total atual, e então nossa explosão. Então eu só disse auto único para propagação
automática para a espingarda no resto deles basta dizer simples, esses números estão mudando. Então, se você gostaria de mover esses números ou fazer qualquer tipo de edição para o estilo visual disso. Sinta-se livre para mexer nos widgets e fazer isso, mas a funcionalidade disso ainda está lá. Essa é a principal coisa que eu queria mostrar como fazer. Então, sim, está tudo pronto. Então, obrigado por assistir e eu vou te ver no próximo vídeo.
16. Funcionalidade de impressão: Olá a todos e bem-vindos de volta a outro vídeo. Hoje vamos continuar trabalhando em nosso HUD. No último, adicionamos números de munição diferentes. E enquanto tudo isso está funcionando, uma coisa que não está funcionando é a barra de resistência. Primeiro, temos que adicionar uma funcionalidade de sprinting antes que possamos realmente vincular isso. É o que vamos fazer agora. Então, para começar, vamos abrir nosso personagem e vamos entrar em nosso gráfico de movimentos. É isso que vamos colocar isto. Então nós temos a nossa caminhada pulando agora vamos adicionar o nosso sprinting. Na verdade, antes de
fazermos qualquer coisa, precisamos adicionar isso aos nossos insumos. Então vamos para nossas configurações, Configurações do projeto e, em seguida, entradas abaixo do mecanismo. E vamos criar um novo mapeamento de ação e chamar isso de sprint. E vamos definir isso para a tecla shift esquerda. Então, agora, quando entrarmos em nosso gráfico de movimentos, podemos invocar o sprint assim. E podemos começar a fazer algumas coisas. Primeiramente, queremos retirar alguns ramos porque há certas coisas que nós, bem, não queremos ser capazes de correr se estamos fazendo algumas dessas coisas. Então vamos enredo é apontar e dizer
não é apontar porque eu só gosto de correr para o ramo verdadeiro muito. Então, se não estamos mirando, então vamos fazer outra verificação. E nós vamos dizer, bem estamos recarregando. Esta parte é opcional. Alguns jogos permitem que você recarregue enquanto você está correndo. Aqueles que estamos fazendo não vão. Então eu vou apenas colocar desativáveis opcionais, correndo bem ao recarregar. Então, se você quiser que seu jogo seja capaz de, se você quiser ser capaz de correr e recarregar ao mesmo tempo, você pode remover essa parte. Cabe a você. Alguns jogos têm um como você pode interromper o sprint ou interromper a estrada de ferro espalhando tudo o que é até você. Mas nós definitivamente não quero ser
capaz de Sprint Hall estamos mirando que seria ridículo. Vamos retirar mais um ramo aqui. E nós vamos realmente armazenar isso dentro de uma macro. Macro é diferente da função um pouco em que é, ele não tem esses fios de execução. Então você pode ter entradas e saídas, mas não precisa ter um fio de execução branco. Ele pode produzir este tipo de dados. Então nós vamos conectar isso em um, nós vamos retornar uma condição, um booleano. Então vamos criar uma macro e vamos chamar isso são, nós exaustos ponto de interrogação. Então, quando se trata do nosso jogo, temos a barra de resistência. Então, se a barra de resistência acabar, não
seremos capazes de correr até que ela recarregue para um certo valor. Então vamos criar mais algumas variáveis e vamos dizer que está exausto. interrogação. E vamos criar outra variável e chamar esse nível de energia. E vamos fazer isso do tipo flutuar. Então vamos em frente e vamos agarrar está exausto, digamos, não apenas torna mais coerente para mim, preferência pessoal. E vamos pegar nosso nível de energia. E digamos que se isso é maior ou igual a, aponte para, o que podemos fazer é que você pode puxar isso e dizer, e removê-los. E então vamos puxar o, conectar isso na saída e derrubar isso. E podemos apenas manter o valor de retorno do nome. Então o que esta macro está fazendo é verificar se ambas as condições são verdadeiras. Ambos, você pode fazer um ou outro puxando para fora ou, mas neste caso queremos que ambos sejam verdade. Então, a fim de sprint, o que isso está essencialmente dizendo é que não podemos ser esgotados, vai girar que está exausto variável quando o nível de energia é igual a 0. E a razão pela qual estou apontando para isso é porque eu quero que a barra de resistência recarregue 20% do caminho para cima antes que possamos correr novamente. Porque então o que vai acontecer é que a barra de resistência vai subir como 1% e lá vai ser capaz de correr novamente. E você só será capaz de ser capaz de correr por uns 0,5 segundos antes que ele se esgote novamente. Então eu quero dar tempo para isso reabastecer um
pouco antes de começarmos a correr de novo. Então vamos voltar ao nosso movimento e nós podemos realmente puxar para fora esta macro e fazê-lo assim. Agora, a razão pela qual criamos isso em uma macro, então tecnicamente falando, poderíamos ter feito isso assim. Significa exatamente a mesma coisa. Mas armazenando esses dados em uma macro. Por um lado, é muito mais limpo, vendo isso dessa maneira em oposição a este caminho. No número dois, agora podemos tirar isso um monte de momentos diferentes e usá-lo um monte de momentos diferentes. Enquanto isso nós teríamos que copiar colar este script longo toda vez. Então essa é provavelmente uma grande gorjeta. Eu me lembro quando eu comecei a aprender a fazer isso, eu realmente fiquei preso em como ok, como eu tenho que usar uma função aqui são tinta azul, uma Interface Blueprint ou Event Dispatcher são como todas essas coisas diferentes. E eu tenho que colocar isso em um macro. Muitas dessas coisas existem apenas por conveniência. Assim como armazenar em uma macro, como eu disse, ele economiza espaço e permite que você o use mais uma vez sem tentar encontrá-lo e copiar colando este, este pedaço longo de código. Mas conectando isso aqui e fazendo isso usando a macro faz exatamente a mesma coisa. Então, muito disso se resume a preferência pessoal. No, à medida que você tem mais experiência em scripts, você tenta fazer coisas que são mais eficientes. Tenho a certeza que até aqui, como se conseguisses fazer a mesma coisa. Estou tentando realizar várias maneiras diferentes e você pode ser capaz de encontrar uma maneira que seja tecnicamente mais eficiente do que a minha maneira. E está tudo bem. Mas esta é uma maneira que eu sei como fazê-lo e funciona. Então é isso que vamos fazer. Está bem? Então, se todas essas condições forem verdadeiras, tudo bem. Não estávamos exaustos, não
estamos recarregando e não estamos mirando, então podemos começar a correr. E mais uma vez, vamos fazer isso dentro de uma função. Não porque seja super complicado, mas porque podemos invocá-lo todas as vezes. Tudo bem, então no começo do sprint, queremos verificar uma coisa. Vamos pegar os componentes do movimento do personagem e vamos dizer que está caindo. E mais uma vez, vamos dizer não porque eu gosto assim. Eu não gosto de sair do ramo falso por padrão. Como sair da verdade porque mantém as linhas boas e retas. Então, se não estivermos caindo, , se estivermos no ar, não
quero ser capaz de correr quando estivermos no ar. Isso seria muito irrealista. Certo, então o que queremos fazer é pegar o Componente de Movimento de Personagens de novo. E vamos começar, vamos definir velocidade máxima de caminhada, este valor aqui. E vamos promover isso a uma variável e chamaremos isso de velocidade de sprint. E por padrão eu vou fazer isso cem, cem, dez cem. Então, nossa velocidade máxima de caminhada padrão é 750 em Eu estou configurando para ser 10000. E depois temos isto, ou talvez não. Ok, vamos criar uma nova variável e dizer que está correndo que nós fizemos isso já como nós não fizemos. E é um booleano. E vamos definir isso para ser verdade. Compilar e salvar, e é tudo o que temos que fazer. Por isso, mais uma vez, permitam-me reiterar isto. Eu posso fazer isso e podemos fazer com que pareça assim. Está bem? Ou posso começar a sprint. E vai ficar assim. Então nós podemos fazer isso assim toda vez ou podemos armazenar esses dados em uma função e apenas fazê-lo assim. Então não temos que pegar esse código grande e feio toda vez que temos muito espaço que economiza. E então nós não temos que copiar colar isso toda vez que podemos apenas continuar chamando a função. Então essa é uma grande gorjeta. Está bem? Não fique preso como sempre usar um evento é baterias fazendo uma função em Lego e tentar entender tudo isso. É, é por fator de conveniência. Ok, então espero que isso faça sentido. Legal. Então agora estamos correndo. O que queremos fazer agora é pegar nossa carga. Porque você quer que duas coisas diferentes aconteçam
dependendo se temos uma arma ou não. Então vamos ligar ou carregar. Porque ainda queremos ser capazes de dividir este sprint. Se não tivermos uma arma. Está bem? Se não tivermos uma arma, tiraremos uma linha do tempo e chamaremos isso de resistência. Está bem? Se tivermos uma arma, queremos parar de atirar. Porque quando foges, sabes que mais? Na verdade, vou deixar esta parte aqui por enquanto. E depois mostro-te como é sem ele. Acho que vai ser muito legal, na verdade. Então, temos essa coisa de resistência, vamos, vamos guardar isso para mais tarde. Tudo bem. Pode fazer uma nota ou algo assim. Não sei o que vamos descobrir. Ok, na barra de resistência, vamos abrir isso e fazer isso 10 segundos de duração. É capaz de executar por 10 segundos e criar uma Trilha Flutuante. E chamaremos isso de quantidade de resistência ou algo assim. Ok, vamos em frente e criar dois quadros-chave. Primeiro será no tempo 0 e um valor de um. E o segundo será em um tempo de 10 todo o caminho em um valor de 0. Então, se clicarmos nessas pequenas coisas, você pode realmente ver que se movendo desse valor para esse valor. Então ele está se movendo de um 100% de si mesmo para 0% de si mesmo ao longo de 10 segundos. Queremos que isso jogue desde o início, porque se jogássemos desde o início, ele o reiniciaria sempre. E queremos que esse valor se mova para cima e para baixo. Como constantemente. Então, se escrevermos aqui corremos um pouco, ele vai cair, então nós paramos e então ele vai voltar para cima. E então chegamos ao fim. Vai fazer isso e vai voltar um pouco e voltar para baixo. Se apertarmos o jogo desde o início toda vez que apertamos Shift, ele começaria de volta aqui e nos daria dez segundos novos, que não é o que queremos que aconteça. Tão legal Cuckoo, cuco. Então, temos a nossa linha do tempo. Fora da atualização. Vamos definir nosso nível de energia, essa variável que criamos. Vamos definir isso para o valor padrão. Então agora esses estão diretamente correlacionados, saindo daqui. E digamos que é igual se nosso nível de energia for igual a 0, AKA
se acabarmos muito, se, e então isso vai sair do final. Vamos reescrever isso um pouco assim. Ok, então agora se o nosso, se nós acabarmos, nós vamos realizar um evento chamado exausto. Então agora do outro lado da sua linha do tempo tem um monte de coisas legais. Vamos criar dois eventos personalizados. Vamos chamar um movimento parado e outro evento personalizado e chamar isso de exausto. Então, se o nosso nível de energia for igual a 0, vamos executar este evento esgotado. Legal. Vamos fazer o movimento parado primeiro. Se o movimento parar primeiro, vamos dizer, vamos perguntar se estamos exaustos ou exaustos. As pessoas querem fazer duas coisas diferentes com base no facto de estarmos ou não exaustos. Tudo bem? Se estamos, se não estamos exaustos, desculpe. E traça uma sequência. E o que queremos fazer é queremos 0, nós realmente temos que criar isso. Então criamos um sprint inicial. Também precisamos criar um sprint stop. Então vamos fazer isso. Não, crie uma função, chame de “stop sprint”. E isso vai ser um pouco simples. Vamos pegar os componentes do movimento do personagem. Vamos definir velocidade máxima, andar. E vamos apenas, vamos realmente promover isso para uma variável para que possamos, então se, se você quiser mudá-lo para outra coisa, você pode fazer isso muito facilmente. Então a velocidade máxima de caminhada é de 750. Então o padrão era 600, mas dissemos 750. E assim ele vai continuar redefinindo para 750. Então desta forma você não tem que ir para a função em como redigitá-lo no manual. Você pode apenas alterar a variável e ela será definida dinamicamente para você cada vez. Então, o que torna as variáveis agradáveis? E queremos desligar isto é correr, e é tudo o que queremos fazer para parar de sprint. Vamos voltar aqui. Então, agora, se não estamos exaustos, vamos em frente e parar de correr. Tudo bem, e então isso vai se conectar ao stop. Vai parar a linha do tempo em seus trilhos onde está. Vai dizer para segurar seus cavalos ali. Então queremos ter um atraso. Está bem? E queremos que isto pare. Então vamos promover isso para uma variável e vamos dizer região de resistência. Pausa e vamos definir isto para dois segundos. Certo, então o que os movimentos parados estão fazendo aqui? Vai verificar, estamos exaustos? Se não estivermos exaustos, também conhecido como se este número ainda estiver acima de 0, também conhecido como se ainda estivermos em algum lugar aqui e não estivermos aqui, então o que vai acontecer é que vamos parar o nosso sprint. Vamos ajustar nossa velocidade máxima de caminhada de volta ao normal. Então vamos esperar dois segundos. E então essa coisa vai ir em sentido inverso. Então digamos que estamos correndo, estamos correndo, estamos correndo, estamos correndo, estamos correndo, estamos correndo ou caule está caindo, então nós paramos de girar. Vai parar aqui mesmo. Espere dois segundos. E então ele vai jogá-lo em ré e voltar para cima e nos dar alguma declaração de volta. Isso é o que os movimentos parados estão fazendo. Agora, se estamos exaustos, tudo bem, então vamos definir está exausto para ser verdade. Então agora isso não tem nada para se esgotar. Não vai correr isto, vai correr isto. O que queremos fazer é que ainda queremos parar o Sprint. Queremos pôr o nosso movimento de volta ao normal. E então o que queremos fazer é fazer um atraso. E teremos um temporizador diferente dependendo se estivermos exaustos. Então, promete uma variável muito. Vamos dizer temporizador exausto. E estão exaustos temporizador. Então estamos soprando e soprando em vez de dois segundos, vamos esperar uns cinco segundos. E então vamos virar está exausto. Afaste-se. Esperamos cinco segundos, temos nosso fôlego. Está bem? E então vamos reverter do fim. Então, em vez de apenas reverter, assim pode ser invertido a qualquer momento. Este evento só vai ser executado aqui se for igual a 0. Então nós queremos que isso tenha certeza de que ele está revertendo a partir do final, que é bem aqui. Valor, nossa resistência está em 0. Então bada, bing, bada, boom, é assim
que fazemos. Isso é tudo. Isso é lindo. A única outra coisa que temos de fazer é ter a certeza que não podemos disparar a nossa arma se estivermos a correr. Porque caso contrário, um pequeno tiro fora para a esquerda. E vai parecer muito, muito estúpido. Mas por enquanto, eu meio que quero mostrar isso porque eu acho que seria hilário. E é meio divertido gostar de mostrar bugs e mostrar como você tem que ser tão específico com computadores. Pense em tudo para fazer com que as coisas não sejam ridículas. Então a última coisa que queremos fazer é apenas ir para a nossa pasta de interface do usuário. E vamos ver as informações da nossa arma. E vamos selecionar na nossa barra de resistência. Então nós queremos, nós queremos realmente correlacionar isso. E vamos para a porcentagem aqui. E vamos criar uma ligação. E digamos que fica, recebe resistência é um nome bom o suficiente. E tudo o que queremos fazer isso e ser muito fácil conseguir o jogador. Vamos pegar nosso nível de energia e empregar isso em bada bing, bada, boom. O Sr. Worldwide entrou na sala. Lá vamos nós. Era tudo o que tínhamos que fazer. Está bem. Então vamos para aqui agora para que isto funcione. Oh, Deus. Oh, você sabe, eu me antecipei. Esqueci-me de uma coisa. Vai em frente e faz isso agora. Então isso é o que acontece quando eu tento propositadamente falhar o jogo acabar me contando é o que está acontecendo agora é já que nós só podemos ver a barra de resistência se nós temos uma arma e nós não temos nada que acontece quando nós temos Uma arma. Então, por enquanto, apenas certifique-se de que ambos entrem em jogo e, em seguida, certifique-se de que o nível de energia está definido como um. Nunca acho que nunca disse isso. Isso está se movendo em porcentagens. Está bem. Então não defina para ser um 100 ou o que seja, defina-o para ser um. Então, o que acontece agora? Caminhamos até uma arma e a pegamos. E eu tenho cordas para mostrar a velocidade. Então você vai ver como um 1000. E nossa coisa está indo para baixo assim. Parecendo muito ótimo. Mas se você notar, nós arrancamos nossas mãos e batemos no Shift novamente, não
há como parar de estar exausto, mas você viu lá em cima um conjunto de 750. Então o que eu quero fazer é que nós podemos ligar liberado e colocar movimentos parados lá dentro. Mas eu quero ser legal na procura profissional porque um monte de jogos tem onde você não tem que segurar o turno o tempo todo. Você pode apenas tocar nele e isso é pessoalmente o que eu prefiro. Então é isso que vamos fazer. Nós só vamos ter um botão de toque Sprint. E quando levantar os dedos das chaves, vai parar de girar. Mas primeiro e acima de tudo, vamos em frente e comentar caixa isso e dizer sprint com três Jan ou 18. Stamina, bar, assim. Está bem, assim. Sinta-se livre para fazer qualquer edição como com esta parte ou o que quer que seja. Se você, se quiser,
ter que segurar o sprint e depois liberá-lo,
como eu disse, você pode fazer isso e o movimento da discoteca parou. E então isso vai funcionar quando você soltar a chave. Mas eu não gosto disso. Não gosto de segurar a chave o tempo todo. Gosto de tocar nele e depois soltar. E então eles estão deixando de lado w. Como muitos jogos funcionam, alternar sprint. Então vamos fazer isso agora. Assim, permite que você execute um tick de evento. Certo, e o que vamos fazer é fazer um macro para isso. E se esta macro for verdade, então vamos executar o movimento parado. O que esse macro chique que você diz? Bem, eu vou te mostrar. Então vamos em frente e criar isso. E diremos, paramos de nos mexer? Como isso. O que queremos fazer aqui é pegar nosso controle de jogador. E então queremos verificar é entradas chave para baixo. E a chave que estamos procurando é w. se w não está sendo pressionado e estamos correndo ainda, então isso retornará assim. Então nós temos que estar correndo, que é iniciado batendo Shift. Então esse é um dos nossos parâmetros. E então para que isso retorne verdadeiro, também
precisamos não ter a tecla W desativada. Tudo bem, então vamos para isso. Já paramos de nos mexer? Ele não quer deixá-lo cair para qualquer pé lá vamos nós. Lá está ele assim. E então vamos comentar caixa, só esta pequena parte. E nós vamos apenas, nós vamos chegar a isso e dizer conectado à linha do tempo. Então, pare o movimento. Vamos então verificar se estamos exaustos ou vários, Pare o Spread. Fará tudo isso por nós. Voltando. Então, vamos dizer cheques para ver se tecla
W é liberada durante a corrida. Então, se estamos correndo, mas nós soltamos w, que é o que naturalmente acontece. Vamos parar de correr. Então vamos em frente e fazer isso agora. Nossa chave e agora estamos correndo estavam girando e
meu mindinho não está no turno agora. Eu solto w e ele pára. E então ele volta para cima. E então eu estou correndo novamente, apertou turno mostrado. É uma alavanca. Aqui vamos nós. Como isso. E então, se eu continuar fazendo isso e então ele se esgotar, ele vai correr que exausto e 750 e eu estou batendo nele novamente. Não é correr. Não correr. Não é correr. Chega a 20 por cento e depois deixa-me fazê-lo outra vez. Então foi um pouco mais longe antes que eu fosse capaz de fazer novamente. Então tudo isso funciona muito bem. Toda a funcionalidade está correta no local. Então aqui está nosso roteiro para isso. E então nosso roteiro para essa lição que vamos adicionar é mais
uma coisa aqui mais tarde. Mas sim, isso é tudo. Então, no próximo vídeo, nós vamos realmente adicionar uma animação para fazer com que pareça com nossos personagens correndo. E então teremos tudo isso corretamente configurado. Então, vemo-nos lá.
17. Adição de animações de impressão: Olá a todos e bem-vindos de volta. No último vídeo, adicionamos algumas funcionalidades para permitir que nosso personagem corra pelo mapa. Mas implementámo-lo de uma forma em que ele só pode correr por um certo período de tempo antes de ficar exausto e depois diminuir a velocidade. E depois ligamos isso à nossa barra de resistência. Temos alguns parâmetros diferentes aqui. Fizemos isso como um tipo mais alternante de sprint onde podemos apenas tocar na tecla e então uma vez que soltamos, paramos de andar. Nosso personagem vai parar de correr. Esse tipo de coisinhas depende de você. E também o implementamos de uma maneira em que Você não
pode, você não pode correr se estiver recarregando atualmente, que novamente, preferência pessoal, mas foi assim que a construímos. Sinta-se livre à medida que estiver mais confiante em suas habilidades de script para torná-lo no entanto, você gostaria que ele se encaixasse em suas preferências pessoais. Então o que vamos fazer neste vídeo, este vai ser bem curto. Tudo o que vamos fazer é ligar o nosso é Sprinting Boolean, o
que está definido para ser verdade aqui mesmo no
meu livrar-me destas cordas de impressão realmente definido verdadeiro aqui e começamos a correr que está definido para ser verdade aqui mesmo no . E então, quando paramos de sprint, está definido para ser falso. Vamos ligar isso ao nosso gráfico Anim para que possamos fazer uma animação em execução. Então isso vai ser muito legal. Então ele liga bem aqui e depois pára bem aqui. Então vamos em frente e fazer isso agora. Então tudo o que precisamos fazer é entrar no nosso personagem. Vamos fazer o jogador e eu sou o plano. Vamos ao nosso gráfico de eventos. E, em seguida, fora disso, seguida, um com nossas outras referências de jogadores, vamos arrastar no jogador e vamos Gets é correr. E vamos promover isso para uma variável e vamos mantê-lo o mesmo nome é sprinting. Para torná-lo coerente conosco. Você sabe o que fazer agora, nós vamos variável para a animação de corrida. Então sabemos o que todas essas coisas fazem. Uma parte da caixa de comentário assíncrona um do outro. Isso parece legal. Então agora vamos voltar ao nosso movimento de jogador. Então vá para o gráfico Anim aqui, encontre nossa máquina de estado de movimento do jogador e vamos adicionar um novo estado. Vou arrastar a arma de troca como aqui, porque este novo estado vai se conectar a ambos. Queremos criar transições para ambos porque
podemos correr se trocarmos uma arma enquanto trocamos armas, tudo bem. Ok, então nós queremos adicionar nós indo para lá e para trás para ambos. Então eles voltaram e vão ter exatamente as mesmas regras. Então, se estivermos ociosos e quisermos correr, vamos verificar se estamos correndo? Se estamos correndo, vamos executar esta animação. Se não estamos correndo, então queremos voltar para a nossa Animação Idle Run. A mesma coisa vale para aqui, assim por diante, trocar uma arma. E começamos a correr. Você só vai dizer, bem, estamos correndo? E então se você quiser voltar, correndo. Não correr. Tão simples assim. A última coisa que precisamos fazer é apenas ter certeza de que é realmente animação para aqui e nós não temos um esqueleto de um personagem. Então vamos a um jogo de tiro. Animações, FTP, e é chamado de roadie run. É o único fuzil roadie correr bem aqui. Seno para o novo esqueleto jogador esqueleto para abrir
isso, isso também vai ter sons quebrados. Então, se você se lembra de como fazer isso de vídeos anteriores, na verdade, nós provavelmente deveríamos ter esse aqui executado. Bem, lá vai você. E podemos fazer isso um pouco mais alto, talvez 1,5. Os passos são um pouco mais altos para correr. Tão certo. Então agora parece assim. Muito legal. Então agora devemos ver que escreveu Irã bem aqui, conecte isso assim, compilar e que deve ser tudo. Normalmente sinto que me esqueço de algo, mas acho que é tudo. Então vamos pegar a arma. E agora a mesma coisa tinha Sprint. E lá vamos nós. Agora estamos fugindo. E depois deixamos ir. SMS, estranho acontecendo lá. Quando pararmos de correr, o
que diabos está acontecendo? Está bem. Então eu descobri o problema em vez de sua corrida e este que vamos usar é trocar de arma. Tudo bem, então no caminho aqui é mudar de arma para correr. Vamos dizer que não está trocando de arma. Podemos mudar de arma para corrida se não estivermos trocando uma arma. E podemos fazer a transição da animação de corrida para esta animação de troca de armas. Se estivermos trocando uma arma. Então agora isso deve funcionar. Lá vamos nós. A única outra coisa que temos é saltar animações. Então ele está correndo pelo ar. Então este vídeo não é muito longo. Vamos apenas ir em frente e adicionar as animações de salto agora para não parecermos estúpidos. Então vamos criar alguns novos estados em um estado e vamos chamar este salto, começar. Outro estado, salto loop, e depois um último. Pule e vá. E estes, ao contrário dos outros, que eles não estão se movendo oh meu Deus. Acabou embora. Eles não estão se movendo de frente e de trás. Estes se movem como um pequeno triângulo assim. Não sei se conseguimos entrar no ar. Nós não fizemos. Está bem. Essa é uma variável que precisamos definitivamente. Sim, ok, então em nosso gráfico urbano, vamos em frente e tentar “Obter o Proprietário do Peão”. E então vamos pegar nossos movimentos componentes daquele lago, que vai ser o nosso jogador. E diremos que está caindo. E então o que é promover isso para uma variável na faculdade está no ar. E aperte a tecla errada. Vá. Algo assim. Acabei por controles, pulando animação. Bada bing, bada, boom. Vá. Salário disso. Sim, vai nos odiar por um segundo, mas tenha certeza do que encontrarmos. Então vamos fazer isso se estivermos no ar. Então vamos fazer a transição da corrida para o início do salto, para a transição do, temos que encaixar essas inovações de forma alguma. Sim, nós temos. Ok, então vamos em frente e fazer isso primeiro porque vai ficar confuso se não o fizermos. Então vamos apenas digitar um salto na mesma pasta e temos JumpStart. Queremos o rifle um salto, Início loop e fim, tais como destinatários para o nosso esqueleto jogador. Isso e então nós podemos encaixar em nossos sons. Na verdade, eles têm sons de salto. Mas você, você sabe, você deveria saber como fazer isso agora. Então eu confio em você. Aí está o seu dever de casa do dia. Se você quiser fazer isso. Jump blues jogadores esqueleto retarget lá. E então fuzil um salto N? Sim. Sim, sim, realvo? Sim. Está bem. Então, agora vamos ligar estes. Jumpstart. Eu vou com o Jump Start. Loop vai com salto, loop e salto e nós vamos com, você adivinhou, salto final. Está bem. Agora precisa fazer transições entre estes. Então o que vamos procurar seu tempo,
restante, tempo restante em nossa animação Jump Start. E vamos dizer que é menor que 0,1. Então, se houver menos de 0,1 segundos restantes nesta animação de início de salto, vamos passar para a animação de loop de salto. Ok? E depois mudarmo-nos para saltar, e vamos dizer, não
estamos no ar? Então vamos ter o salto,
Inovação, continuar em loop até que não estejamos mais no ar. E então seremos capazes de fazer a transição de volta do salto para o ocioso. Se houver, digamos, menos de 0,25 na nossa animação de salto. E então o que nós queremos fazer é que nós queremos ser capazes de ir saltar de correr também. E então isso vai ter o mesmo parâmetro de apenas ser como, Bem, estamos no arquivo IR e salvar? E agora acontece no jogo. E estamos acabados. E tem algo estranho acontecendo com isso. Mas por enquanto, vamos correr. Está funcionando. E então pulamos. Ele faz o salto e, em seguida, ele ainda está correndo mesmo depois do salto. E se eu largar, ele só riu. Então tudo isso funciona perfeitamente, funcionando bem. Talvez eu tente descobrir se há algo estranho acontecendo com equipar a arma. E se houver, responderei a você sobre isso. Às vezes há erros no meu programa que podem não estar persistindo no seu, mas eu vou consertar o meu caso eu lhe disse algo que está um pouco defeituoso, mas sim, obrigado por assistir. E vejo-te na próxima lição.
18. Criação de Ammo: Olá a todos e bem-vindos de volta a outro vídeo. No último vídeo, começamos a terminar a maioria das animações que vamos precisar para o movimento do nosso personagem. E neste vamos continuar adicionando mais algumas pickups. Desta vez, vamos adicionar algumas funcionalidades para poder pegar munições adicionais. Então vamos fazer isso antes de entrarmos nisso. Pelo menos para mim no último vídeo, eu tenho um problema em que se eu pegar uma arma, o personagem faz essa agitação estranha onde ele meio que move a arma da direita para a esquerda estranhamente se você não viu, eu vou fazê-lo novamente. É aquele tipo estranho de pontapé ali. E ele faz isso toda vez que você troca de armas. Agora eu fui em frente e eu comparei este script com o projeto anterior. E o projeto anterior era exatamente a mesma coisa que este aqui, pelo
menos para meu conhecimento e eu não estava recebendo esse problema. Se você estiver obtendo esse problema, você pode ignorar essa parte, mas se estiver,
você pode entrar no Blueprint de Animação
do Player e no movimento do jogador gráfico Anim e nessa máquina de estado. E você pode realmente apenas remover essa transição superior de mudar de arma para sprint. O que isso vai fazer é que se você está correndo e então você trocar uma arma, ou se você está trocando armas e você ainda está girando, em vez de viajar daqui para aqui,
ele vai para aqui, em seguida, para ocioso e, em seguida, volta para o sprint. Então, agora, se eu aconteceu no jogo e eu pegar uma arma, você não vai ter esse problema. E você ainda será capaz de correr e trocar de armas ao mesmo tempo. Então troque a arma e volte para o sprint imediatamente. Então tudo isso funciona bem. Então, potencialmente, essa transição foi redundante porque ela vai para o ureter aqui de qualquer maneira. Então, fora do caminho, eu acho que esse é o único tipo de problema que tinha lá. Mas o que vamos fazer é criar algumas plantas para adicionar armas ou munições. Então, embaixo do interactable, vamos criar uma nova pasta e chamá-la de munição. E eu vou ajustá-lo para a nossa cor. Em seguida, dentro da pasta animal, vamos fazer uma classe blueprint do tipo Actor. E vamos chamar esta base de recolha de munições. Como se confunde com pickups? Uma ou duas palavras. É uma palavra se você está se referindo como um caminhão, mas é também se você está dizendo pegar até 240 fonics, tudo bem? O que vamos fazer é adicionar duas malhas estáticas diferentes aqui. Então, uma malha estática, a primeira será malha AML. E podemos arrastar isto para a nossa rota de cena e tornar este o padrão. E, em seguida, por baixo aqui, vamos fazer outra malha estática. E vamos chamar essa caixa de entrada. Então essas texturas são pequenas também, essas malhas ou pequenas também. Então vamos fazer o mesmo que fizemos com as armas se houvesse uma caixa invisível bem ali para a nossa malha de munição. Isto vai ser um pai, por isso não precisamos de um slot de nada. Mas eu vou trancar isso e torná-lo 2,5 vezes o tamanho porque estes são muito pequenos. Ok, então para a nossa caixa escondida, vamos em frente e encaixar apenas o cubo de um m vai ser bem grande. Então vamos em frente e podemos mantê-lo trancado e torná-lo metade do seu tamanho, 0,5. E então vamos definir isso para ser invisível e escondido no jogo. Toda a colisão, tudo
deve funcionar bem na maior parte, acho que é tudo o que precisamos fazer. Vamos em frente e realmente voltar aqui e para a nossa pasta de dados. E nós vamos criar uma nova enumeração que vamos usar para este blueprints. Vamos enumeração de plantas, em seguida, ir E, e vamos nomear este tipo de munição. Tudo bem, e então vamos criar seis enumeradores. Então, 1, 2, 3, 4, 5, 6. E chamaremos isso de munição de pistola. Então vamos nomear cada um a arma e, em seguida, a munição. Então, fuzil automático, animal, arma de tiro. Porque a maneira que eu estou criando é que você não será capaz de
interagir com um certo tipo de munição a menos que você tenha essa arma atual equipada. É por isso que estamos criando um rifle de sniper Anno. Então, queremos ceder o caminho, dar o jogo de distância para identificar que munição. Este é o lançador de granadas ou com que AML estamos tentando interagir em sincronia que com qualquer arma que tenhamos equipado. E finalmente, foguetes, lançar esmalte. Gol. Em seguida, a nossa base de recolha MO. Vamos criar uma variável, variável e chamaremos de tipo munição. E vamos fazer de tipo, tipo animal assim. Bom. Ok, agora no gráfico de eventos, vamos fazer algumas coisas aqui. Sob a peça inicial. Vamos criar uma referência ao nosso jogador. Vamos lançar para o jogador e promovê-lo para uma variável na qual você deve ser muito versado. Elenco. E fazendo referências aqui. Até agora, deve ser um profissional nisso. Faça isso. E também saber por que fazemos isso. Ok, agora vamos criar um evento personalizado. E chamaremos isso de pegar munição. Isso vai funcionar quando tentarmos pegar munição. E o que queremos fazer é criar um evento ou uma função, desculpe, que vai verificar se
nossa arma atual é igual ou não ao tipo de munição com que estamos interagindo. A maneira mais fácil de fazer isso. Na minha opinião, sem tornar tudo muito complicado é que vamos fazer isso dentro da base de armas. Então vamos para as armas e para a base de armas. Isso vai ficar um pouco peludo e precisamos organizá-los depois de um certo ponto. Ok? Então vamos criar algumas novas variáveis. E nós vamos chamar, estes serão todos inteiros e vamos chamá-los de pistola. Recolher a quantidade do tipo int. E que queremos criar um monte destes, um para cada arma. Então auto é que agora eu vou rifle quantidade pick-up é ser tipo de nomes feios tiro arma. E ele controlava o WT para duplicá-lo rapidamente. Sniper, rifle, lançador cinza, e finalmente lançador de foguetes. Pegue-os. Bem, estes vão ser responsáveis, digamos que é colocado em uma categoria agora, Emma. E eu vou arrastar tudo isso aqui. Não gosto de como está fazendo isso. Quero colocá-los na ordem certa. Então pistola e, em seguida, espingardas automáticas e espingardas, Sniper. Ok, bom. Legal. Então podemos definir esses três números diferentes de quanta munição você quer pegar? Baseado em como quando você pega um centro para a pistola, digamos apenas 24 balas por enquanto. A espingarda automática, 60, a espingarda. Vamos fazer 16. Estou tentando lembrar o que coloquei. Na moda gostam de revistas para cada um deles, para foguetes. E você pode mudar isso ao seu gosto. Tudo bem, agora o que queremos fazer é criar uma função. Vamos chamar-lhe munição. Apanha. Como isso. Tudo bem. Vamos, sim, vamos fazer uma entrada e chamar o tipo de MO dele. E vamos fazer do tipo, tipo AMO, assim. Vamos arrastá-lo aqui e ligá-lo. Então agora você deve ver todas as nossas munições de pistil, isso e aquilo. Então, se isso for definido para ser uma dessas coisas, ele executará uma dessas execuções. Ok? Então tudo isso vai ser o mesmo, que é Larry pequenas variações. Então, sem munição de pistola, vamos retirar um galho. E vamos dizer que pule o tipo de arma. E diremos que é igual a arma atual até agora. A arma se o nosso tipo de arma, que também é igual à arma atual, que é igual à pistola, então o que queremos fazer aqui é pegar munição total atual. Olhe para o set. Queremos pegar a quantidade de coleta da pistola e a munição total atual. E nós queremos adicionar estes juntos e, em seguida, definir isso como o novo total atual AMA. Então vamos dizer que temos tipo, oh Deus, isso é realmente um pouco de matemática. Digamos que, para facilitar a matemática, temos 10 balas na reserva. 10 é a nossa munição total atual. Munição total sendo 360 neste caso. E tivemos um conjunto para 24, então 10 mais 24, que então definirá para 34. Matemática é poder. Ok? E então vamos fazer uma verificação extra sobre isso, ok? Com isso selecionado e vamos adicionar uma saída, e vamos torná-lo um booleano. E então vamos dizer que é verdade ou podemos dizer que é sucesso se você quiser ser legal. Certo? Então isso foi bem sucedido? Se passar por esta filial, foi bem sucedido? Sim. Ele voltará verdadeiro. Se ele sair daqui, então ele vai dizer Não, ele retornou falso. Oh, caramba, devemos estar descontrolados. Ok. E então diremos que adiciona munição de pistola. Se ela aqui adicionar munição. Se isto ainda estiver captando munição do Pistol. Como isso. Está bem, vendo um olhar para aquele guião assim. Então agora tudo o que precisamos fazer de agora em diante é fazer exatamente
a mesma coisa para o choque automático de rifle em todas as nossas armas diferentes. Vai parecer exatamente o mesmo que isto. Tudo o que precisamos mudar é R. Então, para o rifle automático vai fazer mudá-lo para a quantidade de captação automática rifled e para os títulos de armas que tinham um rifle. Então vou lhe dar uma pequena tarefa. Eu vou fazer isso sozinho. Vou dar-lhe algum tempo para preencher o resto desta função por conta própria. Então eu vou cortar um pouco para a frente, voltar para você. Então divirta-se com isso, e te vejo em um segundo com as respostas. Tudo bem, então é assim que a função final deve ser. Então, se o tipo de munição é ajustado para pistola em torno deste em um rifle para baixo um e assim por diante, assim por diante. Então nós tivemos que mudar, como eu disse, Pixel Picker, quantidade masculina , pistola total
atual ou rifle , rifle
automático, arma de tiro, atirador, granada, foguetes,
foguetes, e então sim, tudo isso vai correr. Tenho aqui um erro de digitação. Está bem, fixe. Então agora tudo o que temos de fazer é voltar para nossa base de capturas e vamos arrastar o jogador e pegar a arma atual. Lembre-se que a arma atual é uma referência a esta base de armas aqui. Então, já que temos isso fora, agora
podemos chamar captadores de munição, essa função que acabamos de criar. E nós vamos pegar e ligar para isso. E vai pedir um tipo de munição, certo? Porque nós colocamos isso, colocamos aqui. Então está pedindo por um. Nós continuamente slot este é qualquer coisa, mas nós criamos esta variável, lembra? Então vamos ligar isso. Então a razão pela qual eu tinha que definir como uma entrada é para que possamos conectar esta variável em. Então, quando fazemos as crianças para isso, podemos definir isso dinamicamente sobre as crianças para que este valor sempre mude e, em seguida, executar as diferentes partes que saem dessa enumeração. E depois fora do nosso sucesso. Então vamos dizer que se, então, se isso retornar verdadeiro, que
significa que você tem uma dessas coisas de sucesso, então o que nós queremos fazer é tocar um som para D. Vamos promover isso para uma variável e vamos chamar isso de pick, pick up som. Assim, podemos definir dinamicamente isso nas crianças também. E então vamos destruir o ator assim. E então nós vamos apenas vir em caixas para dizer acrescenta quantias MO na Base de Armas. Só para lembrarmos o que isso faz e onde está. Sentado assim. Então isso é tudo trabalho. Então lá vamos nós. Isso é tudo o que temos que fazer na nossa base agora. Tudo o que temos que fazer é fazer as crianças. Então, modus operandi e escolheremos uma base, criaremos a classe Child Blueprint e chamaremos isso de coleta de munição de pistola. E o que continua fazendo isso por todos eles. Certo, então se isso for feito corretamente, basta
clicar com o botão direito do mouse em AML, escolher uma base cinza Child Blueprint, e então renomeamos todos eles rifle, granada, pistola, espingarda e rifle de atirador. Então agora você tem que fazer é abrir um deles, qualquer um deles. Para a nossa malha de munição. Vamos procurar uma espingarda de assalto. E nós temos esse tipo de revistas aqui assim para o tipo de munição. Vamos colocar isso para munição automática e o som da pick-up, devemos ter uma picape. Veja, há estes aqui mesmo rifle e nós vamos pegar o taco assim. Se você não gosta do volume disso, basta entrar aqui e mudar os multiplicadores de volume para que você possa fazer o que quiser ou o que quiser, sua preferência pessoal. E então ele se aplicará a todos eles. Então isso é tudo que você tem que fazer por um deles. Então, sim, vá em frente. Ranhura em. Acho que pareço bem. Pegue assim e digitaremos som de granada. Lançador de granadas sou uma picape. Você quer ter certeza que você tem o QRS porque então ele vai ter como vários sons diferentes. Pelo menos deveria. Normalmente, é assim que as filas funcionam. Então sim, basta ir em frente e preencher o resto deles e eu volto para você em um segundo. Ok, agora que temos encaixado em nossos sons e malhas corretos e definir essa enumeração para ser a coisa correta. Podemos arrastar e largar isto para que possamos colocá-lo. Não sei por que isso às vezes faz isso. É meio estranho. Basta bater no final e ele vai para o seu lugar correto se ele está estranhamente em outro lugar. Eu também não estou colocando isso no local correto agora, mas oh, bem, tudo bem. Como isso. Então agora devemos ter nossos diferentes soluços, mas não há como interagir com eles a partir de agora. Então vamos em frente e consertar isso. Então, em nosso personagem no gráfico e até mesmo onde colocamos isso, temos um chamado Mapeamentos de Ação. Sim. Então nós temos este traço de linha e eu posso fazer isso, fazer esta bandeja persistente agora. Então você pode realmente ver este traço de linha e apertar a tecla E. Verá que são 200 sets. Até onde isso está indo para realmente interagir com um desses. Então você verá este pequeno quadrado e é vermelho e depois fica verde para mostrar que eu realmente bati em algo, realmente interagir com algo. neve acerta, olha direto para o chão, você vai ter uma batida bem ali, mas está batendo no chão. Não acrescenta nada de valor a nós. Ok, então isso é meio legal. Agora, se tivéssemos uma tonelada de coisas ligadas a isso, a isso interagir. Provavelmente teríamos algum tipo de Despachante de Evento que continuaríamos ligando. Mas só temos duas coisas neste projeto com as quais precisamos interagir. Então é por isso que é feito assim. Então o que queremos fazer é colocar nossa carga para fora, vamos ligá-lo. E isso vai sair disso. Então só queremos ser capazes de interagir com munição se tivermos uma arma. Então não posso pegar munição sem armas, esse tipo de coisa. E é, mas se tivermos uma arma, queremos lançar para a recordar. Munição, pegue a base. Mais uma vez, isso vai sair do ator principal. Como se isso fosse, esse é um lugar legal. E então, como base pika, queremos executar o evento que criamos. Este aqui, pegue munição. Nós queremos realmente executar isso. Então vamos chamá-lo de pegar munição e então é encaixá-lo assim para nós. Então, podemos comentar caixa, esta coisa toda muito honestamente porque este script está feito agora. E colocaremos um traço de linha para verificar se está tentando interagir com o MO ou captadores de armas. Alguém assim. Sim. Apenas certifique-se de soletrar tudo corretamente porque eu realmente não conseguia ver onde eu estava digitando. Ok, então é assim que o script parece que nós acabamos de adicionar isso, isso, isso, tão bem auto-explicativo lá. Agora, se viermos aqui e eu tentar interagir com essas coisas, nada vai funcionar. Mesmo que estejamos recebendo acertos verdes e não tenhamos um erro, ele está acabando de lá. Mas digamos que eu pegue a espingarda e essas três armas. Então, a pistola. Oh Deus, qual deles é qual? Essa é a epístola M0. Então, interagindo com isso, não faz nada, mas se eu interagir com
isso, ele fez as contas, ele desapareceu. Tudo isso. Se eu mudar para a espingarda automática, não
posso interagir com este ou este, ou este ou o que quer que seja. Mas não posso interagir com essa. E então a espingarda não pode fazer nada a não ser esta. Oh, eu tenho o punho da pistola. Lá vamos nós. Tenho um pouco de medo da resiliência. Eu estava tipo se eu fiz o ajuste um? Veja, eu posso realmente ver esses traços de linha agora, o que é meio legal? Sim, isso é tudo a ver com nossas munições. É assim que se faz. Tão legal. Vamos continuar rolando na chave ruim e alguns novos recursos para o jogo. E então nós finalmente, vai ser muito em breve e nós vamos realmente começar a atirar essas armas e fazer algumas coisas legais com eles. Então eu espero que você tenha gostado deste vídeo e eu vou vê-lo no próximo.
19. Armas de varredura: Olá a todos e bem-vindos de volta a outro vídeo. Neste, vamos começar a adicionar algumas funcionalidades para poder disparar as nossas armas Scan. E entre os vídeos, eu fiz algumas coisas muito pequenas. Eu adicionei alguns textos renderizados para o mundo. Para fazer isso, tudo que você precisa fazer é entrar no lugar atores e você pode puxar uma renderização de texto para fora. Você pode girá-lo. Como você gostaria. Você pode mudar as fontes, mesmo que eu não acho que vai funcionar porque ele não tem um material de texto. Sim. Você pode alinhá-lo ao centro, mudar a cor ou o que você quiser fazer, e digitar o que você quiser que ele diga. Então, sim, eu mas o nosso armário de armas e depois ele vai pegar. Então eu fiz preto e tamanho 30, e eu dei um nome e coloquei em uma pasta. E eu também coloquei nossas munições na ordem correta e coloquei isso em uma pasta porque eles não me chamaram de estação de organização no colegial por nada. Na verdade, eu chamei isso. Seguindo em frente, vamos atirar algumas armas. Então a primeira coisa que queremos fazer é em nossa pasta de dados, clique com o botão direito do mouse e ir para o blueprint e, em seguida, ir para enumeração. Nós vamos ou seja, tipo demitido. E como eu disse no início do primeiro vídeo, temos dois tipos diferentes de armas. O primeiro é chamado de varredura de acerto, e o outro é um projétil. Então, se você se lembra, uma arma de varredura vai funcionar com um traço de linha. Um traço de linha é que eu não acho que eu depurar isso ainda. Então vai ser o mesmo tipo de coisa onde desenha uma linha invisível para o mundo. E vai ser um instantâneo à procura do que atinge. Então vamos obter resultados como esse com o hit scan, um projétil vai ser semelhante ao se
você usar apenas o modelo em primeira pessoa que vem com Unreal. Essa arma tem uma pequena bola amarela que sai dela e na verdade é um projétil. E as diferenças entre projéteis e
hit Scan, hit Scan, vai ser um hit instantâneo. Vai ser uma linha reta perfeita onde, como um projétil, podemos definir velocidades diferentes para ele e tê-lo impactado pela gravidade. Então a nossa pistola ou espingarda e a espingarda,
serão imagens de acertos e, em seguida, a espingarda de atirador, a
granada e o Rocket serão do projétil. Então, neste vídeo, vamos começar nosso script para ser capaz de adicionar
funcionalidade aos cantos hits, bom, digamos rejeitar. Ho. Então, sim, vamos para nossa pasta de armas e abrir nossa base de armas. Este é o lugar onde todo o nosso roteiro vai viver. Tudo bem? A primeira coisa que queremos fazer aqui é ir em frente e criar uma função e vamos chamá-la de começar a filmar. O que queremos fazer é adicionar uma entrada para isso e chamá-lo de fogo tipo In, torná-lo de tipo, tipo de fogo, assim. Saindo daqui, queremos fazer uma sequência. E como em outros momentos na classe, vamos adicionar algo dos 1000. Mas para o bem de agora, o que eu quero fazer é ir lá fora, em
seguida, um pin e então nós vamos adicionar este script mais tarde. É aí que vamos controlar, na verdade diminuindo a quantidade de balas que temos e fazendo algumas coisas recarregando. Mas em um tipo de fogo, vamos ligar isso e ligar isso no então um pino como aquele, pode redirecionar esse nó assim. Certo, então fora do escaneamento de hits, o que queremos fazer é chamar um tipo diferente de função. Então, não muito adicionado a isso ainda, mas vamos ter que criar uma nova função. Então vamos chamar isso Calcular hit ou calcular um traço de linha. Vamos chamá-lo assim. E então isso vai ter três entradas diferentes. Então vamos adicionar três entradas aqui. O primeiro vai ser um componente de câmera. A segunda vai ser uma malha de armas. E o terceiro vai ser um encaixe de arma. A câmera vai ser do tipo. Alguém poderia apenas um objeto componente da câmera. Lá vamos nós. E então este vai ser um componente de cena. Vendo componente, referência de objeto. Ver componente é como essas coisas. Qualquer coisa em nosso componente como qualquer um desses componentes é considerado um componente de pia. E então este vai ser um nome. Tudo bem? O que podemos fazer aqui é puxar uma sequência para desfazer algumas coisas diferentes. E vamos promover tudo isso para variáveis locais. Câmera local, malha de armas local, e tomada de armas locais, não idiota. Soquete. Tudo bem, e então vamos apenas fazer isso fora do, em seguida, o 0. E isso é um pouco feio. Então vamos talvez mover tudo isso um pouco para cima. E, em seguida, adicionar alguns nós redirecionar como esse talvez faz com que seja um pouco fora. É trágico. Tenho que trocar esses dois. Oh, meu Deus. Esta é apenas uma primeira parte embaraçosa do roteiro. Com certeza. Para definir tudo isso e Unreal fazê-lo e depois não me dar as linhas retas, o que é um destino terrível. Ok. Mas ele faz o trabalho, grita, faz o trabalho feito. Então, fora de um, Vamos alinhar o traço de objetos. Em vez de por canal. Vamos fazer isso por objetos porque queremos. Assim como linha, se eu estivesse fazendo traço de linha por canal, você notará que está faltando esses tipos de objeto. Então só queremos que nosso traço de linha interaja com alguns tipos de objetos diferentes. Então, com este traço de linha por canal, é só que não temos essa opção essencialmente em termos simplificados. É por isso que estamos usando essa. Tudo bem, então o que queremos fazer, semelhante a como fizemos isso no personagem, se você se lembra, pegou o componente da câmera, localização de
Deus e fez algumas contas aqui, nós queremos fazer algo semelhante. Então vamos pegar nosso componente de câmera local, que se você se lembrar, é uma entrada. Então, se eu fosse para aqui e eu fosse puxar isso para fora e dizer Calcular traço de linha. Não vai pedir esses dados porque são entradas. Ok? Então câmera local, vamos conseguir transformar o mundo. E nós queremos dividir esses pinos atingidos para que possamos obter uma rotação, um local em uma escala. Ou posso usar a escala, mas usaremos a rotação e a localização. Então a localização da nossa câmara vai ser o nosso ponto de partida. Então isso é bom e fácil lá. Mas vamos fazer várias coisas diferentes fora deste ponto final. Então vamos realmente começar com a rotação e vamos obter o vetor para a frente. Então, a rotação da nossa câmera diretamente para fora desse ponto é o que estamos recebendo. E então nós vamos multiplicar este vetor vezes flutuar. Acredito que seja um carro alegórico. Sim, UCS é k. Então isso é realmente o quão longe no mundo nossos traços de linha vão. Então os outros para 200. Então vamos fazer isso algo muito vago, como 10 mil traços de distância viaja e se você quiser, tudo bem. Então, digamos que você queira dar a uma certa arma mais alcance do que uma diferente. Tudo que você tem que fazer é promover isso para uma variável. E então o traço da linha irá tão longe. Então, se você quiser uma espingarda, está batendo em algo do outro lado do mapa ou algo ridículo. Você pode fazer isso preferindo o saquê da simplicidade agora. Bem, vamos manter assim. E nós vamos vetor mais um flutuador compatível com. Talvez precisemos de vetor mais vetor. Vetor mais vetor. Sim, está bem. Ok. Matemática. Então, sim, isto vai aqui e depois vai lá. Então o que estamos fazendo é pegar a localização de nossa câmera como um ponto de partida e então estamos adicionando 10 mil a esse ponto. Agora, normalmente, nós apenas adicionaríamos isso
no ponto final e nós seria feito na vida seria bom. Mas gostamos de complicar as coisas, porque se você se lembra, temos essa coisa de espalhar balas acontecendo aqui. Então não queremos que nossos traços de linha sejam
absolutamente retos se não estivermos mirando nos locais. Então, como conseguiremos esse efeito? Bem, vamos fazer isso agora. Ok? Então fora um vetor, vamos quebrar definir um vetor r, certo? E então o que vamos fazer é pegar nossa bala espalhada, seja lá o que for definido como padrão 350. E então vamos multiplicar isso por outro flutuador, e vamos multiplicar isso por um negativo. Ok? E então o que queremos fazer aqui é obter um flutuador aleatório dentro de um alcance. Então. Este nó vai ser o mínimo, e então este nó vai ser o máximo. Então, nosso spread ousado é 350. Tudo bem? O valor mínimo que esta randomização pode bombear é negativo 350 e o máximo pode ser como 300, 50. Então OK, realmente o suficiente embora nós precisamos obter isso para o x, o y, e o z. Então nós precisamos fazer isso para outras vezes. Então nós podemos conectar um para o x, um para y, e um para o z. Então vamos ligar o valor disso e fazer todos
os mínimos no valor disso em todos os máximos, o que sim, é, isso é uma abominação olhar coisa, mas é o melhor que podemos fazer. Ok, fora daqui, vamos adicionar float, float, e queremos fazer isso para x, y, e z. Então eu quero ter certeza de que estamos aleatorizando isso em todos os locais x, y e z. E então os valores de retorno irão para o No fundo disso. Tudo bem, isso pode ficar muito feio muito rápido. Tentando domar todos esses nós aqui. Ok? E, em seguida, adicione um aqui. Vamos fazer disso um vetor porque o quebramos. Agora tenho que voltar a ser um vetor de novo. Todos esses valores flutuam em um vetor novamente. E por último, mas não menos importante, temos de verificar, está bem? Só queremos fazer isso se não estivermos mirando direito? Só queremos que esta bala se espalhe aleatoriamente como se fôssemos Amy, queremos que seja essa linha perfeita, certo? Então acho que o que precisamos fazer é fora de um grande vago e jogar, precisamos obter uma referência para o nosso jogador porque eles acham que ainda não temos um. Então vamos obter o personagem jogador elenco para o jogador, para variável e vamos chamar Player. Não vou fazer com que pareça bonito só para poupar tempo. Farei isso entre os vídeos. Sim, não está gostando de mim porque para isso, tudo bem. Então, fora do valor de retorno deste, Vamos obter uma nota selecionada como esta. E, na verdade, isso não foi do jeito que eu queria. Vamos, vamos tentar fazer assim. Jogador, vamos começar está mirando. E então vamos fazer uma seleção. Fora disso. Ha-ha, lá vamos nós. Isso é o que queremos. Então agora está pegando o verdadeiro e o falso. Então, se mirar é verdade, então nós só queremos agarrar isso. Só queremos pegar a linha perfeita. Este é o, a rotação de nossas câmeras para frente vetor mais 10000 unidades para o mundo. Quero que seja perfeito. Mas se não formos a Amy, queremos fazer a matemática da propagação da bala. Então, queremos ligar isso ao falso. E, em seguida, o valor de retorno de que vai ser o nosso ponto final. No complexo deles. Na verdade, não. E eu meio que saio daqui. Vamos, vamos fazer uma matriz porque queremos ter vários objetos para interagir. Os dois que queremos interagir com o nosso mundo estático e rolar essa dinâmica. Então estas são as coisas que a nossa linha traça vai cruzar. Então, se você sair para o mundo e você olhar para isso e bem, se você fosse para as configurações de colisão de alguma coisa, então talvez se eu apenas pegar isso fora deste filho Pollyanna por padrão. Então, se eu pegasse isso e Colision Presets e artistas dizem que este é o mundo de guerras, que ECUA, dinâmica mundial lá. Oh, talvez eu precise. Ou é? Oh, lá vamos nós. Isto é o que eu estou procurando. Um mundo dinâmico, estático mundial. Então há coisas diferentes no mundo que seriam consideradas dinâmicas e estáticas. Eu provavelmente não precisava explicar isso, mas esses são os tipos de objetos que queremos. tipos de objeto que queremos estão alinhados para cruzar. Mas também queremos ignorar alguns atores. Então vamos pegar o personagem do jogador. E eu não acho que isso vai ligar imediatamente. Certo, acabou de fazer uma matriz. Então podemos adicionar mais coisas a isso que queremos que isso ignore. Certo? Fora desta batida fora. Nós queremos, podemos fazer isso? Não, não podemos. Então vamos adicionar outro alfinete. Vamos adicionar um nó de retorno fora disso. E, em seguida, vamos fazer uma saída e fazer este resultado hit. E chamaremos de resultado de sucesso. E então conecte isso assim. Tudo bem. Essa é a coisa mais feia que eu já vi na minha vida. Tudo bem, então agora nós temos nossa coisa Calcular linha traço aqui. Então, rapidamente, reveja isso. Então estamos definindo o prompt me. Nós nem precisávamos fazer a arma mencionada no soquete, defini-as como variáveis porque nós realmente não as usamos. Pensei que poderíamos potencialmente usar a câmera ligada ou o que quer que seja. Não é grande coisa tê-los ou não tê-los. É o que é. Então, quando desenhamos este traço de linha, estamos recebendo a posição de uma câmera. Não especificamos o que é essa câmera. Ainda assim. Estamos recebendo sua localização e definindo isso como nosso ponto de partida. E então o que estamos fazendo é pegar a rotação da câmera, o vetor avançado dessa câmera, mais 10000, adicionando isso juntos. E então, se estivermos mirando, nossa arma retornará isso como o ponto final. Se não estamos mirando, então nós quebramos,
quebramos esse vetor em x, y e z. Nós aleatorizamos esse número entre 315,
350 negativos, ou qualquer número que dissemos que é esta tigela enquanto este parafuso se espalhou aqui. Então nós estamos adicionando esses dois valores juntos de volta para cima, transformando isso em um vetor novamente porque nós quebramos e transformamos em carros alegóricos. E, em seguida, tornando isso o ponto final. E queremos que nosso traço de linha interaja com objetos
estáticos e dinâmicos do mundo e ignore nosso player. Não queremos que ele interaja com o nosso jogador. Tudo bem, então agora nós temos essa função sentada e sobre isso. E esta parte será bem fácil. Então vamos pegar o jogador e vamos pegar a câmera. Isso é sobre o jogador. E essa vai ser a nossa câmera. Então pegamos isso, câmera
deles para a malha da arma. Bem, vamos pegar a malha de armas da nossa base. Isso não é nada além de ser definido como outras coisas nas crianças. E depois a tomada de armas. Baba, baba, baba. Então, se eu mostrar isso a vocês, se formos para as armas em uma malha esquelética, queremos que isso se chame flash de focinho. Isso é o que estamos pegando. Eles são todos chamados de flash do focinho. Tudo bem, então eu não preciso de você o spammer promovido para uma variável e vamos chamá-lo de socket arma, daí a variável nome. E por que não? Deixando-me? Ok, então é aqui em cima. Ok. Isso foi como, Bem, vamos definir isso para ser flash focinho. Acho que nunca precisaremos mudar isso, mas no caso de ele ter uma arma diferente que você adicionaria a este projeto mais tarde. Agora você pode alterar isso por uma variável. Então, sim, isso é muito legal. Certo, e então vamos fazer coisas diferentes. Ele está retornando o que quer que isso atinja então você pode quebrá-lo apenas para mostrar, nós fazemos todas essas coisas diferentes, mas o resultado do hit, os hits da linha, tudo bem, e nós estamos retornando esse valor para que possamos fazer coisas legais com isso Depois, que é exatamente o que vamos fazer, é que queremos sempre fazer as coisas legais. Tudo bem, então tudo isso parece muito bom até agora. Certo, então há algumas coisas diferentes que vamos adicionar a todos esses scripts. Mas só para mostrar que isso está funcionando, vamos em frente e configurá-lo como uma espécie de coisa de depuração muito rapidamente. Então vamos para nossas configurações, configurações do projeto e entrada. Criar novo mapeamento de ação e chamá-lo de atirar, atirar, atirar, atirar. Chamamos-lhe fogo. Estes são os que eu vou chamá-lo de fogo. Eu sinto que atirar é como gerenciar atirar. esquerdo do mouse. Então, queremos filmar. Normalmente é como é. Tudo bem, então em nosso gráfico de eventos, vamos em frente e criar um evento. E nós vamos chamar essa mangueira de incêndio assim. Então nós vamos adicionar coisas a isso para ter certeza de que nós realmente temos munição em um monte de outras coisas como essa. Certifica-te de que não somos como se pudéssemos disparar a nossa arma. Você sabe, uh, nós podemos fazer essa palestra agora porque nós criamos essa variável. Mas será sempre verdade, certo? Então vamos definir isso para ser verdade por enquanto. Então vemos que isso funciona. Ok? Então vamos pegar a arma atual. Tudo bem. E então queremos pegar o tipo de fogo. Qual é o nome que chamamos a isso? Ou não vamos realmente definir isso como um buraco para baixo um segundo ou peso? Tipo de arma onde ele começa a disparar é disparado tipo de var tipo a 0. Ok, nós colocamos na entrada. Na verdade, não tornamos uma variável. Então vamos fazer esse biótipo. Ok, então agora tem uma variável real do tipo panfleto,
tipo de projétil do scanner de hits. E isso é importante porque precisamos nos certificar de que
colocamos isso em todos os nossos filhos eventualmente, que ele saiba se é uma arma de varredura de sucesso ou uma arma do tipo projétil. Certo, então agora vamos pegar o tipo de fogo. Isso. Tão bom para nós agora. E nós queremos correr começar a filmar. O alvo vai ser a arma atual e vai ficar sem o ramo verdadeiro e meio que manipulado agora, reconhecidamente. Mas deve funcionar. A última coisa a fazer é ir para Mapeamentos de Ação e vamos
procurar fogo, o evento de ação. E então vamos correr fogo assim. Então, espero, meu Deus, eu fiz isso. Certo, queremos ter certeza que temos essa persistência, certo, e provavelmente queremos verificar se realmente temos uma arma. Então, antes de fazer isso, vamos em frente e obter a carga para fora, porque foi isso que causou erros nessas áreas. Erros. É bom, Leia garoto. Ok. Pressionado. Tem arma de fogo e podemos ver essas linhas. Certo. Porque foi definido para ser um persistente. Ok. Excelente. Então, sem linhas, sem orelhas. Muito bom. Então sílica entende isso. Então nós estamos filmando agora e você pode ver essas linhas saindo, boom, boom, boom, boom. E eu vou lá fora. E se for Seguin, veja se está batendo nas coisas porque tem a linha pequena. E então esses e eu estou atirando para fora, não faça nada. Então, obviamente, a munição não está caindo. Não temos nenhum recuo. Um monte de coisas que precisamos adicionar. Mas lá vamos nós. Quero dizer, nossa arma está atirando. Estamos desenhando esses traços de linha para o mundo, que é exatamente o que queremos fazer. Está verificando que você veria essa distância lá. Se eu desenhar um como esse, você realmente veria. Então, de lá para lá, é assim que Fargo. Então, se você quiser mudar isso, se você não quer o choque e tem tanto alcance, vá em frente e defina essa variável de 10 mil por ano e então você pode mudar isso. E todas as crianças dizem não
sou louco como um show de luzes acontecendo aqui. Sim. Isso parece legal. Veja um o, você pode ver como ele, na verdade, eu vou saltar fora deles. Você pode ver como ele continua passando pelo verde. Então ele ainda passa mesmo que ele bate em alguma coisa. Legal. Isso parece tão sim, tudo isso funciona. Sim, isso é tudo. Isso é tudo para este vídeo. Então vamos continuar adicionando coisas a isso e tornando-o mais robusto. Queremos adicionar os sons e os efeitos e ser capazes de recarregar e garantir que a contagem de munições diminua. E então também fazer as armas específicas funcionarem, como eles fazem o rifle de assalto automático e a espingarda é espalhada e todas essas coisas. Mas esta é a linha de base para o que todas as nossas armas de projétil vão fazer, que é disparar. E agora temos armas atirando, atirando com citações aéreas. Então isso vai ser muito legal. Espero que tenham gostado deste vídeo e vejo-vos no próximo.
20. Funcionalidade reloading (parte 1): Olá a todos e bem-vindos de volta a outro vídeo. Nesses próximos vídeos, vamos adicionar, recarregar para o nosso jogo. Então, neste vídeo, isso vai ser principalmente a matemática por trás dele. Então, obter nossa munição atual para diminuir sempre que refilmar ou arma em um jogo para entender como se tivéssemos 0 balas
no carregador para recarregar automaticamente e fazer coisas diferentes como essa. E então, em vídeos futuros, nós vamos realmente adicionar efeitos sonoros e uma animação e nesses tipos de coisas. Então, para começar neste aqui, vamos entrar na nossa base de armas e vamos criar uma quantidade decente de funções aqui. E entre os vídeos, há algumas coisas que eu fiz. Eu principalmente apenas adicionou caixas de comentários em torno das coisas e fez algumas das coisas olhar um pouco mais agradável. Então aqui está a nossa linha Calcular traço do último vídeo. Então aqui está a nossa bala espalhada. Atores alinhados tréguas vão acertar os que vão ignorar. Então, apenas algumas coisas adicionadas. Livrei-me das outras duas variáveis locais porque acho que não vamos usá-las, mas precisamos delas como entradas. Só não precisamos defini-las como variáveis. E então eu acabei me livrando dessa variável de soquetes de armas. Porque para o meu projeto, pelo menos cada soquete será flash de focinho. Mas se você quiser usar diferentes malhas de armas que eu estou usando no futuro. Você definitivamente gostaria de definir isso como uma variável que qualquer criança desta base de armas, você será capaz de definir dinamicamente todas as vezes. Mas eu coloquei manualmente. Eu acho que é isso. Fora isso, coloquei algumas de nossas variáveis em diferentes categorias para mantê-las organizadas. Hum, e como eu disse, se você pode definir isso como uma variável, se você quiser também. Só não o fiz porque, pela simplicidade, cada traço de armas vai ser essa distância por enquanto. Ok? Então eu acho que isso é tudo. E sim, podemos começar. Então vamos começar criando uma função e vamos chamar esse cálculo de recarga. Isso vai controlar a matemática que estamos fazendo aqui. Para isso, vamos precisar de mais algumas variáveis para adicionar a este OData, que é o que eu nomeei. Então vamos adicionar uma variável e vamos chamar isso. Então não temos o tamanho da revista CF. Isso vai ser do tipo inteiro. Todos estes serão inteiros. Então você tem o tamanho da revista. E então precisamos de uma chamada diferença de bala. Acho que é isso. Podemos arrastá-los para a categoria se você não quiser usar categorias, certamente não precisa. Assim como se você abrir uma criança, se você não tem sido categorias e eles vão aparecer nessas pequenas categorias. Se você não fizer isso, então será apenas, eles serão como uma seção muito, muito longa lá. Então, sim, vamos começar. Então o tamanho do carregador, esta variável deve sempre ser igual à munição atual. Então nosso padrão é 30, então vamos apenas definir isso para ser 30. Isto é qualquer que seja o tamanho da nossa revista. Este número não vai mudar. A munição atual vai mudar. Mas este é o total. Então, o tamanho da nossa revista, vamos ver isso. E vamos pegar nosso ML atual. E vamos subtrair estes. E então vamos definir isso como a diferença de bala. Ok? A maneira como eu não vou criar toda essa função então apenas explicar tipo de o que ele faz depois do fato. Tirando uma diferença de bala. Queremos obter um menor que ou igual a inteiro. E queremos obter o total atual de AMA. E então vamos puxar para a ramificação aqui. Ok? Tentando apenas pensar em quando e como explicar o que isso está fazendo exatamente. Bem, vamos, sim, vamos para o verdadeiro ramo por enquanto. E vamos definir munição não atual. E vamos definir isso imediatamente para o verdadeiro e o falso. Desculpe-me. Então o tamanho do carregador de sucata e o conectou na munição atual aqui em cima. E então vamos pegar nossa munição total atual. E a diferença da bala. Vamos subtrair estes. Então vamos definir isso como a nova munição total atual. Como este. Parece muito bom. Certo, e se o resultado for falso, queremos pegar a munição atual. A munição total atual. E nós vamos juntá-los. E então vamos definir isso como nosso ML atual, como tal. E então queremos definir nossa munição total atual para 0. Certo, então o que tudo isso está fazendo? Tudo bem, aí vem a matemática. Então fique comigo por um segundo aqui. Então temos o tamanho da revista. Digamos, vamos usar 30 é 30. Então nosso pente é 30 e nossa munição atual também é 30. Por enquanto, digamos que atiramos a rodada ou cinco tiros, disparamos cinco tiros. Então isso significa que este é 30 e este é 25. Subtrair isso, e então isso é igual a cinco. Se cinco for menor ou igual à munição total atual, então vamos fazer coisas diferentes. Portanto, esta munição total atual é um número muito grande. Então, mais frequentemente do que não, nós vamos fazer isso e eu vou apenas dizer corre quando houver munição reserva. Então, na maioria das vezes, esta função está indo ou isso não vai ser
verdade a maior parte do tempo porque nossa diferença de bala vai ser números relativamente baixos. O maior número que isso pode ser, como seria 30, 30 menos 0. Então o maior disco poderia ser, seria 30. Então isso só vai correr para o fundo se ficarmos sem reserva AMA. Ok, então vamos apenas seguir ao longo do verdadeiro ramo por enquanto. Então temos isso igual a 55 é menor ou igual a 244. Então vamos correr até aqui. E o tamanho do nosso carregador, que é 30, será definido como munição atual. Então, em outras palavras, isso se transforma em 25. Estamos ajustando de volta ao tamanho da nossa revista, que seria 30. E então vamos pegar nossa munição total atual, que é 244. Estamos subtraindo da diferença de bala, que neste caso eram cinco. Desligamos cinco rounds e estamos configurando isso como o novo total atual. Então isso seria 239. Então o que isso está fazendo é tomar, está atualizando o grande número. Então 12 neste caso seria a corrente e também o tamanho da revista. Então ele está levando esse número, ele está ajustando isso de volta para o tamanho da revista, que será sempre 12 neste caso. E então é apenas subtrair qualquer que seja a diferença da bala, quantas balas disparamos daquele back-end. Pequeno número 144. Agora, digamos que gostamos de ficar sem munição ou não temos muita munição na reserva. Neste caso. Nós só vamos fazer as contas. Então, vamos levar nossa munição atual. Vamos adicioná-lo ao total atual. Defina isso como nossa corrente porque não será mais igual ao tamanho da revista porque não terá uma revista cheia para nos devolver. E então ele vai definir o animal total atual para 0 porque nós não temos nenhum na reserva. Então isso vai funcionar quando a quantidade de reserva for menor que o carregador de munição. Então esta é a matemática que vai fazer quando há como quando você está correndo extremamente baixo e munição essencialmente. Tudo bem, legal. Agora vamos fazer algumas verificações diferentes. Então vamos criar uma nova função e vamos dizer é MAG, cheio ou vazio, assim, algo assim. E vamos tirar um galho daqui. E então vamos pegar nossa munição atual e o tamanho do carregador. E então vamos verificar se estes são iguais um ao outro. Porque não queremos recarregar a arma se o nosso pente estiver cheio. Então eu não sei se nós fomos e criamos isso ainda, mas em nosso personagem, vamos aqui e nós temos uma lata de recarregar? Nós não temos. Ok, então vamos criar uma lata recarregar. Isto deve ser um booleano. Eles já podiam estar. As cores são difíceis para mim. Ok, então vamos pegar nossa referência de jogador e vamos definir pode recarregar para ser falso. Porque não queremos recarregar. Então podemos dizer assim, a recarga do Abel. Se a revista estiver cheia ou as reservas estiverem vazias. Nós não queremos, nós realmente não colocar isso pode recarregar em qualquer lugar ainda, mas nós vamos eventualmente. E se for falso, não
seremos capazes de fazer esse evento de ação que vamos configurar. Tudo bem, e depois vamos para, queremos uma nota de retorno aqui. Então retornaremos o resultado disso. Podemos chamar esse termo de valor ou algo assim. E, em seguida, conecte o resultado disso lá. Então, vamos retornar o valor desta função. Se for falso, queremos tirar outro. Se quisermos dizer, vamos pegar nossa munição tonal atual e queremos ter
certeza ou verificar se isso é igual a 0. Certo, então se o nosso M0 total atual for igual a 0, ficamos sem munição de reserva. Então vamos dizer que não podemos recarregar. Não queremos. Não podemos. Não queremos recarregar nada. E não seremos capazes de recarregar se não tivermos nada na reserva, essencialmente. Então isso é como uma segurança extra aqui porque
haverá momentos em que como a munição atual e igual a um tamanho de carregador, certo? Você ficou sem balas em seu total atual. Isso é igual a 0, mas você tem 30 e 30. Então você não pode recarregar. Mas digamos que você tenha cinco balas restantes e na reserva. Então isso vai correr através do ramo falso. E então isso só garante que você ainda não pode recarregar porque você não quer ser capaz de puxar munição de, do nada essencialmente. Mas se você, se isso não for igual a 0, se estes não forem iguais um ao outro lado, isso não é igual a 0. Sei que isso pode ficar meio confuso. Cânone. Vamos definir pode recarregar novamente. E vamos dizer que sim, podemos recarregar. E então nós vamos devolver isso também assim. E então diremos que habilita a recarga. A revista está vazia, mas a munição é deixada na reserva. Então, sim, podemos recarregar se tivermos munição reserva. Tudo isso deve funcionar bem. Então há essa função bem ali. Tenho mais alguns para levar. Vamos criar outra função e dizer, temos M0? interrogação? Esta vai ser fácil. E isso é realmente menos com o recarregamento e apenas mais com o ser capaz de atirar argônio. Então vamos pegar nosso AMA atual. E vamos apenas dizer que é maior do que voltar. Vamos dizer que tem AML, é apenas o nome disso e retornar esse valor. Então tudo o que isso está fazendo é ocorre ou permite filmagens eventos para ocorrer se o jogador tem. Então, se nosso animal atual for igual a 0, não queremos ser capazes de atirar. Isso deve ser bem simples. Aquele. Ok. E depois queremos fazer mais uma verificação para ver se ainda há munição. Então vamos em frente e fazer isso agora. Então vamos criar mais uma função. Acho que este é o último. E chamaremos isso de munição deles. E vamos datilografar. Então HOD, e isso vai ser muito parecido com o último. Então vamos pegar a munição total atual desta vez, e vamos dizer maior que 0. E vamos retornar um booleano e dizer se há munição esquerda como aquele plugin que resultado assim irá retornar isso. E então este só vai dizer como cheques para ver se há munição nas reservas. Então você não vai querer ser capaz de recarregar se não houver munição e nossa reserva. Então isso vai retornar verdadeiro se nós, se a nossa corrente eu vou rotular é maior que 0. Ok? Então nós temos todas essas coisas feitas. Então agora todas essas funções são criadas. Então agora podemos começar a fazer algumas coisas e realmente fazer isso funcionar. Então vamos fazer isso. Tudo bem, então vamos voltar para a nossa função de começar a disparar na nossa base de armas. E, reconhecidamente, há muitos passos para isso. Então, vai levar um pouco de tempo até que essa coisa funcione totalmente, mas nossas funções estão configuradas no lugar. Então, quando filmarmos, uma coisa que queremos fazer é pegar a munição atual e subtrair uma delas e então definir isso como a nova bomba atual como essa. Então pareça algo assim. E podemos dizer que subtrai 1 bala ao disparar arma. Então isso é bem simples. Mas queremos que nosso jogo seja capaz de distinguir e recarregar automaticamente. Ficamos sem balas e também desabilitamos o tiroteio. Então vamos começar o nosso modo kernel novamente. E veremos menos ou igual a 0. A razão pela qual eu tenho um menor que e não apenas igual a zeros porque. É como um cofre extra que você pode ter lá. Só para o caso de algo estranho acontecer em suas balas ir para negativo. Ainda vai acabar com isso. E queremos criar um novo evento para
recarregar nossa arma automaticamente quando ficarmos sem munição. Então vamos para o nosso gráfico de eventos e criar este evento. E vamos criar um evento personalizado e vamos dizer auto, recarregar em vazio. Tudo bem, e então nós podemos voltar aqui e nós podemos ir para a verdade. Podemos dizer recarga automática em vazio. Então, está tudo pronto. Você pode destacar esta coisa e nós diremos que deve coincidir com ela. Carrega quando o carregador acabar. Algo assim. Funciona muito bem. Então agora podemos fazer isso. Então agora nosso objetivo é recarregar automaticamente e ficamos sem
munição e temos que configurar esse evento. Então vamos em frente e começar a fazer isso. Então, quando eu fiz isso, inicialmente, eu reconheço esse problema estranho que aconteceria. Então o que vamos fazer, não temos realmente recarregando animações e queremos ser capazes de configurá-las para momentos específicos. Então o que vamos acabar fazendo é que vamos ter
a arma puxada para fora da tela e depois voltar para cima. Uma coisa que eu percebi é que quando você atirar a última rodada do rifle sniper, em particular, a arma começa a ser puxada muito rapidamente onde seu tiro vai falhar essencialmente. Então sua mira será alinhada, você vai atirar. Mas a arma começará a se mover para baixo no segundo em que os parafusos atuais forem iguais a 0, modo que ele começará a ferrar você. Então temos que colocar um pouco de segurança extra para isso. Então vamos em frente e pegar o tipo de arma e dizer igual. E vamos verificar se estamos segurando o rifle cibernético e depois puxá-lo para dentro. Se você quiser fazer algo um pouco diferente. Se tivermos a espingarda, podemos dizer que o Snowbird causa problemas. Tão pateta assim. Estou colocando esses comentários aqui para vocês, para que possam olhar para trás,
para que entendam exatamente o que tudo isso está fazendo depois do fato. Então, se estamos usando o atirador, não
queremos destruí-lo, mas queremos atrasar. E tudo o que precisamos é de 0,3 segundos. E isso tornará menos perceptível. E então queremos fazer um evento de recarga. Mas mais uma vez, não criamos esse evento de recarga. Então vamos voltar para o nosso personagem e o nosso jogador. E vamos em frente e criar isso agora mesmo. Você sabe o que? Depois de ver isso, acho que vou guardar isso para outro vídeo. Então eu não quero fazer este para super longo porque esta próxima parte de recarga vai ser um pouco longo. Então eu vou dizer isso para o próximo. Então espero que você tenha gostado deste vídeo. Estamos avançando nesta série. E sim, eu espero que você esteja gostando e eu vou ver no próximo.
21. Funcionalidade reloading (parte 2): Olá a todos e bem-vindos de volta a outro vídeo. No último, começamos a adicionar funcionalidade de recarga aos nossos homens de jogo. Neste, vamos continuar com isso. Então vamos em frente e começar. Então, onde
pegamos, queremos criar um evento de recarga real em vez de nosso jogador para correr quando ficamos sem balas, quando estamos atirando nossa arma. E então vamos chamar esse evento de recarga muitas vezes diferentes. Então temos que entrar e criá-lo. Então vamos fazer um evento personalizado e chamar isso de recarga assim. Então, agora que pelo menos existe, podemos chamá-la ao mundo. Então eu vou voltar para a nossa base de armas. E eu vou pegar nosso jogador e eu vou dizer recarregar. Então, mesmo que não haja nada realmente dentro deste evento ainda, eu vou apenas ligá-lo. E depois vou querer fazer isto. Bem, não estamos segurando a espingarda de atirador. Queremos ser capazes de recarregar. E nós podemos entrar em caixas e dizer, sim, automaticamente chama evento reload ou algo assim. E vamos adicionar mais uma coisa a isso eventualmente. Mas, por enquanto, isso parece bom para mim. E ensinei que está subindo. Não é possível encontrar a função 0, compilar. Pense nisso tudo, consertou esse problema. Antes. Uma outra coisa que queremos fazer antes é terminar esse evento de incêndio porque nós, em nossa arma baseada, criamos algumas dessas funções antes, mas não as conectamos. E eles têm mais a ver com o disparo do que com a recarga real. Tudo bem, então, fora deste ramo verdadeiro, vamos fazer outra declaração “se”. E nós queremos pegar a arma atual e nós queremos chamar Se nós
temos munição e temos que mudar uma coisa muito rapidamente. Então, de volta à nossa base de armas, temos munição e a munição deles é deixada? O que vamos fazer é clicar no Peer. Vamos fazer essas funções puras. E ao torná-los puros funções aqui, eu vou fazer um NOP aqui, e então o outro será par. Então, se eu sair, temos munição? Veja como ele não tem mais um fio de execução. E diremos que é a munição deles. Então esta é uma função pura e isso é o que é conhecido como uma função não pura. Isso é como, assim como uma função normal seria como execução, fios de execução. Então, quando você faz isso assim, ele tipo de funciona mais como uma macro ou você pode simplesmente conectar isso diretamente e ele não precisa ter esses fios de execução brancos. Então nós queremos fazer os dois desde que estes estão apenas verificando como, você sabe, ele está apenas retornando verdadeiro ou falso com base em um par de variáveis. Vamos torná-los puros. Então, apenas como uma maneira diferente de fazer isso. Então, sim, vamos verificar antes de filmar. Vamos dizer que podemos filmar? Nós podemos. E nós vamos ser como, ok, bem, nós
temos munição? Se tivermos munição e nosso pente, então vamos em frente e vamos atirar, nossas armas, começar a atirar, que foi este evento aqui. Ou função, eu acho. Use essas palavras de forma intercambiável. Às vezes. Se não tivermos munição, então vamos verificar, temos M0 sobrando? Existe alguma munição? Ok. Se ainda tivermos munição, vamos chamar isso de recarregar este evento. Se não o fizermos, então vamos tocar um som 2D. E há uma chamada “Fogo Seco”. E estes podem ser vangloriados para. Vamos apenas colocar em fogo seco um por enquanto. Tudo bem. E então podemos dizer que recarrega a arma se houver munição reservada. Sim. Eu ia falar sobre o firewall da DRI ou um lugar parecido com a Terra. Então este fogo seco é exatamente como se você tem literalmente 00:00 AM uma esquerda, ele vai fazer isso. Então este é como se o último lugar onde pode ir é aqui. Porque lembre-se, se você se lembra, há MLF está verificando se temos munição totalmente, assim como em geral na reserva. Então, se tivermos munição, se nossa munição atual for maior que isso, então podemos atirar nossa arma. Mas se esse número for igual a 0, não
há balas no nosso pente, mas ainda temos reservas. Vai recarregar. Se não tivermos munição, nosso primeiro grande número é igual a 0, nossas balas atuais. E a menor, nossas reservas, então será como se você não tivesse nenhum modus operandi, à esquerda, ponto final. A vida é uma droga para você. Vai procurar mais. Tudo bem? Agora o que vamos fazer é fazer este evento de recarga e isto vai ser bastante longo. Então eu vou arrastar isso para baixo e Sue algum espaço aberto, arrastar um fio. E como sempre, queremos fazer uma verificação. E eu vou armazenar isso em uma macro e dizer, podemos recarregar? Normalmente eu uso macros quando eu tenho vários booleanos que eu quero verificar ao mesmo tempo exato. Normalmente, quando eu uso como um AND ou um OR. A primeira coisa que vamos ser, não vamos recarregar? E temos de trocar de armas. E não trocar de arma. E nós vamos dizer ou aqui. E então retorne esse valor. Mostre o que esta macro está dizendo. Será verdade se não recarregarmos ou não trocarmos armas. Então eu não quero ser capaz de recarregar se já estamos recarregando ou se estamos no meio de trocar armas. E trocar de armas só dura 0,3 segundos. É uma animação muito rápida, mas eu não quero interromper isso estranhamente porque isso seria estranho. Então vamos arrastar podemos recarregar e ligar essa macro? Tudo bem, e então fora do ramo verdadeiro, então não estamos recarregando estão prontos, não
estamos trocando armas. Vamos fazer três coisas diferentes. Então nós temos está recarregando? Queremos que isso seja verdade. Pode atirar. Queremos definir isso para ser falso. Não queremos ser capazes de filmar enquanto estamos fazendo isso. E está mirando. Também falso? Não quero ser capaz de mirar mais. Estamos a fazer isto. A outra coisa que queremos verificar é que queremos correr. E diremos que não. E vamos dizer “Branch”. E vamos verificar. Se não estivermos correndo enquanto estamos fazendo isso. Então queremos obter o Componente Movimento de Personagens. Queremos definir a nossa velocidade máxima de caminhada para qualquer que seja a nossa velocidade máxima de caminhada, eu defini-a para 750. Então o que isso está fazendo aqui
é isso está acelerando o jogador se eles recarregam enquanto estão mirando. Então o que vamos fazer eventualmente é quando apontarmos para locais de nossa arma, nosso personagem vai abrandar. Eles não se moverão a 750 velocidade. Então, se não estamos correndo atualmente, queremos apenas redefinir. Isso é apenas redefinir nossa velocidade de volta ao padrão. Tudo bem, e então vamos lidar com isso depois. Essa é uma específica que vamos fazer para espingardas. Porque as armas de tiro queremos que recarregue funcionem um pouco diferente porque são pellets individuais. Tudo bem, agora vamos puxar uma linha do tempo e vamos chamar esta arma o que puxou para baixo. E vamos tocar isto desde o início todas as vezes. Vamos abrir em uma pista flutuante. Vamos chamar isso de pull-down. Quero que isto dure até cinco segundos. Vamos adicionar dois quadros-chave. O primeiro B no tempo 0, valor de 0. O segundo será no tempo 0,5 e um valor de um. Então, vai ficar assim. O que queremos fazer é fazer estes carros. Então é um pouco mais suave assim. Tudo bem, novamente, você não quer que isso entre em loop ou qualquer coisa. Feche o tom fora disso e mantenha isso aberto. Ok. Então, fora das atualizações, queremos verificar se estamos recarregando e ele está saindo da atualização se ele já não mencionou isso. Então eles são atualizar se estamos recarregando, então nós queremos realmente promover isso para uma variável e vamos chamar isso de timer pull down. Então, estamos basicamente apenas definindo que 0.5 como uma variável e apenas certificando-se de que estamos recarregando enquanto isso está acontecendo. Quando isto acabar. Então ele termina que 0,5 segundos, nós vamos atingir um atraso. Neste atraso vai ser promovido em. Isto vai ser conhecido como recarregar. Oh, na verdade, pegue o que disse. Não coloque em tempo real aqui. Vamos para a base de armas e vamos fazer tempo de recarga. Porque queremos ser capazes de aplicar essa variável aos nossos blueprints filhos. Então faça disso um carro alegórico e então vamos pegar a arma atual. As armas atuais recarregam o tempo. Não é o que queremos. Ok. E vamos definir isso como o atraso. Como isso. E você pode tornar esse tempo padrão como 1,5 segundos ou o que quiser. Esse será o seu tempo de recarga padrão. Quando isto acabar, queremos fazer outra linha do tempo e vamos chamar esta arma para cima. Vai puxar a nossa arma. Então isso vai mover nossa arma para baixo. E ele vai puxar a nossa arma de volta para cima? Queremos que isto sempre jogue desde o início. Você mantém o controle pressionado e agarrou a nota se você não estiver familiarizado como fazer isso. Ok. E isso vai ser exatamente o oposto dos outros. Então vamos chamar isso de puxar para cima. E dois quadros-chave, 0,5 segundos. Este vai ser vezes 0 valor de um. O segundo será o tempo de 0,5 e o valor de 0, será o inverso do outro. E nós estamos indo para auto, fazer isso também. Então ele está se movendo desse outro valor, o 100 por cento de si mesmo. E voltando para o original, Cool, Legal, Estamos movendo-se aqui fora do, vamos pegar isso e pegar mais dois deles e puxar isso para fora das atualizações, bem como para fora do acabado, apenas para ter certeza que ainda estamos recarregando. E então isso vai ser que podemos colocar o cronômetro aqui novamente, assim. Você não precisa fazer isso. Mesmo que tenha sido puxado para baixo, o temporizador ainda funciona para eles. Puxe para cima, está tudo bem. E aqui está o que queremos fazer. Agora. Queremos pegar nossa arma atual novamente e recarregar o cálculo. Então você se lembra que isso é o que está fazendo as contas. Matemática para balas. Abra isso. Esta é esta função. Então está fazendo as contas para nós. E está fazendo isso quando
terminamos de puxar a arma para baixo, puxando-a de volta para cima. E então tudo o que precisamos fazer é recarregar e definir isso como falso. Não estamos recarregando mais. E tomar pode atirar e dizer, sim, você pode atirar sua arma agora. Então isso é tudo o que está fazendo aqui. E então, para alguns pedacinhos de talento aqui, podemos ir para nossa base de armas e adicionar uma variável e vamos chamar isso de recarga de som inicial. E vamos fazer este tipo de som. Queremos fazer disso um sinal de som? Acho que depende de onde encaixamos isso como certo. Deixe-me apenas verificar rapidamente o que eu fiz isso antes de minhas anotações e eu vou voltar em um segundo e que tipo de variável que eu fiz. Ok, então eu realmente fiz isso é onda sonora. Então onda sonora, referência de objeto, recarregar, iniciar som. E então faremos uma recarga e som. Meu Deus, não quero esse apóstrofo. Tudo bem, e assim estes podem ser encaixados como qualquer coisa. Então agora de volta ao nosso jogador aqui, fora de, para este cronômetro puxar para baixo, vamos fazê-lo. Faça um nó uma vez, assim. E então vamos tocar um som 2D, terá que o som seria a arma atual. E obter o som recarregado e conectá-lo como o som assim. Sinta-se livre para mudar o volume. Como você gosta? Então teremos um nó de atraso. Teremos seu atraso por um segundo. E então vamos redefinir o nosso du uma vez. A razão pela qual estamos fazendo isso assim é apenas para garantir que o som não seja tocado mais de uma vez. Porque como às vezes você pode ser pego e esses temporizadores e fazer este tipo de spam realmente estranho som, que é apenas muito estranho cada vez. E depois sair de então caudas é fazê-lo fora daqui. Vamos tocar som. 2D, enrola-se. E temos o som de recarga inicial. E então faça assim. Certo, então aqui estão os nossos eventos de recarga terminados assim. Vamos recarregar, vamos nos certificar de que não estamos trocando uma arma ou estamos recarregando atualmente. Vai ficar bem como este spam. E vamos dizer que estamos recarregando, não
podemos atirar, não podemos mirar. Vamos pôr as nossas caminhadas de volta ao normal, vamos tocar um som. Então vamos executar esta pequena animação que será configurada em um vídeo futuro. Vamos ligar isso no nosso Plano de Animação. Então vamos fazer isso para, vamos manter a arma lá embaixo para o tempo de recarga. Sempre que encaixarmos isso, ele puxará a arma de volta. Faremos as contas para nossas balas. E então diremos que não estamos recarregando mais. Podemos filmar e depois tocaremos esse som. Tudo bem, então isso funciona. Ótima. Podemos comentar caixa como esta seção ou algo assim e vamos dizer controles. Animações para nós vamos apenas dizer para recarregar, ser genérico sobre isso. Como isso. Apenas como as costas comuns, certas partes do script que é como não realmente pode não saber o que ele faz ou algo assim. Então, sim, tudo parece bom. Só temos mais uma coisa a fazer. Então vamos fazer isso agora vamos para as configurações do nosso projeto. E vamos realmente criar uma entrada para esse mapeamento de ação. Chame de recarga, e faça com que ligue à tecla R. Típicas coisas de tiro em primeira pessoa. Em seguida, em nossos mapeamentos de ação do jogador, Vamos ir em frente e ir por baixo, recarregar, ver, o evento de ação recarregar. E vamos fazer algumas coisas aqui. Então vamos pegar a carga como de costume e ligá-lo. Então só queremos ser capazes de fazer isso se realmente tivermos uma arma para prevenir insetos. Porque se eu acertar R e não tiver uma arma, vai ficar confuso. Então vamos pegar a arma atual. Aqui é onde algumas das nossas funções vão entrar em vigor, é um carregador, cheio ou vazio. E se você é um membro como arma, se você se lembra, nós temos um valor de retorno. Então a nossa revista está cheia ou vazia? Está a fazer isto. Virando. Esta variável pode recarregar e desligar. Então, se pudermos recarregar, a próxima coisa que queremos verificar é, estamos correndo? Lá vamos nós. Se tentarmos recarregar e estamos correndo, então queremos chamar o movimento parado. Se você se lembra, isso atrasa nosso personagem de volta ao normal e inicia a regeneração de nossa resistência para não correr. Então retiraremos outro ramo e colocaremos os movimentos parados. Vamos executar esse evento, então vamos continuar por ali. Então vamos pegar a arma atual. E queremos verificar se estamos atualmente,
uh, nós ainda não criamos isso, não é? Hm, ok, bem, vamos fazer isso então. Então vamos criar uma nova variável em nossa bacia de armas. Chamá-lo está atirando, torná-lo um baleen. Tudo bem, e então eu quero, quero fazer uma nova função. Esta vai ser a função mais patética que já viste na tua vida. Mas vamos chamar isso de parar de atirar. E tudo o que vamos fazer para parar de atirar é pegar fogo e torná-lo falso assim. Literalmente, é isso. E então, dentro do nosso começo a disparar para fora deste traço de linha só por enquanto. Vamos fazer, disparar é verdade assim. Então, agora de volta ao nosso jogador, vamos começar a disparar. Então estamos atirando. Ele puxou um cérebro. Mas nós já fizemos. Desajeitado. Ok. Então, se tentarmos recarregar enquanto disparamos nossa arma, não queremos continuar atirando enquanto recarregamos, porque então a matemática vai ficar muito confusa. Estamos segurando o gatilho da arma automática ou balas atuais estão caindo, mas também está tentando fazer as contas. Então queremos ser, queremos parar de atirar assim. E, em seguida, vamos adicionar a chamada falsa, recarregar e, em seguida, arrastá-lo para dentro assim. Então, se formos sim, então o excesso de disparos vai parar de disparar antes de recarregar. Se não estamos atirando, então ele só vai recarregar. Então, podemos dizer que parou de filmar durante a recarga. Então, há um monte de coisas estranhas que você é como, oh, atirar toda a minha arma para estar disparando enquanto eu estou tentando recarregá-lo. Mas essas são as coisas quando seu roteiro e você tem que pensar em tudo. Então temos o quê? Pensando em tudo nesta aula, eu tenho que cobrir. A próxima coisa a fazer é seguir em suas armas crianças. E você pode encaixar alguns sons para a recarga, início e fim. E então você pode definir um tempo de recarga. E, em
seguida, certifique-se que o tamanho da sua revista não é 30, o que é o padrão. Coloque-o para o que você tem é sua munição atual. E então se você entrar e jogar, você verá que se eu pegar a pistola, por exemplo, e eu atirar munição TCR está caindo. Se eu apertar a tecla R, ele está recarregando e se eu tentar atirar, ele não vai me deixar até que ele volte para 12 e eu posso atirar. Então se eu deixar isso voltar para 0 e eu estou tentando filmar para que me deixar ele está recarregando automaticamente e ele fez toda essa matemática para mim assim. E então se eu fosse fazer algo como, vamos ver, eu defini isso para 24. Deixe-me definir para ser 12 ou algo assim. Então, se eu vier aqui, você tem uma pistola e eu estou atirando e eu estou ficando sem munição. Então está recarregando bem ali. Agora, se eu tentar recarregar, ele não está me deixando recarregar porque eu tenho 0 e o pára-quedas reserva não me deixa recarregar. Ainda não. E então eu não sei, eu não posso recarregar nada. Acho que a única coisa que aconteceu foi onde ele tocou o som de recarga. Mas isso seria uma solução rápida e fácil que podemos implementar. Fazendo um cheque como esse é a munição deles. Poderíamos adicionar um ramo ou algo assim aqui e ali fazendo isso. Mas sim, isso deve ser bem fácil de colocar lá e fazer. Interessante. Sim. Ok. Bem, eu vou resolver isso e eu vou voltar para você sobre isso para encontrar algo que funcione. Mas sim, isso é recarregar. Em poucas palavras. Tudo funciona. É lindo. Então, obrigado por assistir. Vejo você no próximo.
22. Animação de Reloading: Olá a todos e bem-vindos de volta a outro vídeo. Neste, vamos continuar com nossa funcionalidade de recarga em ser capazes de realmente animar ou arma. Então, entre os vídeos, eu fiz algumas coisas que espero que você também tenha feito. Se não, tire algum tempo para fazer isso agora. Então entrei em cada arma e eu defini sons diferentes são usados, os mais baixos e os raios, eu sinto que eles soam melhor
do que aqueles parte deste pacote que são realmente chamados de recarga, mas isso depende de você. Na verdade, altere a propagação da bala nesses um pouco. Estes só importam. Na verdade. Na verdade, importa. E outras armas iam dizer que só importa no escaneamento 12. Não importa em todos eles. Eu disse um tempo de recarga e, em seguida, eu me certifiquei de que o tamanho da revista na Emma atual eram a mesma coisa. Então, agora, se entrarmos no jogo e pegarmos uma arma, atirem, recarreguem. Sons diferentes e tudo mais. Sim, você entendeu a idéia. Uma coisa que eu queria mostrar, então lembre-se em um vídeo anterior eu falei sobre como quando
corremos, queremos fazer algo enquanto tentamos correr, para solucionar problemas enquanto estamos filmando. E vou demonstrar isso agora. Então não há parafusos saindo. Mas VC, se eu estiver correndo e atirando, a arma está apontada para a esquerda, mas ainda está atirando direito. Então isso é uma coisa que queremos consertar. Então, se entrarmos no jogador e entrarmos por baixo, tem uma arma, o que fizemos antes de criarmos essa função de parar de atirar. Então vamos em frente. Coloquei alguns desses em categorias. Acho que fiz uma chamada arma, a arma atual e fizemos aquela função de parar de atirar da última vez. Conecte isso lá e depois conecte isso no jogo. Como tal. E então eu poderia redirecionar para tudo isso
e movê-lo um pouco. Isso talvez. Certo, então agora paramos de atirar. Eu não acho que isso pode não ser todos os passos para isso. Não foi oh, acho que sei porquê. Espere um segundo. Sim. Então uma outra coisa que precisamos fazer é entrar em nossos mapeamentos de ação em nosso player e realmente adicionar um pouco mais a isso. Então vamos em frente e começar copiando colando isso. Queremos adicionar algo sobre o lançado apenas em geral. Mas fora deste começo, vou quebrar esta dica por enquanto. Então, se tivermos uma arma, queremos fazer algumas verificações diferentes. A primeira é, vamos ter que criar uma nova variável para isso e dizer que é o carregamento de armas. Isto é algo que vamos acrescentar mais tarde. Não vamos fazer isso, então saímos do ramo verdadeiro. Isto vai permitir-nos. Então, se você entrar no jogo agora, pode não funcionar este plug-in. Por isso, se repararem agora, podemos disparar esta arma o mais rápido que pudermos clicar. E a mesma coisa acontece com a espingarda de atirador. E a mesma coisa vale para a granada. Queremos que estes tenham taxas de disparo
reais para que esta variável esteja controlando isso mais tarde. Para ter certeza de que não podemos apenas atirar spam em cada um deles. Mas então queremos verificar se estamos correndo, alugando. Se estamos correndo, então a primeira coisa que queremos fazer é parar o movimento, e então podemos disparar. Não vamos correr, vamos apenas atirar. Então. Vamos fazer isso quando lançarmos isso é principalmente para armas automáticas será segurar o gatilho para Isso é principalmente o que o tiro parar. O que isso é principalmente para parar de filmar, mas podemos apenas copiar e colar isso. Arraste-o para baixo. E se tivermos uma arma, então pararemos de atirar em coisas. Ela não faz muita coisa. Eles são principalmente apenas obras para armas automáticas são armas automáticas, mas agora se acontecer com o jogo, isso deve funcionar. Agora, eu estou correndo e então eu atiro. Você pode ver como minha arma está voltada para a frente e minha velocidade de movimento é redefinida para o normal. Tudo bem. Então agora isso é tudo fixo, bem e bom. Então, sim. Agora o que podemos fazer é entrar no plano de animação do nosso personagem. Podemos animar isso. Então vamos para o nosso gráfico de eventos e vamos querer criar mais
algumas dessas referências aqui. Então vamos criar um chamado “pull down timer” do tipo. E vamos chamar um é. E carregando um booleano. E assim como antes com esses outros, queremos pegar o jogador e queremos obter essa variável para puxar para baixo o temporizador. E queremos definir isso como o temporizador de puxar para baixo. Aqui. Lembra-se que criamos este temporizador. Nós definimos isso aqui, definimos isso como uma variável aqui, e então definimos isso como a mesma variável aqui. Vou fazer isto mais longo. Então eu vou colocar os dois na mesma caixa. Ok. Então vamos em frente e também começar é que vamos definir estes recarregando, aquele a partir daqui. E pegaremos o jogador de novo. E começar está recarregando assim. Ok, então agora temos essas variáveis sincronizadas do nosso player para o nosso Anime Blueprint. Agora podemos voltar ao nosso gráfico de animação. E então temos uma pose de arma. Então vamos excluir a pose da arma da saída porque vamos ter que usar isso agora. Então vamos em frente e pegar uma pose de arma assim. E vamos transformar o osso de novo. Queremos apenas fazer rotação. Sim. Sim, sim. Então queremos subexpor a escala. Vamos manter a tradução e a rotação. E vamos dividir os dois assim. Então nós temos um nó que se parece com isso. Isso vai adicionar como um local os componentes automaticamente. Ok, e então vamos em frente e pegar uma pose de arma de novo. E queremos misturar poses por um bool. E então isso vai se encaixar em uma nova pose de dinheiro. E vamos chamar isso de muito Eu vou posar, eu sou apenas o que os nomes aleatórios neste momento. E então teremos carga para fora posar a saída. Então, só para passar por um passo extra aqui, queremos que isso se conecte. Um falso será um pouco. Então a pose da arma será verdadeira, correta. Então vamos pegar está recarregando e dizer não recarregar. Ok. Então, se não estamos recarregando, então estamos apenas tomando menos essencialmente, que é o que as inovações que temos usado. Mas se estivermos recarregando que queremos transformar, modificar um osso, nosso valor alfa será nosso temporizador. modo que 0,5 segundos de passar de 0 para um e, em seguida, um de volta para 0. E nós vamos traduzir no y de cinco rotacionar papel e o x. que deve ser isso. Oh, nós realmente temos que querer fazer espinha, espinha 1. Então removendo a coisa toda para baixo. Então ainda não é como eu. Oh, vamos nos certificar de que nós adicionamos a existente para ambos. Esse era o problema. Ok, legal. Então agora podemos comentar caixa isso e vamos dizer que ele se move para baixo, bem recarregando. E ele vai mantê-lo lá embaixo até que nosso temporizador de recarga se esgote, que é dinamicamente definido por nós no tempo de recarga variável. Então é assim que isso está parecendo. Agora, se entrarmos aqui e eu pegar minha arma e atirar algumas vezes e depois recarregar,
mover para baixo, trazê-la de volta para cima. E eu estou batendo no nosso agora tentando recarregar. Não é fazer aquela animação, não é filmar. Eu fico sem munição estudante automaticamente. No fundo. Lá vamos nós. Isso funciona perfeitamente. Então agora temos um sistema de recarga completo em nosso jogo. Está fazendo todas as contas. É animadora, fazer as coisas automaticamente para nós quando acabamos. Não nos permite atirar em uma mira e podemos até citar em geral agora, mas não nos permitirá fazer certas coisas. Sim. Não vejo nenhum problema com isso agora. Eu acho que tudo está funcionando bem, então sim, na próxima série de vídeos, vamos continuar adicionando algumas funcionalidades ou armas e personalizando-as e fazendo algumas coisas legais. Então espero vê-lo lá.
23. Fotografar a pistola: Olá a todos e bem-vindos de volta a outro vídeo
neste, este provavelmente vai ser o mais curto ainda. Acho que vamos ver porque vamos ser capazes de disparar o nosso pistilo. Ali. Vamos começar a montar essas armas com coisas legais. Então vamos para nossa pasta de armas e vamos realmente abrir a arma de pistola. Abra o editor de blueprint completo. E podemos excluir esses nós. Agora você deve ter em seu visor, sua pistola bem aqui como sua malha de arma. E você pode definir a quantidade de coleta de pistola, a munição atual, e algumas dessas coisas. Mas o que queremos fazer, só queremos fazer duas coisas muito fáceis. Queríamos conseguir um evento. Comece a atirar. Nós clicar com o botão direito sobre isso e nós vamos adicionar chamar a função pai assim. Então estamos criando, estamos ligando esse evento para o que existe no pai aqui. Quando atirarmos nesta arma em particular, queremos, vamos realmente pegar a malha da arma. E vamos dizer Play Animation, a animação que queremos reproduzir. Então essas armas vieram com animações. Há uma chamada Pistola de Fogo W. Você pode navegar até isso e abrir isso. Então temos esse barulho. Há um pouco estranho, mas temos um pequeno flash focinho que você vê o martelo se movendo assim. Então isso é animação vai jogar assim. E então queremos que os eventos recarreguem peso. E não temos que fazer isso. E depois recarregue o cálculo. Vamos fazer isso só para ter certeza de que funciona com esta arma como pretendido. Podemos não precisar fazer isso assim, mas vou adicionar para ser seguro. Então, agora, se entrarmos e jogarmos, pegamos nosso pistilo. Vamos atirar. Agora podemos realmente atirar a arma. E parece que está atirando. Parece que deve ser notado. Você pode ver como essas balas são como agora aterrissando perfeitamente os radicais. E isso é porque a nossa bala se espalhou assim. Se eu voltasse aqui e fosse para a propagação de
balas e estivesse em 250 cidadãos de IA do que 750, como algo realmente grande. Só para demonstrar isso, amarelos estão pousando por todo o lado. Quero que minha pistola seja bem precisa. Eles são. É assim que se deve o PESTEL. É tudo o que temos de fazer neste vídeo. Então, no próximo, vamos adicionar um pouco mais à base de armas e adicionar algum recuo. Farei isso. E então vamos começar a ser capazes de atirar no resto das armas, que são reconhecidamente todas vão ser mais complicadas do que esta pistola. Mas este foi para te mostrar como se faz. Então, obrigado por assistir. Verei no próximo.
24. Adição realista: Olá a todos e bem-vindos de volta a outro vídeo. Neste vídeo, vamos adicionar
recuo às nossas armas para dar-lhes um pouco de arma,
chute, atirá-las verticalmente no ar enquanto estamos filmando, apenas para fazê-las se sentirem um pouco mais realistas. Então vamos em frente e fazer isso. Vamos querer entrar em nossa base de armas, que eu já abri aparentemente. E vamos fazer isso dentro do nosso gráfico de eventos. Então vamos arranjar um espaço aberto. E vamos criar três eventos personalizados. Um chamado Start Recoil. Vamos ter um chamado stop recuo e outro chamado reset recuo. Então este vai fazer a arma chutar para cima. Isso não vai impedir que isso aconteça e este vai
mover a arma de volta para nós. Para tornar o jogo um pouco mais agradável para nós. Ser capaz de realizar isso. Temos que usar uma linha do tempo. Então vamos chamar isso de recuo. - Claro. Isso sempre vai jogar desde o início. Este recuo de parada vai ser parado e reiniciado. Vai ser em sentido inverso. E podemos realmente chamar este recuo reverso para
torná-lo mais consistente com os nomes da linha do tempo para você assim. Vamos em frente e abrir esta linha do tempo. Isto vai ser muito, muito rápido. Este aqui, vai ser uma pista flutuante, ele, construir o nome dele. Este alfa vai ser o ponto 1, 0 segundos de duração. E então neste realmente curto, então nós queremos ter três quadros-chave. Você definirá um de Tempo 0 e o valor de 0. O segundo vai ser o tempo de 0,02 em um valor de um. E, em seguida, este vai ser tempo 0,1 no valor 0. E como de costume, vamos definir estes para serem automáticos para sua interpolação de chaves. Então é assim que a nossa linha do tempo deve ser. Nós não precisamos de um loop ou fazer qualquer outra coisa para que possamos fechá-lo assim. A próxima coisa que queremos fazer é sair dessa direção. Esta é uma enumeração que saiu automaticamente desta linha de tempo. Nós não fizemos isso nós mesmos e vamos ligá-lo. Depois, fora da atualização, queremos fazer isso. E então isso está recebendo uma direção de frente ou para trás, ou para frente ou para trás. Ok, fora da nossa linha do tempo, vamos em frente e pegar o personagem do jogador. E queremos adicionar entrada de passo do controlador. Certo, então para a frente, queremos que isso entre no campo. E para trás também queremos que isso entre no campo. Vamos definir os valores de velocidade diferentes. Então vamos arrastar para fora daqui. E vamos lembrar que alerta é interpolação linear. Então está se movendo de A para B sobre Alfa. Então ele está indo de A para B sobre Alfa é como um certo período de tempo. Assim como você pode aprender dois números diferentes ou trabalhou com cores. Então, se você tem um é como azul e B é vermelho, pode loop sobre como 1 segundo e ele vai, em vez de como piscar, ele vai tipo de desaparecer de uma cor para a próxima. Então, há maneiras diferentes de usá-las. Então alfa vai ser o nosso valor alfa, que vai acabar sendo 0,1 segundos. A vai ser deixado em 0 e B vai ser promovido a uma variável. E chamaremos isso de pontapé de arma. Isso vai ser como o quanto nossa arma realmente chuta no ar a cada 0,1 segundos. Então, se compilarmos isso, oh Deus. Vamos apenas definir isso para ser negativo 0,05 por padrão. Então, não muito. Em seguida, este valor de retorno vai ser esses valores. Só para este, para trás, vamos multiplicá-lo por um negativo. Então, ou sim, eu disse negativo, só não digitei. Queria ser o inverso para trás assim. E precisamos de um plug que no alvo porque um ou outro que estava me dando um erro. Tudo bem, então isso parece bom. Vamos em frente e eu só vou pegar para o personagem jogador outra referência a ele. E, em seguida, fora daqui, vamos adicionar controlador, sua entrada. Então vamos fazer isso subir e descer. Nós também vamos fazer uma espécie de chocalho da esquerda para a direita um pouco. Em para este valor. Vamos em frente e obter um flutuador aleatório ao alcance. E vamos fazer isto. Ponto negativo 15 para pontos positivos 15, assim. Você pode se sentir livre para aumentar ou diminuir, mudar esses números para onde quiser, testando-o e tornando-o ao seu gosto. Agora, quando terminarmos esta linha do tempo, vamos querer reverter o recuo. Então vamos reverter isso. Vamos enviá-lo de volta. Como isso. Recebe que o realmente não me ajudou muito. Aquele nó de redireccionamento parece bem. Vamos reverter isso. Então vamos ter uma leitura que o Trigger vai atrasar. A diferença entre um atraso em um atraso recuperável é que ele diz isso aqui. Execute uma ação com um atraso recuperável, chamando ação enquanto ele está contagem regressiva, vamos redefinir a contagem regressiva para a duração. Então a razão pela qual queremos ler um gatilho duplo aqui é porque se estamos revertendo, certo, e este temporizador está caindo, e ainda está contando e começamos a atirar novamente. Queremos que esse atraso volte a ser o que era antes. E queremos começar a voltar para cima. Selecione, queremos ir como boom, e então ele vai começar a voltar e nós atirar novamente. Queríamos e conseguíamos fazer isso. Então sim, ele pode ser lido acionado e então nós queremos parar ou recuar após 0,05 segundos. Então este é um tempo muito, muito curto. Vamos em frente e comentar caixas, coisa toda. E diremos que acrescenta efeito de recuo a armas como essa. A última coisa que precisamos fazer é começar o evento do recuo. Isso vai ser para começar a filmar. Então, depois de calcularmos o traço da linha, vamos apenas dizer começar o recuo assim. E então diremos que está atirando assim. Então agora podemos não ser capazes de notar isso muito, mas devemos ver um pouco de, eu acho, movimento de tela. Se eu simplesmente não mover o mouse com o botão direito do mouse, veja que ele está balançando um pouco a tela. Está subindo se eu fizer isso. Então vá para a pistola e vamos fazer disso um número ridículo como negativo faz você tentar se lembrar se os negativos pioram ou melhoram e veja. - Sim. Então, como dois negativos talvez tenha um pouco ridículo demais. Sim, eu vejo isso. Balde como um Bronco. Então negativo seria muito como negativo 1 ou pode ser como o seu tipo lançador de foguetes de recuo. Como se eu fosse, eu não vou mover o mouse e ele vai clicar. Isso é o quanto ele está se movendo assim. Então 0,05 para como uma pistola é muito bom, só tem um pouco de recuo para ele porque você pode atirar tão rápido. Como isso. Veja, sim, você pode se sentir livre. E nós, nós não podemos realmente atirar essas armas ainda. Então pode ser algo para fazer mais tarde. Mas eu vou adicionar este chute de arma em nossos dados de armas. Sim, então essa é outra variável que pode ser
definida dinamicamente dependendo de qualquer arma. Acho que a espingarda automática foi igual a 0,1 negativo. De modo que para lhe dar um exemplo. Então, sim, então essa lembrança vai acontecer quer você esteja mirando ou não. Então isso é que eu tenho recuo, não super louco complexo onde faz adicionar algum passo em entradas guinadas em nossa tela quando nós atirar a arma. Então espero que vocês tenham gostado deste vídeo, achado útil, achado informativo. E vejo-te no próximo.
25. Fotografar o Rifle de Assalto: Todos e bem-vindos de volta a outro vídeo. Este provavelmente vai ser o favorito de muitas pessoas, o que eles estavam esperando. Porque vamos ser capazes de disparar o nosso carro ou rifles de assalto, rifle ou o que quer que lhe queiram chamar. Vamos atirar em uma arma automática e você
seguraria o gatilho e ele só vai bam, bam, bam, bam, bam, bam, bam. Ok. Sei que é isso que todos querem ver. Então estamos fazendo isso aqui neste vídeo. Assim, na verdade, é muito simples de fazer. Vamos em frente e abrir a nossa espingarda automática. E podemos verificar nossos sons e eu vou fazer nossa bala se espalhar como 100, algo em tempo real e 0,5 aquele soquete, isso e aquilo e todas essas coisas. Você sempre pode editar isso apenas rolando por aqui com este viewport selecionado ou deve ter a arma. Mas agora o que vamos fazer é criar um roteiro. Assim como antes com a pistola, queremos começar o evento a disparar. E queremos adicionar chamada para a função pai. Mas nós não queremos realmente conectar isso imediatamente. Vamos criar uma nova variável específica para este blueprint. E vamos dizer que é um tiro de rifle automático? Está atirando? Isto vai verificar se a nossa espingarda está a disparar porque é automática. É só uma forma extra de verificar. Então, nos eventos começarem a filmar, vamos definir esse booleano para ser verdade. E nós queremos, queremos fazer é criar um evento personalizado e vamos chamá-lo de disparo de rifle automático. E o que vamos fazer é chamar esse evento de disparo automático de rifle. E então o que queremos fazer aqui é definir um evento temporizador. E este temporizador, o evento neste temporizador vai ser este que acabamos de criar bem aqui. Como tal. Nós queremos fazer isso um loop e vamos promover desta vez a uma variável, e vamos chamar isso de taxa de disparo de rifle automático. Então você pode definir isso para ser o que você pessoalmente gostaria que fosse. Diz o quão rápido o seu rifle vai disparar. Eu vou fazer 0,1. Quanto menor for, mais rápido vai. Então 0,05 será duas vezes mais rápido que isso. Se você fizesse como um segundo, seria como boom, boom, boom, boom, boom, boom. Mas se foi como 0,1, vai ser como, você sabe, ele vai estar fazendo esse tipo de efeito. Então, para o disparo de rifle automático, uma coisa que queremos verificar é o nosso disparo de rifle automático.
Termine de atirar. E isso é o que vamos chamar nossa função pai para começar a filmar. Então vamos ligar isso assim. Certo, então agora temos o evento dos pais acontecendo. E queremos tocar uma animação em nossa malha de armas. Ele pegou automaticamente para nós. Muito gentil. E então essa animação é chamada de fuzil de fogo. Certo, agora saindo daqui,
quero criar um tipo adicional de cheque para nós. Certo, agora saindo daqui, Então vamos em frente e pegar balas atuais. Ou corrente é munição? Obter AMA atual. E vamos dizer, isso é menor ou igual a 0? A razão pela qual estou fazendo uma checagem dupla é porque com o disparo automático, descobri que às vezes ele pode continuar atirando por qualquer motivo. Mesmo que tenhamos isso. Este mesmo tipo de função em execução no pai, ele ainda é às vezes ficar preso. Então há uma maneira extra de dizer que vamos parar de filmar. E então nós vamos, Eu tenho referência jogador que vem de nosso pai e dizer recarregar. Só para ter certeza que faz isso, o que tem feito isso. Mas às vezes você pode dar um passo extra porque às vezes ele pode ser pego nessa coisa certa do fogo. A próxima coisa que queremos fazer é fazer um evento parar de filmar, que também é do pai, que apenas transforma essa variável em falsa. Vamos fazer isso falso. E então o que vamos fazer é nos arrastar para fora do nosso temporizador e vamos dizer temporizador claro e invalidado. Eu cuido e não quero que eles estejam conectando um para se conectar assim. Sim, é meio que em um lugar ruim seja qual for a maneira que você corta,
mas oh, bem, que seja. Então, o que isso está fazendo terá esse evento em que começaremos a filmar. E vamos executar este evento que configura um temporizador. E está executando esse evento de filmagem dos pais que montamos a cada 0,1 segundos ou o que quer que definamos o SAS, está puxando aquela animação. Toda vez. Se ficarmos sem munição, vamos parar de recarregar. E quando soltarmos o botão do gatilho, paramos de atirar. Deve parar de atirar e limpar o temporizador. Então aqui está o momento da verdade. Veja se isso funciona, você pode encontrar um erro. Pode haver algo faltando no personagem, mas vamos ver, uau, que na verdade estavam perfeitamente em casa. E chegamos ao 0. E ele vai tentar atirar. Não está funcionando. Você vê a bala se espalhando subindo. E isso está funcionando muito bem. Então ainda podemos disparar aqueles que não puxamos para baixo e pulverizamos em todos os lugares. Como isso. Talvez todas essas lindas linhas vermelhas que éramos. Tudo bem. Então foi assim que disparou a espingarda automática. Acho que é tudo o que temos de fazer. Então, só para mostrar que se eu mudasse a taxa de disparo para um segundo, seria como uma metralhadora pesada. Não pode nem gostar disso. Sheesh já fez isso muito pequeno, como 0,005? Provavelmente mais como um S, M, G ou algo assim. Eu não salvei. Eu estava tipo, eu juro. É como, oh, sim, qualquer coisa que você possa tocar a animação tão rápido. Tudo bem. Quebre o jogo nesse ponto. Ok. Sim, é a espingarda automática. Funciona. Ele faz a sua coisa. tudo o que temos de fazer. Então você pode ir em frente e você também pode alterar o pedido. Eu coloquei isso no chute de arma como negativo 0,1 ou algo assim. E então, com isso, você pode ter mais pontapé. Oh Deus, isso não voltou para si mesmo? Vamos lá, jogo. Ponto negativo. Meu Deus, agora estou ficando confuso com meus números. Isto vai ser 0,1. Isto vai ser negativo 0,1 para o chute. Ok? Aqui vamos nós. Lá vamos nós. Então você vê como ele está se movendo para a direita e para a esquerda um pouco para dizer, bem, estes não são. Então eles não estão, não está se movendo perfeitamente para cima. Está ziguezague direita e esquerda. Não vou mover o rato. E esses são os resultados que obtemos. Tão bem legal. Sim. Espero que tenham gostado deste vídeo. E sim, vejo-te na próxima.
26. Fotografar o canhão: Olá a todos e bem-vindos de volta a outro vídeo. Na última lição, mostramos como fazer o rifle de assalto. E neste vamos mover a nossa atenção para a espingarda. Esta é a nossa arma de varredura final. Este como os outros, vai ser bem simples, muito fácil. Só um par de passos. Este vídeo não deve demorar muito. Então vamos em frente e abrir nossa base de armas e nossa espingarda. Dentro da base de armas, o que vamos fazer é criar algumas variáveis. Vamos chamar isto de contagem de pastilhas, e vamos fazer isto em inteiro. Isso vai representar quantas balas individuais você gostaria de
atirar para fora da espingarda. Essencialmente, selecione quantos traços de linha individuais você deseja que haja? É provavelmente a maneira mais fácil de explicar. Então, o que realmente, você sabe, nós vamos colocar isso lá dentro. Sim, sim, sim, sim. E então vamos ter outra variável e chamar isso de espingarda. E isto será um booleano, não para Medline. Um booleano. Lá vamos nós. Agora, se formos para o nosso choque
e arma, e abrirmos este editor, devemos ver que estas armas são variáveis. Vamos definir isso para oito. Então o que eu vou fazer, e então isso vai ser uma espingarda. Estas variáveis, eu só vou colocá-las em uma categoria nesta coluna. Espingarda, que as nossas outras e outras armas não têm de as ver, porque só vão importar neste. Certo, assim como antes, dentro do nosso choque e gráfico de eventos, vamos aos eventos, começar a atirar no chamado pai. Conecte-o, conecte-o. E então vamos pegar a malha de armas e tocar uma animação. Lembre-se que essas armas vieram com animações. Este pacote de armas. É assim que conseguimos essa espingarda de fogo. Então, se não tivéssemos essas animações, teríamos que fazê-las nós mesmos ou fazer algum efeito
de partículas de desova no som em locais e essencialmente fazê-las nós mesmos. Então, o fato de que essas armas vêm com animações é extremamente conveniente. Hum, então, sim, há algumas
coisas que eu gostaria de fazer por algumas dessas armas, começando com a espingarda, porque eu não quero ser capaz de apenas bam, filmar isso. Então vamos entrar no nosso personagem. E no gráfico de eventos, algum espaço aberto, Vamos torná-lo um evento personalizado e chamar essa taxa de fogo. Gosto deste nome. O Cal. Calcular a taxa de fogo. Muito legal. Muito legal. Oh, você sabe o que? Isso é constrangedor. Uau. Vamos fazer isso na base de armas. Desculpe, arma favorita basicamente. Faça um evento personalizado em chamá-lo taxa de fogo. Por 3k. Poderíamos ter feito no jogador tecnicamente também. Mas sempre que ele tem o jogador e vamos pegar é um disparo arma carregando. Vamos configurá-lo. Defina isso para ser verdade. E então vamos arrastar um atraso. E vamos ver, fizemos e eu acho que fizemos uma taxa de fogo. Ainda assim. Veja, isso às vezes é a coisa ruim de eu estar colocando isso em nós não fizemos. Está bem. E então vamos fazer uma chamada taxa de fogo e fazê-lo flutuar. Ligue isso. Você não precisa definir isso como nada agora. Bem, isso o colocou dentro das plantas. Agarra isto. Então haveria falsas. E basta tomar estes e salvar fogo enfurecido para não Adam, Adam metadados não pode falar para
armas não automáticas z e evitar spamming, disparando essas armas. Então, se você se lembra em nosso jogador, e isso deve estar em um de nossos mapeamentos de ação bem aqui. Queremos atirar é fogo,
é fogo de arma carregando. Se não for, então podemos atirar se foram. Então, neste caso, seja qual for nossa taxa de disparo definida, pois vai ligar e desligar essa variável. Então não podemos atirar. Então não podemos apenas atirar o mais rápido que podemos clicar. Então, na arma de espingarda, vamos em frente e chamar esse evento de taxa de disparo calculada para cada arma que queremos que isso afete. Temos de chamar este evento. Então isto vai ser chamado na espingarda, no rifle de atirador e no lançador de granadas. A única arma diz que é necessária no resto deles, a espingarda automática, basta segurá-la até o pixel. Você pode atirar tão rápido quanto você pode clicar. E o lança-foguetes só tem um foguete na revista. Então, quando você filmar, ele vai apenas recarregar de qualquer maneira. Então você não precisa fazer isso, é redundante. Então isso é uma coisa que eu quero fazer. Há outra coisa específica para a espingarda. Há um par de coisas. Então este vídeo pode ser mais longo do que eu pensava porque há algumas coisas diferentes que eu preciso fazer com a espingarda. Mas vamos em frente e voltar para o evento de início de filmagem bem aqui. E então vamos fazer um pequeno desvio em nossos scans de sucesso como este. Então eu vou quebrar isso por enquanto. Vou arrancar um galho. E vamos perguntar, isto é uma espingarda? Ou disparamos um choque aqui. E se formos, queremos fazer um loop for. Então não para cada loop, apenas um loop for. Nós vamos. Então, se você olhar, um loop for é executado para cada índice a partir de startIndex. Então ele vai passar por esses tempos de harmonia que você coloca aqui, essencialmente. Então fora do corpo do loop vai ligar isso de volta para que ele vai funcionar. E, em seguida, fora do ramo falso, vai direto para lá assim. Então, se não for uma espingarda, vá direto para lá. Se for um choque e vamos passar por este loop, então vamos ter um, vamos ter a contagem de balas e vamos subtrair um da contagem de pellets. Então ele vai ir 8, 7, 6, 5, 4, 3 vai correr através de todos aqueles que ainda é igual a 0, então ele vai correr direto através. E isso é a única coisa que precisamos fazer para obter as pastilhas, na verdade, é que isso atira traços de linha extra. Você sabe, uma vez o que isso faz lá. Está bem. A última coisa que eu queria fazer era recarregar a espingarda. Há algumas coisas especiais que eu quero fazer, mas para mostrar isso agora se eu pegar isso e atirar, você pode ver como todas essas oito linhas, 1,
2, 3, 4, 5, 6, 7, 8. Tem alcance insano, mas está tudo bem. Um pouco difícil de ver. E qual foi a coisa que fizemos? Oh, sim. Então, se eu continuar clicando o mais rápido que puder. Caramba, não funcionou. Por que não funcionou? - Homem? Foi constrangedor. Sheesh, deixe-me verificar isso rapidinho. Então eles voltam para você. Tudo bem, bem, isso é realmente estranho descobrir isso e literalmente cinco segundos, então essas transições desaparecem vão durar como nenhum momento. Eu nem sequer sabia. E há uma hora para isso. Então isso é um pouco estranho. Tentando ver o que eu sento da última vez foi 1,2 segundos. A espingarda era 1.2 coisas. Também mudei algumas coisas como as balas se espalharam. Ganhei uns mil, por isso espalhou-se um pouco mais. Você pode fazer como 1511 ou 1200 ou o que você quiser fazer o tempo de recarga. E então o chute da arma foi um 0,1 negativo. E o que isso para chutar um pouco mais. Então, agora que acontece, jogamos e eu acerto isso o mais longe que posso. Lá vamos nós. Temos uma propagação muito maior lá. Lembre-se, se não estamos mirando e vamos, todas essas paletes vão atirar perfeitamente em linha reta. Então agora ele bate assim. Veja, você provavelmente quer acertar todo o alvo. Sim, não podemos apenas filmar spam, então isso funciona. Está bem, fixe. Às vezes comete erros tolos como esse. Certo, a última coisa que quero fazer é adicionar algo ao nosso evento de recarga. Então, se você vai para os eventos do jogador aqui mesmo fora deste som de reprodução. O que eu queria fazer é que eu quero. Então recarregar uma espingarda é que vamos trabalhar forma diferente das outras armas porque ele recarregando cada bala individual. Então o que eu quero fazer aqui é se você apenas atirar uma rodada, eu quero que recarregado seja bem rápido, certo? Mas se esvaziar toda a sua revista, quero que a recarga seja mais longa. Então eu quero que o tempo de recarga seja ajustado dinamicamente essencialmente, dependendo de quantas balas você disparou para deixar tempo, como inserir cada pelicanos individuais. Você não está colocando uma revista inteira, você está apenas colocando todas as balas individualmente. Então vamos fazer isso agora. Então, fora deste ramo, este é o nosso evento de recarga do gráfico de eventos. Vamos dizer “se”. E vamos pegar a arma atual e vamos dizer que é espingarda. Então, se isto é uma arma de tiro, queremos fazer algumas coisas especiais. Se isto é uma arma de tiro, nós queremos. Faça alguma coisa, e provavelmente deveríamos fazê-lo na base de armas. Então vamos criar uma função chamada essa espingarda. Recarregar pellets. Certo? E então vamos pegar o tamanho da revista e subtrair. Queremos subtrair isso do atual m, k. e então queremos multiplicar isso não por um inteiro, por um flutuador. Multiplique isso pelo nosso tempo de recarga. Tudo bem, e então vamos definir em tempo real assim. Então, ao contrário de todas as nossas outras armas, o tempo de recarga da nossa espingarda deve ser muito curto, certo? Então, levou o tamanho do nosso carregador, que é oito menos a munição atual, certo? Então, digamos que atiramos também. Então cornetto é seis, então é oito menos 62. Então, se isso é como 0,2, então você vai recarregar para 0,4. Tudo bem, posso até tirar a calculadora para vocês. Mas se esvaziarmos, digamos que atiramos sete. Então este é 8 menos 1, que seria sete. E dizer que um tempo real vai ser o ponto 2. Então agora nosso tempo de recarga será de 1,4. Se nós, como eu disse, se atirarmos um, então 1 para qualquer sinônimo, 8 menos 6 é 2. Então, duas vezes 0,2 é apenas 0,4. Então, quanto mais balas, mais balas lançamos, vai aumentar nosso tempo de recarga. Então o que queremos fazer pela nossa arma de espingarda para este tempo real é que queremos que ela seja bem baixa. Então, como definir para ser como 0,3 ou algo assim. E para fins de teste eu posso mostrar-lhe isso para que ele imprima uma string. Tudo bem, compilar, e depois ir para cá. E então vamos pegar a arma atual novamente. E vamos em frente e chamar esse evento. Como se chamava? Espingarda recarregar pellets assim. Então vamos executar esse evento e, em seguida, vamos ter um atraso do vai apenas obter tempo real desta forma, recebe tempo de recarga. E depois que terminarmos com isso, queremos definir o tempo de recarga. Nós só queremos oh sim, nós só queremos o alvo. Então, vamos definir duro o tempo de recarga de volta ao seu padrão. Porque o que vai acabar acontecendo é que isso é meio difícil de explicar como é. Então, como recarregarmos, certo? Nosso tempo de recarga vai ser definido como como digamos que é 0.4. Bem, então agora toda vez oh, não para o meu acidente de motor. - Não. Respondendo. Oh, uau, está de volta. Ok, então vamos dizer que eu gosto que isso seja como o ponto de fazer. Bem, na próxima vez que passarmos por
isso, vai ser ou está pronto. É normalmente definido como 0,3, certo? Fazemos as contas e, em seguida, ele fica definido como 1,2 ou algo assim que filmamos para o round up. Bem, agora da próxima vez que fizer esta matemática, vai voltar a ser. Ele vai fazer essa matemática fora como o novo tempo de recarga e não o original que nós colocamos aqui, que é 0,3. Então só queremos que estes combinem. Só estamos reiniciando. Portanto, redefina as configurações para todos os tempos. Então, se você mudar isso, você também precisa mudar isso. Tudo bem? Então eu vou te mostrar como isso funciona. Então pegamos uma arma de tiro, atiramos. Eu recarrego. Desde este 0.3, eu atiro, atiro, atiro e digo 0,66 um pouco mais. Esvazio tudo e recarrego. Agora é 2.1, pode demorar um pouco mais. Certo, então sim, isso é um ótimo, uh, como um sistema de recarga mais dinâmico, eu acho, para um choque. Então isso é tudo que você precisa saber sobre a espingarda. Está tudo feito agora. Ele dispara, ele recarrega, ele, espalha os traços de linha. Isso faz toda a coisa legal. Espero que tenham gostado deste vídeo, espero que estejam aprendendo e gostando de tudo. Avise-me lá em baixo como sempre, se tiver alguma dúvida, eu responderei. Mas sim, se não, te vejo na próxima.
27. Criando efeitos de impacto: Todos sejam bem-vindos de volta a outro vídeo. Neste vídeo, o que vamos fazer é começar a fazer diferentes efeitos de impacto dependendo de qualquer que nossas balas interajam com isso. Então, como está agora, se eu abrir nossa base de armas e desativar este traço de linha de desenhar e ver que nossas armas atiram em mercadorias sem o traço de linha. Eles não parecem estar indo a lugar algum. Então vamos criar diferentes decalques e sons e efeitos para disparar dependendo do que atingirmos com nossos traços de linha. Para dar um pouco realmente como se estivesse atingindo algo essencialmente, certo? Então, a fim de conseguir isso, Vamos para Configurações, nas configurações do projeto. E nós vamos rolar para baixo para a física bem aqui, que está debaixo do motor. Verá que temos todas essas opções de superfície física, certo? E nós vamos criar algumas
dessas opções de superfície física aqui para então ser encaixado nisso. Podemos fazer coisas diferentes com eles. Então, mesmo que não tenhamos nosso inimigo criado ainda, vamos encaixar isso agora mesmo. Então vamos fazer um chamado cabeça, peito, braço, mão, perna e pé. Tudo bem, e então vamos fazer outro chamado Stone. Agora, todas essas partes do corpo, estamos faltando no departamento de câmbio. Eles vão ser como um som de mega metal em uma faísca de metal como afetou eles. E então a pedra vai ser mais
como pedras quebrando e soando assim essencialmente. Então é tudo o que precisamos para isso. Vamos voltar ao nosso jogo FPS e criar uma nova pasta. E eu já vou ter uma pasta Materiais. Então vamos criar materiais físicos e vamos mantê-los todos na pasta Materiais. Então vamos clicar com o botão direito e ir para baixo. Onde é que está? Materiais? Vamos criar um material físico que é cego. Por que não está aqui? Sente-se, oh, provavelmente está sob física, material físico. Ok. Clique no material físico e, em seguida, vamos chamar essa cabeça de corpo. Acho que era o que eu tinha, ou sabe o que chamamos de peso corporal. Isso não faz sentido. Vamos chamá-lo de cabeça inimiga. Tudo bem, e vamos apenas duplicar isso e chamá-lo de peito inimigo. E o braço malvado. Mão inimiga, inimigo, atraso, pé
inimigo, e depois pedra. Ok, e vamos salvar assim. É abrir qualquer um deles. E então o que vocês verão é que temos um destruidor que irá danificar a escala de limiar. Vamos usar isto quando se trata dos nossos inimigos. E isso vai realmente controlar como o nosso cálculo. Isso permitirá que a cabeça cause mais dano do que o peito no peito para causar mais danos do que os braços e as pernas e assim por diante. Mas, por enquanto, só queremos encaixar em nossas propriedades físicas. Então, sob o tipo de superfície. Então criamos todos esses diferentes, essas são as coisas que criamos nas configurações do projeto. Vá em frente e encaixe todos esses no apropriado. Então perna vai ser cabeça, cabeça. E isso apenas permite que o jogo atribua uma espécie de material
físico para os diferentes nomes físicos que demos. Então podemos fazer mais tarde é pegar um objeto e podemos dar-lhe um material físico. Eu não acho que estes sequer têm uma, essa geometria, mas o cubo deve ter uma. Mas você tem a sobreposição de material físico da fila. Então temos nossos materiais físicos aqui. Então podemos dizer como este é deste material e podemos fugir de eventos diferentes. Então eu pus o pé, peito, e então nós temos este braço. Sim. Tudo bem. Então, agora esses estão todos encaixados. Então agora podemos começar a criar diferentes eventos baseados no que quer que seja que estamos atingindo. Ok, então vamos em frente e criar uma nova pasta. Será, vai realmente criar uma nova pasta desta vez. Então chamaremos de “afetos”. E vamos criar uma classe blueprint do tipo Actor e chamar esse impacto de base de fatos. Muito bem, vamos abrir isto. E na base de efeitos de impacto, nós só queremos criar um monte de variáveis diferentes. Então vamos pegar um chamado resultados de Hitch. E faremos disso um resultado de sucesso. E o que queremos fazer, esse resultado de sucesso é que queremos tornar essa instância editável, que torna isso i significa que essa variável agora é pública e pode ser acessada e analisada por outros blueprints. E podemos mudar isso na hora, por assim dizer. E então nós também queremos expor em desova. Então, essa variável deve ser exposta como um pino ao gerar esse blueprint? E queremos dizer que sim. E então o que isso vai fazer é expô-lo como um alfinete. Então você vai começar a gostar quando você gerar este projeto, ele vai lhe dar uma opção. Esta variável vai se tornar um pino, semelhante a como é aqui. E o traço de linha é como retornar um valor. Pelo menos vai aparecer parecido com isso. Agora queremos fazer efeitos diferentes. Então vamos fazer uma chamada pedra FX. E vamos fazer deste sistema de partículas tipo uma referência de objeto, acredito que é o que queremos. Sim. Ok. Queremos ter pedra e depois queremos ter corpo. Podemos chamá-lo de corpo inimigo, quiser chamá-lo. Em. Então a outra coisa que queremos criar, uma pedra S fx. E isso vai ser do tipo objeto de sinalização de som novamente. E então queremos fazer isso para o corpo também. Tudo bem. E então faremos um chamado Impact, a vaca. E esta será de vaca tipo D, não é? É só que provavelmente não é material. Então vamos do tipo material. Objetivo para referência assim. Ok. Então o que queremos é o tamanho da vaca D, que vai ser capaz de digitar float. D vida útil da vaca também vai ser flutuante. E por último, mas não menos importante, queremos a rotação de Di Cao. Isto vai ser um rotador. Agora vai haver todas as nossas variáveis aqui. Então este é um resultado de sucesso que vamos fazer. Então ele vai, essencialmente ele vai nos pedir um lugar para gerar um efeito de pacote SYN, e nós vamos apenas usar essa variável de resultado de hit para vinculá-lo com o resultado de hit. É por isso que estamos retornando o resultado do traço de linha é para que
possamos ligá-lo com onde queremos que nosso efeito de impacto apareça. Então, a razão que existe, estes eram um slot em nossos diferentes efeitos ou sons diferentes. Você terá um capuz D como um buraco de bala que queremos aparecer. E então nós podemos, eu fiz essas variáveis para que possamos personalizar o tamanho, quanto tempo ele dura antes que ele desapareça, e são tipo de aleatorizados sua rotação, dependendo de qualquer arma que estamos usando porque queremos que a pistola criar um buraco de bala menor do que o lançador de foguetes, por assim dizer. Ok, então é assim que temos que fazer para o visor. Vamos para o gráfico de eventos e vamos fazer tudo para começar a jogar. E às vezes não te deixa apagar coisas, por isso tens de o apagar e começar de novo, certo? Então vamos fazer uma sequência aqui. E vamos adicionar alguns pinos. Tantos, são quatro. Tudo bem? E depois sair daqui, o que queremos fazer é pegar nosso resultado de sucesso. Queremos quebrar o resultado do sucesso. Então, quando você quebrar o resultado hit, você obtém todas essas opções diferentes. O que vamos procurar aqui é um ponto de impacto. Então é uma localização vetorial do ponto em que o traço de linha atingiu um objeto. E queremos obter um material físico. Queremos que o jogo seja capaz de ver qual material físico foi atingido? Tudo bem. Para que possamos manter isto por baixo fora do bloqueio. Vamos fazer uma declaração de “se” aqui. Ou filial. Bloquear hit true se houve um Blogging hit false, caso contrário, isso é apenas uma espécie de falha à prova de falhas. Então, se atirarmos para o ar e nosso traço de linha não atingir nada, o jogo vai voltar com um erro porque ele vai dizer, você sabe, você está me dizendo para gerar
algum, alguma partícula afetou algum som no local do hit e eu não têm um local de ocorrência. Então, se tivermos essa batida de bloqueio, isso impedirá que esse erro aconteça porque será como, Ok, isso só funcionará se realmente acertarmos algo. Tudo bem? Então, se atingirmos algo que queremos gerar no emissor. No local no emissor é um efeito VFX. O local que queremos que eles gerem como o ponto de impacto do resultado de ocorrência que desenhamos. Mais uma vez, calculamos o traço da linha. E então queremos obter o material físico, qual emissor queremos gerar? Há tantos. Bem, podemos personalizar isso com base no material físico. Então, fora do material físico, físico, vamos obter o tipo de serviço como esse, que é tipo de superfície física incorporada. E, em seguida, queremos obter um nó selecionado. E você pode ver agora todos os diferentes fisioterapias, eu me livrei dele. Todos estes aqui. Você já sabe o que vou dizer, não Jeff. Todas estas diferentes superfícies físicas que temos aqui estão agora a aparecer nesta nota seleccionada e vamos devolver isso. Então agora ele nos dá uma opção de encaixar no que quisermos dependendo de qualquer objeto que atingimos. E é por isso que criamos essas variáveis. Então, para o corpo, vamos colocar isso na cabeça, peito, braço, perna e pé. E então, para pedra, faça essa pedra. E então podemos fazer pedra o padrão também. Isso para torná-lo mais visualmente atraente. Sim. Certo, então é isso que queremos. Então podemos dizer efeitos de partículas para diferentes tipos de serviço que ele tem isso. Então agora tudo o que precisamos fazer é exatamente a mesma coisa para o som e a contagem D, certo? Então podemos copiar, colar a maior parte disso em, arrastar isso para aqui. Como isso. Claro. Dê a eles um pouco de espaço. Isso será sons, efeitos sonoros. Queremos manter tudo igual. Em vez disso, queremos tocar som no local. O local vai ser o ponto de impacto. Você pode se sentir livre para mudar. Oh, cabe a fazer isso de novo. Eu posso selecionar e então ele vai se tornar um som. Lá vamos nós. Então isso garante que temos os efeitos sonoros de pedra e corpo retirados. Peito, braço, mão, perna, pé, pedra, padrão. Como isso. Sinta-se livre para mudar o volume. Você pode fazer bender variável se você quiser. Eu sou bom com isso como as coisas são. Para este terceiro, o que queremos fazer é que eu vou
aleatorizar uma rotação dos decalques para que ele não pareça exatamente o mesmo todas as vezes. Então vamos querer pegar o resultado do hit em resultados de batidas quebradas novamente. Mas depois fora do normal. Normal é se o espaço do mundo oculto para o objeto foi varrido. Impacto normal para teste de linha. Então vamos girar a partir do vetor x. E nós vamos, então nós estamos recebendo uma rotação e nós vamos quebrar o rotador. Então agora temos um X, Y, e Z. E então fora e vamos ter um flutuador aleatório ao alcance como este. E vamos fazer isto ir 360 graus. Então 180 negativo e depois 180 positivo. Para que possamos dar a volta ao círculo. E então vamos fazer um rotador. E então, sim, isso pode se conectar ao x, o y e o z. Vamos manter o mesmo. Então nós estamos apenas mudando o x. Então oito que entram em um círculo, por assim dizer. E então vamos definir isso como a rotação do Dekalb e então podemos ter esse plugin assim. Sim, isso é bom. Ok. E vamos dizer Ran to Mies decalques rotação. Então isso vai nos dar um pouco de aleatorização. Assim como todos os nossos decalques não parecem exatamente iguais. E por último, mas não menos importante, então você pode copiar e colar tudo isso novamente. Ponha isso no galho. Literalmente limpo. E se o nó de seleção excluído. E então vamos desovar a vaca D ligada a isso. Ainda vai pedir a localização. Então isso vai para o ponto de impacto. Podemos nos livrar deles. A vaca D vai ser sempre a mesma. Mas ainda queremos ter certeza de que estamos colocando isso também. Na verdade, talvez não precisemos mais. Mas só por causa da consistência. Ou se quisermos editar isso ainda mais, vamos fazer como temos feito os outros. Vamos manter a posição girada e não o que foi definido como a rotação será esta variável ou rotação D vaca, a que fizemos vida útil. Lembre-se que fizemos uma vida útil de DKA assim. E o valor padrão, Vamos definir para ser como dez. Apenas por padrão, que no caso de nos esquecermos não desaparece imediatamente. E então para o tamanho da vaca D, definimos isso como uma variável 2. E então como este é um flutuador, vamos torná-lo um vetor x, y, z. Plugue isso em tamanho. Então lá vamos nós. Agora temos isso. Então, há todo esse roteiro que precisamos. Sabes que mais, estes dois também precisam de os apanhar. Então componente hit será anexado ao componente e nome osso hit será anexado nome do ponto. Isso pode nos dar áreas que não ligamos isso. Então, muitos fios e este, mas é o que é. Então sim, isso é tudo o que precisamos fazer para nosso efeito de impacto. Ok. Agora, de volta à nossa base de armas, depois de
calcularmos isto , vamos quebrar este resultado. Tudo bem? Antes de começarmos o recuo, queremos criar um ator da aula. O ator que queremos gerar é nossa base de impacto. Agora lembre-se que eu fiz este resultado de sucesso expor na desova. Então você vai ver aquele pino aparecer quando eu encaixar isso. Lá está ele. Então, o resultado da ocorrência vai ser este resultado de sucesso para gerar transformação. Vai ser o impacto. Ou vamos dividir o Pin Struct e depois fazê-lo assim. Não precisamos nos preocupar com a rotação e a escala. Certo, então agora temos tudo isso aí. E você sabe o que, eu provavelmente deveria transformar isso em uma variável, impacto afetar base. E então faremos com que esse tipo de impacto afete a base e a referência de classe
e, em seguida, arraste isso para dentro. Certo, então agora teremos vários impactos, efeitos do conjunto por uma variável. E, em seguida, começar a recuo tudo isso. Então isso é bom. Isso funciona. Agora, o que podemos fazer, e como isso é definido como uma variável, agora se você entrar em qualquer uma de nossas armas ou um rifle, você deve ver um espaço para efeito de impacto. E eu provavelmente não deveria nomear base. Pode haver um impacto confuso de fato. Compilar Salvar. Então agora temos efeitos de impacto que podemos encaixar. Então, agora, se entrarmos em nossos pertences e começarmos a fazer crianças, então vou mostrar isso como um só. Então, nosso efeito de impacto do rifle. Nós clicamos e abrimos isso. Você verá pedra afeta o corpo nos diferentes sons, decalques, tamanho, vida útil, e não temos que mexer com a rotação. Então, para pedra, eu acho que há um chamado Stone. Ele pode obter um pequeno médio ou grande. Eu só vou fazer médium for body. Há um chamado metal. Meio de metal para pedra. Como se chamava Rock? São convidados a gastar impactos superfície, impactos de rifle, superfície como essa para o corpo. Pode ter havido uma hora de metal. Eles estão quebrados. Ok. Bala de metal de impacto. Então é slot que dentro e vamos consertar aquela casa, meu Deus, que tantos. Então, não há uma bala? Bullet metal? Oh meu Deus. O jogo diz que estou a dizer que não é. Temos corpo de impacto aqui. Nós só usamos esses. É meio que um som desagradável. Então você tem o corpo dela. Vamos fazer aqueles que provavelmente não são espingardas quebradas e corpo da matilha. Lá vamos nós. Impacto D vaca, isso é algo que precisamos fazer. Então vamos entrar em filtros de jogos de tiro e clicar no material. Bem aqui. Então o material dos filtros deve vê-lo aqui. Detalhe de impacto. Estou impactado na vaca. Vamos arrastar isso para os nossos materiais. Então nós temos isso, nós abrimos isso e vai ser um pouco. Mas está tudo bem, nós consertamos isso. Então isso vai ser chamado buraco de bala,
buraco para e isso vai ser foi lá chamado milivolts. Distorção é como este se chama. Distorção um. Assim que encaixarmos aqueles, responda, lá vamos nós. Deve ser consertado. Agora. Lá vamos nós. Então agora cada rótula de impacto. Então eu vou chamar isso de bem, em tudo que eu sei como é chamado. Pelo menos. Tem um buraco de bala. Talvez seja um tamanho 10 por enquanto, uma vida útil de oito segundos. Ok. Então, agora, se demonstrarmos ou realmente arma de rifle
automática precisa ter certeza que temos nosso efeito de impacto de rifle atribuído a ele. Agora, se formos para a nossa arma e andarmos até aqui, você pode ver que nós sempre disparamos buracos no pequeno padrão é, era a pedra, certo, certo, certo. Ok. Mas se eu arrastar um cubo aqui, aumenta um pouco o tamanho. E eu digo que este é o peito inimigo ou algo assim, devemos ter um efeito diferente. Então estes, e então para obter as faíscas agora, você pode meio que ouvir esse som carnudo. Muito bem, agora estamos a ter diferentes efeitos de impacto. Entramos no impacto dos fatos e eu posso fazer esses decalques como 50 ou algo assim, faz seus buracos de espingarda no chão, o que é ridículo. Também podemos dar coisas diferentes. Nós temos querer, eu acho que esses que vêm com o, há alguns muito legais na verdade, eles vêm com o jogo de tiro como, mas eu acho que eles estão todos meio quebrados para mim como se eu já algo como explosão, A explosão pode ter que tornar algo muito rápido, mas lá vamos nós. Então agora é como flutuar nisso. Obrigado. Sim. Certo. Muito legal. Muito legal. Então é assim que fazemos isso. Então a única outra coisa que teremos que fazer aqui, e eu vou fazer isso como uma pequena tarefa, vai deixar os efeitos e criar as classes de blueprint filho. Então pistola, impacto, efeito ou direita. E, em seguida, encaixe em seu tamanho de decalques preferido na vida útil em diferentes efeitos que você deseja. Você pode fazer tudo igual, ou pode fazer parecer loucura. E então tudo que você tem que fazer é entrar na arma correspondente. Então, sob o eu, deve ver um lugar para colocar esse efeito de impacto. E se você compilar e salvar, isso funcionará. Ok? E você pode, se
quiser, pode brincar com efeitos diferentes. Você pode entrar nas configurações do projeto e criar novas. Tudo o que você teria que fazer é criar uma nova variável, como você teria que deslizá-la, criar um material físico para ela, como eu fiz no início. Em seguida, você clicar sobre isso e, em seguida, deve haver um nó de atualização. E então você deve ter aqueles extras que você criou pop-up sem excluir isso. E então você pode criar novas variáveis, conectá-lo, fazer um monte de coisas legais, mas é assim que você faz diferentes efeitos de impacto com base no que seus traços de linha estão atingindo. Então nossa arma agora parece muito mais profissional. Como se estivesse filmando e editando algo. E está mudando dependendo da superfície em que estamos atingindo. Então espero que vocês tenham gostado deste vídeo, achei útil e informativo. E vejo-te no próximo.
28. Enemies: Olá a todos e bem-vindos de volta a outro vídeo. Nesta lição, vamos continuar em nosso atirador em primeira pessoa. E vamos fazer alguns inimigos com os quais podemos atirar e fazer coisas legais. Então, entre os vídeos, fiz algumas pequenas coisas. Dei ao nosso material de grade de azulejos de concreto a uma escala de dois. E então eu coloquei duas caixas diferentes aqui. Um, eu coloquei isso duas vezes o tamanho de aço polido e este outro é uma pedra cortada. Esta é do nosso tipo de pedra e este é apenas qualquer baú inimigo, você
quiser chamá-lo. Então esses são vídeos imediatamente que eu lhe dei a tarefa de colocar diferentes defeitos de impacto em tudo isso deveria ter sido relativamente simples. Os únicos que podem ter sido um pouco confusos onde o lança-granadas no lança-foguetes, para estes,
todos os impactos serão explosão de granadas em explosão de granadas,
e então explosão de foguetes e foguetes Explosão. Então eu fiz esses decalques bem grandes. Essa deve ser a única coisa. E honestamente, quero dizer estes. Então, no rifle sniper, ele,
ele, vai funcionar agora porque todas essas armas estão programadas para ser atingido,
mas, eventualmente, estaremos trocando essas armas para serem projéteis e faremos diferentes eventos para elas dessa maneira. Mas vamos usar o mesmo efeito de impacto. Por isso, é bom encaixá-los agora porque eles vão funcionar. Mas precisamos adicionar nossos inimigos primeiro apenas com forma como o script do projétil e os projetos são configurados. Tornará mais fácil fazer assim. Então, sim, acho que é tudo. Então vamos começar criando uma nova pasta e chamá-la de inimigos. Já que somos coloridos aqui dentro. Vamos em frente e fazer um personagem. E vamos chamar isso de inimigo sublinhado da BP. Outra coisa que eu quero fazer é criar uma nova pasta e chamar essa interface. Porque nós vamos fazer um par de interfaces de blueprint neste vídeo. Mas vamos começar abrindo nosso inimigo aqui. Então, nada muito louco aqui. A única coisa que vamos fazer é que a malha vai fazer o manequim. Você pode escolher macho ou fêmea onde quiser. Vamos em frente e girar 90 graus. Vamos definir as alturas da cápsula para 95 e podemos manter 34, 0 podemos fazer é ir para o modo esquerdo ou direito. Podemos pegá-lo e movê-lo para baixo. Eu provavelmente alterei as configurações de encaixe. Você apenas mova isso para 5, bem ali para 95 negativo. Girar negativo. Assim z localização de 95 negativo e rotação de 90 negativo irá configurá-lo no Componente Cápsula foi como 95 também. Volte para o modo de perspectiva e aqui está o nosso personagem. O arame não importa tanto. Ele não precisa estar sobrepondo o braço dele porque nós
estaremos atingindo estes não estavam cruzando com o Componente da Cápsula. Isto é apenas para que se nós arrastá-lo para fora como realmente ficar nivelado com o chão assim. Então, sim, tudo parece bom. Então vamos em frente e selecionar nosso homem manequim e acertar os marrons. E então você deve ver para o ativo de física variante masculina. E é abrir isso. E agora temos um monte dessas pelve,
espinha, todas essas coisas diferentes. São bens físicos. Então vamos em frente e encaixe estes para que possamos começar com a substituição do material físico da cabeça e vamos torná-lo cabeça inimiga. Apenas tente selecionar tudo. Então, se isso for apenas na área geral, chamaremos isso de peito, coluna
vertebral, chamaremos de xadrez. Nós provavelmente podemos apagar alguns desses honestamente, mas vamos chamá-lo de braço, vamos chamá-lo de braço, braço inferior. Ainda vou chamar esse braço. E Omega. E a parte superior do braço, o braço
inferior fica como vários chamados ARM. E estes
dois vão ser o chefe. Certo? E bezerro. Certo? Estes dois foi para todos vai ser perna e, em seguida, bola de pé e seguida, futebol esquerda e direita vão ser menos disse futebol vai ser pé. Tudo bem, então agora tudo isso deve ter alguma coisa, encaixe. Como isso. Agora, se você se lembra, em um vídeo anterior eu falei sobre a escala de limiares de danos. Então voltamos aos nossos materiais e vamos com o braço inimigo. Então, se houver habilidade limite de dano. Então o que eu quero que você faça é que eu quero que você pense sobre isso. Então, se definirmos nossa arma para ser 25 de dano por bala, se isso for definido como um, como isso eventualmente vai ser configurado, isso significa que a bala fará 25 seleções a cabeça irá configurá-la como um. Mas pense nisso como um número de multiplicação. Então vamos dizer que eu quero, se eu definir este para ser o braço como 0,5, certo? Digamos que nossa bala causa 25 danos. Isso significa que seria atingido no braço dele. Essa bala causará 12,5 de dano. Então podemos entrar e censurar um pouco o braço. Vou manter isso em 0,5. O baú será 0,8. Então você pode pensar nisso como qual porcentagem? Então, se acertarmos no pé
dele, será 30% do número total de dano normalmente, a mão fará questão de lidar e causar tanto dano. A cabeça será um 100 por cento do dano que colocamos na perna será como 0,7, um
pouco menos do que o peito, um pouco mais do que os braços? Sim, isso deve ser bom. Ok. Isso é o que vai controlar as diferentes quantidades de vídeo de danos. Vai fazer um pouco de multiplicação. Você vai ver, você vai ver, ok. Fora do evento começar a jogar. Queremos uma referência ao nosso caráter. Não, nós não queremos lançar para nós mesmos camada. Isso é e talvez nesse caso para seu uso, Pon. Pon é aquele que vamos controlar tecnicamente selecionar, estes dois são personagens, mas o lago para ser o único que estamos controlando. Então você pode usar Get Player Peão, Eu só estou acostumado a usar personagem jogador Git. Faremos a mesma coisa na maioria das vezes, na maioria das instâncias. E mais uma vez, como se isto não importasse. Está bem, fixe. Então agora o que vamos fazer, então vamos fazer uma interface. Então vamos para a nossa pasta de interfaces, clique com o botão direito do mouse e vá para imprimir Interface Blueprint. Portanto, uma Interface de Blueprint é uma coleção de uma ou mais funções nomeiam apenas nenhuma implementação que possa ser adicionada a outros blueprints. Então como eu, é como se uma interface não fizesse nada. É apenas um lugar onde você pode armazenar várias funções diferentes. E, em seguida, você pode chamar esses eventos coluna dentro de vários blueprints diferentes. E você vai ver, será uma daquelas coisas que você verá à medida que avançarmos. Então vamos chamar este inimigo, sofrer danos. Vamos abrir isso e criar uma função e chamá-la de Inimigo, sofrer dano. Talvez eu mude o nome padrão. Vamos chamá-lo de BPI. Receber dano, Interface Blueprint receber dano. Porque queremos que o inimigo sofra danos. Também queríamos levar um dano ou dano de raio, e vamos colocar os dois aqui. Então, tenho o Inimigo a receber dano. E então queremos ter duas entradas sobre isso. Queremos que um seja chamado de estatísticas de armas, e vamos criar isso em um segundo. E então um chamado resultado de pitch do tipo pitch resultado. Ok? E temos que fazer uma estrutura para as nossas estatísticas de armas. Então vamos para Data, clique com o botão direito do mouse. E vamos às plantas, estrutura e chamar de estatísticas de
armas. Então, uma struct é ligeiramente diferente de uma enumeração. Enumeração é como uma lista. Uma estrutura ou uma struct é como um bucket de variáveis. Então você pode adicionar um monte de variáveis a esta pequena coisa. Então vamos fazer um chamado dano, e isso vai ser do tipo flutuador. Isso controlará quanto dano a arma causa. E então, para os nossos que explodirem, teremos um flutuador para o raio de impacto. E como eu disse, isso só seria necessário quando nos sentirmos como nosso lança-granadas em um lança-foguetes. Então, queremos fazer isso de mortes por armas tipo. Você pode ver bem ali. Ok? Então esta é a nossa interface. Então, agora, se formos para o lado do nosso projeto inimigo, podemos chamar evento inimigo. E deixe-me lá vamos nós. Inimigo recebe dano porque você não precisa colocar evento. Oh, bem, isso não funcionou. Por que não está funcionando? Eu compilo. Esqueci a parte mais óbvia. Ok. Precisamos realmente adicionar esta interface a este blueprint. Ok? Então, na configuração de classe, você verá interfaces e precisamos adicionar um. E vamos em frente e adicionar BPI, sofrer danos. Então, agora, quando adicionamos essa interface a este projeto, podemos agora chamar inimigo ou evento inimigo receber dano. Então agora nós podemos ter um evento neste projeto e você pode ver nossas pequenas entradas aqui. Então, qualquer que seja o esquema que adicionamos, essa interface também, podemos chamar esse evento para correr fora dele. E terá essa mesma saída. Então, é uma espécie de útil se você quer ter assim como pensar em um jogo como quinzena. Há muitas coisas diferentes em Fortnite que sofrem danos. Você pode destruir os edifícios, as casas, as árvores, e você pode danificar os jogadores. Então você pode ter uma interface que tem entradas de todos os tipos diferentes de dados que você gostaria de passar através de diferentes coisas que sofrem danos. Mas, como uma árvore, sofrerá danos de forma diferente do que uma parte de uma madeira de construção. E diferente do que um jogador, todos
eles têm diferentes quantidades de Vida e todos eles sofrem diferentes quantidades de dano. Então, usando interfaces, você pode criar uma interface e, em seguida, você pode personalizar essencialmente como esses tipos de coisas em um nível mais simples, mas você não precisa criar um evento diferente cada vez. Você pode simplesmente chamá-lo de interface e, em seguida, executar esse evento fora da interface em vez de torná-lo para 1000 vezes. Tudo bem, então vamos criar uma variável e chamar isso está morto. Queremos verificar se o nosso inimigo está morto. a primeira coisa que vamos fazer. Então você não quer que ele sofra danos se estivermos mortos. Ok? E, de forma típica, vamos ficar sem a verdade. Se não estivermos mortos, então queremos fazer algum estrago. Vamos em frente e deixa-me mostrar-te isto. Então estatísticas das armas e vamos quebrar as estatísticas das armas. E agora temos dano e raio de impacto, que era o que estava em nossa estrutura. Ok. Mas queremos ser capazes de calcular quanto dano queremos causar. Então vamos armazenar isso em uma função. Então chamaremos isso de dano tardio de Coull. E vamos adicionar algumas entradas aqui. Vamos criar um carro alegórico chamado dano. E vamos também passar em um resultado de sucesso do tipo hit resultado disso. Vamos em frente e eu vou apenas definir isso para uma variável local para que eu possa usá-lo mais tarde no script. Este vai ser muito longo e vamos adicionar um nó de retorno. E isso vai ser um carro alegórico também. E será, chame-o de dano calculado. Então isso, isso é o que realmente vai calcular o dano que causamos ao nosso inimigo. Então vamos quebrar o resultado do sucesso. Tudo bem, e depois fora do material físico, queremos obter a escala de danos destrutivos. Certo, mais uma vez, como eu disse, se entrarmos em materiais e entrarmos em nossa mão inimiga, teremos um material físico e então verificamos essa escala de limiares de dano. Então, nessa chance, como eu disse, estamos fazendo 30% do que quer que coloquemos como o dano que nossas armas farão. E queremos multiplicar isto pelos nossos danos locais. Então, como eu disse, se isso é 25 ou multiplicar isso por neste caso, se batermos na mão seria como 0,3. E então estamos definindo que como nosso retorno, estamos devolvendo esse número. Então agora de volta ao nosso gráfico de eventos, vamos chamar calcular danos. Então queremos que esse dano seja passado assim. Então, onde vamos atribuir esta estrutura, estatísticas de
armas para cada uma de nossas armas em nossa base, certo? Então, podemos individualmente em cada planta como temos feito muitas vezes em todas as crianças, vai encaixar em quanto dano queremos que esta arma faça. Então eu tenho usado o número 25. Então a nossa tristeza, a nossa espingarda de assalto causa 25 de dano. Vai passar por isso. Vai ter aquela loja variável 25, e são estatísticas de armas. Ele vai pegar esses dados, ele vai passá-los para dentro Vai calculá-lo. É como, ok, eu acertei a mão deste inimigo. Agora mesmo. Minha espingarda de assalto tem 25 danos. Mas eu bati na mão. Então eu estou tomando 0,3 ou o que quer que fosse, e então eu vou devolver 7,5 danos. Certo, então é assim que funciona. E então queremos passar neste resultado de sucesso também para ter certeza de que temos bem, estamos batendo em algo porque isso seria estranho. E então o que queremos fazer é atualizar a saúde dos nossos inimigos. Então, vamos querer criar uma nova função para isso e chamar essa data de abertura de saúde. E vamos fazer uma gripe e chamar isso de dano assim. E vamos transformar isso em uma sequência porque vamos fazer um par de pequenas coisas diferentes aqui. Queremos ser capazes de verificar se nossos inimigos estão mortos, essencialmente. Então Saturno retornaria. E vamos dizer que está morto e torná-lo um booleano. Certo? Então, fora do nosso dano aplicado, vamos maior ou igual a. E então diga ramo, whoa, whoa, whoa, whoa, o rhonchi, o ramo deles. Isso é mais parecido com ele. Ok. E vamos fazer uma nova variável e chamar isso de saúde atual. Vai ser o nosso inimigo tipo de saúde flutuador. Portanto, se o dano aplicado for maior ou igual à nossa saúde atual, digamos que nossa vida atual é 10 e nosso dano aplicado é 20. Ok? Se isso acontecer, então queremos
definir está morto ou não, na verdade, vamos criar um local é morto. Pode fazer a mesma coisa. Seja qual for. Isso é, exatamente como eu fiz antes. Vamos definir local está morto para ser verdade. E então vamos nos certificar de que nossa saúde não vá abaixo de 0, definindo-o como 0. Então é isso que acontece se eles morrerem. Se eles não morrerem, então queremos receber o dano que aplicamos. Queremos subtrair isso. Queremos que isto fique no fundo. Arrasta isto até aqui. Claro. Agora vamos tomar a saúde atual. Portanto, nossa saúde atual é maior do que a quantidade de dano. Então, nossa saúde atual é de 20. Estamos causando 10 danos e queremos subtrair 20 de 10. E então defina isso como nossa nova saúde atual. E depois de um, queremos ver se estamos mortos. E nós vamos ligar local está morto, assim. Para verificar e ver. Então nós criamos essa variável local. Poderíamos ter feito isso sem isso. Provavelmente poderíamos ter usado isso como morto. Mas é o que é. Estamos definindo o local como a mesma coisa de qualquer maneira. Então, realmente não importa. Então é isso que estamos fazendo aqui. Então, se sairmos daqui, então queremos fazer nossas atualizações de saúde. O dano aplicado será o dano calculado. E então estamos voltando, isso está morto. Então nós queremos definir está morto para qualquer que seja a saída deste foi. Então, se ficarmos sem Saúde, estamos mortos ou com a saúde de 0. Agora, se o dano que aplicamos for menor do que a quantidade de saúde que temos. Nós só vamos dizer, bem, nós não definimos isso para ser verdade ainda, então nós não estamos mortos. Ok? Então estamos armando muito bem para que façamos uma declaração de “se”. Ok? E então, se nós, por enquanto, vamos imprimir uma corda e dizer, eu sou David. Tudo bem? E então, por não dizer que eu ainda sou permitido. Todos os direitos. E isso deve ser tudo o que precisamos. Por enquanto, adicionaremos mais a isso mais tarde, alguns efeitos. Mas só por causa disso, podemos ver se isto funciona. Danos calculados. Por que nós também não imprimimos uma corda aqui para que você possa realmente ver o dano que nós somos, o que nossa saúde está em. Então vamos definir isso para 100. Por padrão, a integridade atual é 100. E vamos ver a subtração ocorrer e fazer tudo isso. Então a última coisa que precisamos fazer aqui é entrar em nossa arma indo ou Base de Armas e queremos adicionar essa estrutura. Então vamos à arma. As estatísticas fazem disso as estatísticas do tipo armas. Tudo bem, então agora você pode ver essas estatísticas. Então vamos para o nosso que já estava na pasta certa, não era uma pistola. E você deveria ver as estatísticas das armas. Vamos fazer com que isto cause 20 danos. Não precisamos nos preocupar com o raio de impacto porque ainda não faz nada disso. Então, agora, se entrarmos e jogarmos, escolhermos um bolinho, e atirarmos no nosso cara. E não funciona. Devo ter esquecido um passo. Oh, sim, eu sei o que é. Precisamos ligar para a cabeça que fizemos aqui. Então, se entrarmos em nossa base de armas, vamos em frente e criar uma função na qual
adicionamos dano ao nosso cara. Então, sim, sim, sim. Ok. Tão triste, nova função e chamar isso adicionar dano. Ok. Adicionar dano vai ter uma entrada de um resultado de TI como de costume, porque RNA sempre vai querer passar através de nossos resultados de sucesso. Nós não o perdemos. E então o que queremos fazer é pegar, já que não adicionamos a interface, queremos receber uma mensagem do inimigo, danificar essa interface. E então ele vai estar pedindo por algumas coisas. Então, quais são as nossas mortes por armas? Bem, é tudo o que conectamos em nossas armas. Então agora que os dados estão sendo transmitidos, queremos quebrar esse resultado de sucesso aqui mesmo. Ajudou-me a acertar resultado nos resultados de sucesso para que ele apenas se arrasta através desse tipo. Mas temos de dar a isto um alvo para acertar como o que está a sofrer danos. Neste caso, vai ser o Ator Hit, que está acontecendo, que é nosso inimigo. Um ator ou um dragão que passou assim. Ok, então isso é como passar informações através da arma para o inimigo. Receber danos diz o que realmente está
passando pela quantidade de dano que como nossas armas causam. E nós adicionamos isso ainda? Não, não temos. Ok. Então, saindo daqui, precisamos adicionar danos assim e isso vai ser pedir resultados de sucesso. E então esse resultado é esse. Então, apenas o mesmo. Então, agora espero que Deus funcione porque temos esses 20 danos passando. E ainda não é. O que está acontecendo na minha vida. Uau. Uau. Eu digo, ok, então eu descobri o problema. Então, se você se lembra de quando calculamos nosso, algum disso, quando calculamos nosso traço de linha, temos atores que vamos bater em alguns que vamos ignorar. Então o que poderíamos fazer é adicionar um alfinete, adicionar um lago ou outra coisa, porque é isso que isto é. Default set S. O que queremos fazer, o que podemos fazer assumido ir ir para a malha. E você provavelmente terá configurações diferentes neste. Provavelmente vai dizer peão ou algo assim. Vá em frente e defina-o como personalizado. Verifique se a colisão está habilitada para consulta e física. E defina o mundo do tipo de objeto 2 e dinâmico se você fizer essas três coisas na malha. Então é aí que estão os objetos físicos. E então você pega a pistola e vai andar até aqui. Então você terá os efeitos de impacto. Em toda a matemática está acontecendo. 30 está morto. E então ele não sofreu mais danos. Mas ele é, ele é um caso perdido. E eu acredito que isso está funcionando, então eu não tenho o jogo perfeito, mas para ele na cabeça deve ser 8650 para ter alguma experiência com isso também. Diga agora mesmo na matemática, que eu também posso ter estragado tudo. Meus efeitos de impacto são meus materiais parecem que a cabeça foi a cabeça está definida para estar lá. Sim. Isso será mais difícil de dizer se os cálculos de danos exatos e todas essas coisas estão
funcionando até que os números de danos no HUD apareçam. Mas se isso for errado, haverá algo fácil de consertar. Deve ser um erro pateta. Assim como definir isso para o tipo errado ou definir a escala de limiar danificada errada. Ou talvez até mesmo no corpo físico do manequim aqui. Talvez definindo algumas dessas coisas como as erradas ou algo assim. Nunca se sabe. Há algumas coisas patetas que podem acontecer, mas isso está funcionando como planejado. Até agora. Pode pegar nossa arma para entrar e ir para as outras armas agora mesmo. E você pode atribuir diferentes números de dano por baixo das estatísticas de
uma arma entre os vídeos e ver quanto dano você quer causar. Isso provavelmente vai levar mais brincadeira com quando nós realmente obter os números de dano e nós temos coisas diferentes para acontecer quando nosso inimigo dieta. Mas no momento em que você pode brincar lá dentro e se divertir um pouco. Mas sim, espero que tenham gostado deste vídeo. Obrigado por assistir. Se tiveres perguntas, avisa-me e vejo-te na próxima.
29. Visando visões: Ei, todo mundo. Neste vídeo, vamos adicionar a habilidade de apontar para baixo a visão de nossa arma. A principal razão pela qual eu queria fazer isso agora em vez de depois, é porque como está agora, nós realmente não podemos dizer exatamente. Acho que se nos virássemos diferentes. Bem, ok, olha, há algumas maneiras de fazermos isso. Poderíamos ligar a linha de volta. Nós bom olhar para o impacto afeta atrás configuração, mas muito honestamente, eu sinto que este recurso é uma espécie de longo prazo. E se estamos mirando, então nossos traços de linha vão sair perfeitamente. Subimos para nos preocuparmos com qualquer tipo de balas, espalhar coisas. Então vamos em frente e fazer isso agora. Então, dentro de nosso personagem, já
temos é variável de mira, mas queremos criar uma ação de entrada para mirar. Então vamos para nossas configurações, Configurações do projeto, Entrada. E vamos fazer outro e chamar isso de objetivo. E vamos fazer o botão direito do mouse assim. De volta ao nosso jogador, em nossos mapeamentos de ação, vamos chamar a mira. Certo? Então eu não quero ser capaz de mirar. Todos estavam recarregando. Isso é em primeiro lugar, vamos começar a recarregar. E digamos que não. Vamos ver se vai colocar isso no pressionado. Não quero ser capaz de recarregar enquanto chove. Agora, a maneira que vamos fazer isso é usar um Despachante de Eventos. Tudo bem? Nós não precisamos necessariamente, mas eu vou fazer isso dessa maneira apenas para mostrar como usar o Event Dispatcher. O primeiro e acima de tudo que queremos definir é o objectivo de ser verdadeiro aqui. Se apertarmos o botão. E então se
soltarmos, queremos que isso volte a ser falso assim. Então vamos em frente e criar este Event Dispatcher. E vamos chamar esse objetivo de entrar, e vamos chamar outra saída de mira. Então, o que você pode fazer com um Despachante de Eventos é, se você arrastá-lo para fora, você pode chamá-lo combinado ou atribuir. Acreditar que tudo o que vai fazer aqui é chamar e vinculá-lo. Então, quando você ligar, então tudo bem, deixe-me explicar assim. Você pode vincular você pode vincular os despachantes de eventos a vários eventos diferentes que existem dentro do seu jogo. Então, se eu criar um eventos personalizados e eu dizer oi. Então esses pequenos nós, você pode vincular, despachadores de
eventos, pode conectá-los a isso. Isso é o que esses pequenos nós ou quatro. Então, o que você pode fazer é vincular um evento a um dispatcher de eventos
e, em seguida, você pode chamar esse Event Dispatcher. E sempre que for chamado, ele também chamará todos os outros eventos aos quais ele está ligado. Então, quando clicarmos nisso, vamos chamar o objetivo entrar. Vamos apenas dizer ao jogo que entramos no nosso objetivo. Queremos chamar os movimentos parados. Então, se
apontarmos, não queremos correr. Isso é sempre uma coisa boa a se fazer. E então vamos em frente e tirar nossa carga. E isso é estranho. E ligá-lo. E copie colar. Queremos fazer isso duas vezes. Vamos ligá-lo lá. Então vamos chamá-lo de saída. Quando não estamos mirando. E podemos alinhar isto na verdade, fazer com que pareça agradável. Vamos ligar isso aqui também. Ok, agora vamos pegar nossos componentes de movimento de personagem porque nós queremos verificar para ter
certeza de que queremos definir nossa velocidade de caminhada, então definir e velocidade máxima de caminhada. E queremos fazer isso por ambos. Então, os alvos. E então para a arma perdeu como arma. Eu gosto disso. Isso parece bem. Então, se apontarmos a nossa saída, se sairmos da nossa mira, queremos obter velocidade máxima de caminhada, variável
que definimos para 750. E então podemos definir isso para ser uma variável também, mas eu vou definir como 250. Isso vai ser, você sabe, eu vou ser legal. Mirando, velocidade de caminhada, isso será para cima neste movimento. Velocidade máxima de caminhada. A velocidade de caminhada de mira será de 250. Então você gostaria de apresentar isso a uma variável. Você pode mudar isso também. E então eu só vou retardar o jogador quando nós não queremos ser capazes de mover a toda velocidade enquanto Amy não vai ficar bem. Também se sente muito difícil de se mover em uma maioria dos jogos quando você está apontando eles lento ano, Walk Speed para baixo como este. Então é isso que estamos fazendo lá. Certo, isso é tudo o que precisamos fazer dentro do nosso personagem. A próxima coisa que precisamos fazer é entrar na nossa base de armas. E vamos para o gráfico de eventos. E vamos até Event Begin Play aqui. E nós temos essa referência de jogador aqui. Então nós podemos realmente fazer isso direto para fora daqui. Então vamos vincular evento para mirar inserido. Aqui está o nosso Despachante de Eventos. E vamos fazer de novo. Vincular Evento para mirar saída, assim. Então agora podemos criar um par de eventos e ligá-los a isso. Então, quando isso acontecer, esses eventos também acontecerão. Tudo bem, então vamos criar um evento personalizado e chamar esta arma apontar, entrar. E vamos criar uma variável é arma de mira. E vamos definir isso para ser verdade. E então para saídas de AIM, vamos fazer a mesma coisa. Vamos dizer arma, mirar saída. E estes serão eventos curtos que vão ligar e desligar este booleano. Está bem? E vamos dizer multas visando a ação de entrada
ADS na parte. Então o que isso está fazendo é ligar essas variáveis com essas essencialmente. E há outra maneira, há outras maneiras de fazer isso, certo? Mas eu queria mostrar a vocês como fazer isso através de um Event Dispatcher para que você
possa criar uma linha muito mais complexa de script de código, evento ou qualquer outra coisa fora daqui, vinculando isso a algo e você pode vincular coisas várias vezes diferentes e como ter como sete eventos diferentes disparar todos ao mesmo tempo. Sempre que você chamar um Despachante de Eventos. Uma maneira fácil que poderíamos ter feito isso é no nosso script Interact. Poderíamos ter criado um desses chamados interagir. E nós podemos apenas chamar interagir em nosso evento de ação Interact e colocar ação poderia apenas dizer, chamá-lo, chamar interativo. E podemos ter um monte de eventos diferentes ligados a isso em um deles poderia ser
um evento que poderíamos ter como cliente ruim e nos chamar de interagir ou o que quer que seja, e então conecte isso. E então poderíamos ligar isso a um despachante de eventos e depois chamá-lo aqui. É uma maneira diferente de fazer as coisas. Sim, não vamos fazer assim. Então, porque somos muito legais. Uma coisa que eu quero fazer aqui é recarregar automaticamente em vazio. Quero chamar a saída da mira da arma. Este evento, saída de mira da arma. Oh, uau. Isso é literalmente bem ali. Espere. - Sim. - Sim. Na minha cabeça. Está bem. - Sim. São ordens estranhas. Está bem. Então, estamos apenas a recordar este evento. Então, quando recarregamos automaticamente em vazio, queremos sair da nossa mira. Não queremos continuar mirando e recarregando ao mesmo tempo. Então é bom fazer isso. Muito disto vai estar na nossa espingarda de atirador. Porque o rifle sniper apontando, já que é uma mira, vai funcionar um pouco diferente. Então, amarrá-los aqui vai nos ajudar quando criarmos o rifle de atirador. Então você pode não ver um monte de funcionalidades com ele agora, mas ele voltará mais tarde. Então a próxima coisa que precisamos fazer aqui é entrar no nosso plano anim sobre nosso personagem. Porque nós vamos usar essa pose de cache e criar
uma outra coisa inteira e , em seguida, descontar essa pose e, em seguida, conectá-la lá. Mas nós fazemos isso. Bem, precisamos ter certeza de que todas as nossas coisas são ditas, todas as nossas variáveis realmente lembradas. Então precisamos criar três variáveis em nossa base de armas. Então vamos chamar 11 X offset. Tudo isso vai ser ortografia flutuante. Então eu tenho um x offsets, Y offsets, e um Z offset. E eu vou colocar isso em uma categoria chamada “mirar”. Então vamos fazer o deslocamento x, y e z primeiro. Então vamos adicionar essas variáveis aqui agora. Deslocamento X do tipo flutuador, deslocamento y. Novamente flutua e, em seguida, Z offset. Tudo bem, e então nós queremos chegar é mirar. E isso vai ser um booleano assim. Tudo bem, então vamos para aqui depois de recarregar. Vamos em frente e definir é o objetivo de obter a referência do jogador e obter está mirando em casa. Até sei, mais uma vez, preguiçoso com as minhas caixas comuns. Eu sei o que essas coisas fazem. Mas é bom tê-los separados ainda. Ok, a próxima coisa que queremos fazer é definir o jogador. Vamos pegar a arma atual deles. E, em seguida, vamos obter o deslocamento X e, em seguida, definir isso como X deslocamento bem aqui. , assim, assim, assim. E então vamos fazer isso para o deslocamento Y. Set, que é o deslocamento Y. E, em seguida, uma última vez, mas os deslocamentos z irá definir isso. Isto é, eu explico isso mais tarde. O que esses números estão fazendo vai dizer offsets para qualquer nomeação. Então essas variáveis são x, y e z. Vamos personalizar por arma para ser capaz de ditar onde queremos realmente
mover a arma para fazer com que pareça que está se cruzando com a tela no ponto do meio exato ali. Então agora que temos nossa configuração variável, agora
podemos usá-los. Então vamos pegar o X e pegar o Havaí. E vamos agarrar Z. E vamos agarrar, está mirando. Quero agarrá-los a todos. Vamos começar com o posto avançado de carga. Então vamos pegá-lo e quebrá-lo de lá e agarrá-lo. E queremos, como de costume, transformar, modificar osso. O osso que vamos modificar é a coluna B 1. Mais uma vez. O que vamos fazer é nos livrar da escala e da rotação e vamos nos dividir. Acho que disse errado. Livre-se da escala e da rotação e divida a tradução. E então nós vamos ligar x, y e z para esses valores lá assim. Vamos em frente e obter uma nova animação. Vamos a um jogo de tiro. Animações lá dentro deve haver uma chamada de rifle, AIM. Apontar. Sim. Então vamos acertar sim, ele vai jogar seus alvos de leitura esqueleto. Eu acho que isso realmente tem como se houvesse um efeito sonoro que podemos adicionar aqui. Então, se você quiser, você pode clicar aqui em Adicionar notificar e reproduzir som e, em seguida, encaixar o som e você provavelmente teria que
corrigir o arquivo de som. Nós temos isso adicionado agora. Então vamos voltar ao nosso plano de anim e vamos apontar o rifle. E isso vai criar um componente de dívida local. Então estamos pegando nossa animação de mira de rifle, e então vamos compensar essa espinha por valores
diferentes que vamos definir porque essa mira
de rifle não vai perfeitamente configurar cada arma para estar mirando perfeitamente em o centro da tela. Então vamos ser capazes de definir esses números de acordo para torná-lo melhor. Então vamos misturar poses por bool. Vamos ligar isto para a verdadeira pose. Se estamos mirando, então sim, queremos fazer isso. Se não estamos mirando, vamos usar esses postos avançados de carga que temos aqui a
partir da saída do nosso recarregamento. Então eu tenho um pequeno computador e meu próprio roteiro. Esgueira-te isto aqui. Oh, ok, e então vamos guardar esta pose e vamos dizer “carregar para fora”. Estou ficando sem nomes aqui. - Sim. Tudo bem, e então vamos obter baixa carga para fora de mira comando pose. Oh, meu Deus. Oh, meu Deus. Por amor de Deus. E meia hora depois. Eles podem estar lá o tempo todo e seu cego seja lá o que for. Está bem. Sim. Vamos em frente e adicionar deslocamento para virar arma. Durante a mira para baixo o site ou o que você quer dizer lá. Então faremos a nossa cor habitual. Então isso vai fazer isso. Então agora, o que não é como transformar componentes para modificar, selecionados? Meu Deus, como isso nos fez, odeio como sempre é padrão, ignorar. Certifique-se de que o definiu para adicionar ao existente. E então ele vai te dar o ar. Então, agora, se entrarmos e pegarmos uma arma e mirarmos, você pode ver como ela não é perfeita. Está fazendo o que deveria estar fazendo. Mas não está claramente no lugar certo, certo? Mas está mirando. E você vai notar que isso é como perfeitamente feito nosso dano anuidade AutoML mas e ver como isso está perfeitamente aparecendo onde queríamos posar para a direita. Então está fazendo a coisa de propagação ousada. E então está mirando perfeitamente. Parece estúpido e ridículo. Então a próxima coisa que vamos fazer é dizer a vocês quais são esses valores para cada arma. E assim, bem, não parece horrível. Então vamos em frente e fazer isso agora. Vou entregá-los a você em ação de fogo rápido. Tudo bem, então para a espingarda automática, você vai ter um deslocamento X de 1,5. O deslocamento y será negativo dez, e o deslocamento Z será 0,5. Compilar e salvar isso. Vamos fazer a pistola no próximo produto que você não fizer. O primeiro deslocamento X é 0,9. O deslocamento Y vai ser 15. Então ele vai empurrar isso para a frente um pouco. E então os deslocamentos z vão movê-lo para cima, vai ser 9.2, as espingardas em seguida. E o deslocamento X vai ser 1.3. Y offset vai ser negativo 0,5. E por último, mas não menos importante, o deslocamento Z será sete. Então, a meio do caminho imediatamente, vamos mostrar isso. Então temos esta arma, esta arma, esta arma armada. Então agora que parece, você ainda pode ver o ponto branco. Vamos fazer isso desaparecer em um segundo. Mas isso parece muito, muito bom. Eu acho que então a espingarda também é como muito precisa bem ali. Então está tudo funcionando bem. Vamos em frente e fazer o próximo. Estes rifles de atirador vão funcionar um pouco
diferente para que você realmente não precisa se
preocupar com isso em tudo. Então, sim, não se preocupe com isso. Mas para o lançador de granadas, o deslocamento X será de 0,5. Y vai ser deixado em 0, e então z vai ser 0,5 também. E então, finalmente, para o nosso lançador de foguetes, o x vai ser um valor de 1. Y vai ser deixado em 0 mais uma vez, e então z vai ser negativo quatro. Então, com tudo isso feito, como eu disse, o atirador negro não importa. Mas temos alguns problemas com o lança-foguetes. Mas o lançador de granadas parece bom. Isto também vai disparar um arco. A última coisa que eu acho que devemos fazer é ir para o nosso vermelho, eu coloco essas plantas em nosso HUD e nós podemos,
bem, mais produtos para editar, começar a jogar, certo? Obter uma referência para o nosso personagem. Ok, e então vamos obter uma declaração se fora daqui. E então vamos dizer, git está mirando. Se não estivermos mirando. E queremos desenhar o retângulo. Então vemos a pequena linha aqui e ela desaparece. Então um pequeno ponto branco desaparece. Agora, quando estamos mirando, assim como o resto da mira faz. Então podemos usar isso como radical. Então você não quer ver esse ponto branco o tempo todo. Então esse é o roteiro que eu fiz bem feio. Farei com que fique linda em um segundo. E você pode fazer isso também, se quiser. Caso contrário, funciona, mas é assim que pretendemos no nosso jogo. E a coisa de espalhar a bala parecia que funcionou muito bem. Então isso deve ser tudo bem e bom. Então sim, é assim que você aponta em jogos de vídeo vai embrulhar este vídeo. E vejo-te no próximo.
30. Zoom de câmera de ADS: Oi a todos e bem-vindos de volta a outro vídeo na última lição, se eu me lembro correto, porque é reconhecidamente já faz um pouco de tempo. Você chama isso? Começamos a adicionar apontar para o jogo. Neste vídeo, eu quero adicionar apenas um recurso a isso. Então, se entrarmos no nosso jogo e pegarmos uma arma, ou quero dizer, qualquer um desses honestamente e retomar ou miramos. Você percebe que as câmeras um pouco para trás, que é um pouco difícil de ver. Então o que podemos fazer é mudar nosso campo de visão. Podemos empurrar essa câmera em um pouco, se estivermos mirando ou não, e fazer isso parecer um pouco mais dinâmico. No último vídeo, eu encontrei um problema e eu resolvo isso rapidamente quando para o nosso inimigo. Se você esta é R calcular função de dano que é chamado de Gráfico de Eventos, colina direita. Então, o que você pode fazer é tirar
desse dano calculado como se eu não tivesse imprimido uma corda. Então, toda vez que você atirar uma arma, ele vai te dar o dano de volta. E o erro tolo que cometi foi sobre este recurso de física aqui. Eu fiz a cabeça, acho que foi uma mão. Então é por isso que eu estava bombeando pequenos números, mas você vê que eu tenho minha pistola ajustada para 20 e se eu atirar, ele faz 201614610, e depois quatro. Então Zun para danos na cabeça antes e isso foi estranho. Não é o que queríamos. Então, uma maneira fácil de corrigir que se você está encontrando algo assim, Vamos em frente e selecionar o inimigo. Você pode ir para esse recurso apertando este botão, abrir nosso ativo de física e apenas certifique-se de verificar se eles estão corretos. Então o que eu fiz foi ter um pescoço e uma cabeça ajustados à mão e não à cabeça porque eles são parecidos. Então estava fazendo por danos antes. Então essa é uma maneira fácil de corrigir isso e certificar-se que e você tem os ativos físicos certos em. E então esse era realmente o único problema que eu queria ter certeza de que era corrigido. Isso pode ser outra coisa que você provavelmente nem encontrou. Mas eu fiz. Então vamos seguir em frente. Então vamos abrir a base de armas e vamos fazer uma nova variável. E vamos chamar isso de “taxa de disparo”. Estou olhando para a taxa de disparo agora. Campo de visão. Vamos chamá-lo realmente apontar campo de visão porque há uma variável built-in chamado campo de visão vai torná-lo um flutuador. Então queremos abrir nossos componentes de personagem assim porque vamos precisar de nossa câmera. E queremos fazer isso dentro de uma função. Então vamos criar uma nova função e vamos chamar este campo de visão de objetivo. Podemos dar o mesmo nome. Primeiras coisas primeiro, vamos em frente e chegar é mirar. E queremos verificar se estamos mirando ou não. Você só quer que isso aconteça se estivermos mirando. Vamos em frente e pegar nossa câmera. E nós vamos realmente fazer dois
desses para fazer algo fora do verdadeiro e algo fora do falso. E então digamos que define campo de visão para ambos. Então, se você Deus, eu acho que nós selecionamos na câmera e entramos, você pode apenas procurá-lo acima campo de visão definido como 90. Então vamos mudar isso. Então é 90, quanto maior o número, mais para trás ele vai olhar. Então, um monte de caldeirão, pessoas que jogam jogos de PC são como meio que fazer esse campo de visão realmente amplo, extra largo. E então esse é o número que eles estão mudando quando você faz isso em suas configurações. Então nós queremos empurrar esta câmera um pouco mais longe e nós estamos dinamicamente ajustados isso. Está bem? Então vamos precisar de uma câmera novamente, e vamos precisar obter essa variável de campo de visão, que está definida como 90. Acho que você pode mudar isso. E não queremos que isto se encaixe neste novo campo de visão. Nós queremos que ele interpele então nós vamos ter uma interrupção F para flutuar. Interpretar que descrevi antes o que significa interpolação. Então vamos pegar nossa arma atual. É por isso que eu quase não gosto de colocar as coisas em categorias porque eu tenho que gostar de descobrir, oh Deus, onde eu coloquei isso? E queremos ter esse campo de visão de mira. Então nosso campo de visão normal é a corrente que queremos mover para o alvo, que é o que vamos definir. Então eu guardo essa variável nos pais da arma para que possamos sempre continuar chamando de volta para isso dinamicamente mudar isso dependendo do que temos. Para a velocidade de interrupção. Vamos apenas definir para ser 10. Você pode mudar isso para o que quiser fora de sua preferência pessoal. Basta saber que se ele está definido como 0, ele vai encaixar lá imediatamente, que nós vamos obter. Mundo que Delta segundos para o nosso tempo delta, é muito, muito normal lá. Tudo bem? E depois vamos copiar e colar isto. E então a única coisa que vamos fazer, bem, vamos em frente e vamos definir isso para ser um 90. Então, se você quiser alterar seu campo de views valor padrão, você pode promover isso para uma variável por amines, mas eu não estou alterando de 90 SMS indo para difícil, defina-o de volta para 90. Ok, então isso é basicamente apenas correndo se não estamos mirando. Então a corrente é 90 e estamos nos movendo para 90, onde essa é outra maneira de dizer que não estamos fazendo nada. E então vamos devolver este para o campo de visão. Se estamos mirando como, oh, é lindo. E então podemos dizer mudanças, O que é ser extravagante F0 v. Se mira arma, o hahaha. Como uma bela como essa, maravilhosa compilar, salvar, fazer o que você tem que fazer. Agora vamos voltar para a nossa base e vamos estar no gráfico
de eventos se você ainda não estiver lá. E vamos entrar no espaço aberto. E nós vamos querer executar isso fora do tique-taque do evento. Se você se lembrar, o tick do evento é como uma atualização nula. Ele corre cada quadro ou cada segundo terá lugar ao mesmo tempo, eu acho que vamos apenas dizer que cada quadro, ok, Profissional. Vamos pegar o nosso jogador e queremos executar este evento. Cada quadro. Apontar campo de visão, nós queremos estar verificando, ok, estamos mirando o tempo todo? Para que possamos mudar esse campo de visão. Então, para padrão, para este campo de visão, vamos realmente defini-lo para um padrão de 70. Então, apenas saiba o número mais baixo que você definiu como. Quanto mais ele for empurrar para dentro, mais ele vai ampliar assim. Só vou deixar isso aí por enquanto. Então, já que isso está definido para 70, você deve realmente ver isso. Então, se eu pegar nossa espingarda automática e você pode ver agora em zoom dentro e zoom volta para fora assim. E se você notar, você pode ter tido algum tipo de problema de corte com a arma e como o zoom do Cameron, ele realmente vai consertar isso. Então, se eu fosse fazer algo pateta como fazer 30 e você quisesse algum tipo de vamos ver, você tem um escopo quatro vezes na sua arma, então isso vai fazer com que não pareça muito ruim. É meio legal de certa forma, mas esse é o efeito que vamos fazer assim, mas eu vou definir para 70. Acho que isso é um pouco menos ridículo. Então você pode ir em frente e pular em qualquer uma
dessas armas e mudar isso para que você possa fazer a pistola talvez zoom um pouco mais. Nosso lança-foguetes faz esse tipo de coisa estranha de recortes. Vou mostrar-lhe como corrigir isso, mas saiba que vai exigir muitos passos. Então, se você entrar nas configurações do projeto e apenas eu estou, eu vou apenas ir para quase digitar isso em. Você verá perto do avião de corte. Se você definir isso para ser um número menor como cinco ou algo assim, isso provavelmente vai se livrar do recorte que você está vendo. Ele virá com um trade-off, que
significa que as coisas, se eu me lembro disso corretamente, as coisas à distância não estão necessariamente indo para carregar tão longe porque o plano de corte está mais perto da câmera. Então você com isso, como você gostaria, este é um país livre em que eu vivo, pode fazê-lo. Você não vai apenas saber que se você alterar essa configuração, ao contrário de muitas outras configurações aqui,
você vai ter que fechar o seu programa e, em seguida, abrir o
backup do seu Unreal Editor para realmente ver essas alterações. Então pode ser muito tedioso. E você provavelmente precisará alterar seus deslocamentos X, Y e Z também. Porque isso pode ficar, não vai ser alterado. Só vai gostar de um olhar um pouco diferente se o plano de corte mudar. Assim como algumas coisas têm em mente, mas sim, vá em frente e vá para as diferentes armas e veja que tipo de níveis de zoom você quer. Sim, isso tudo funciona. Está tudo com bom aspecto. Então isso é tudo o que tenho para este vídeo. Obrigado por assistir. Vejo-te no próximo.
31. Adição de marcadores de batidas: Olá a todos e bem-vindos de volta a outro vídeo. Neste, vamos continuar nosso roteiro inimigo. E vamos adicionar alguns marcadores de acerto à nossa arma inimiga. Nem sei o que é, qual seria tecnicamente, o que vai aparecer e atingimos o inimigo. Então, vamos adicionar fora de se você ainda não tem nosso inimigo aberto para este evento, inimigo recebe dano. Em vez dessas cordas de impressão bobas, vamos realmente fazer algumas coisas legais. Tudo bem, então vamos começar indo para a nossa pasta de interface do usuário e vamos fazer um novo widget e podemos chamar isso de marcadores de sucesso. Agora, se você baixou os arquivos do projeto para esta classe, que você deveria, nós vamos usá-los aqui. Então vamos por baixo de ícones e teremos marcador de acerto. Isto é para o nosso Minimapa, que ainda não classificamos. Esta é a nossa espingarda de atirador. Vamos apenas ir em frente e arrastar e soltar todos os três. Você pode se sentir livre para criar outra pasta chamada texturas, mas eu vou apenas colocá-los todos na interface do usuário. Agora, estes vão aparecer parecendo muito patetas. Então podemos consertar isso como se nós abrirmos isso. E se formos até aqui para o grupo de texturas, definimos isso para ser UI. Você pode ver que agora corrige isso, realmente
não muda nada sobre isso. Só faz com que a miniatura não pareça lixo. Então fatos divertidos ao redor há uma maneira de massa fazer todos aqueles todos ao mesmo tempo, mas não são tão profissionais. Ok, então vamos esses ácidos aqui. Vamos em frente e ir em nossos widgets marcador de hit. E nós vamos fazer algumas coisas legais agora, ao contrário de antes, nós realmente queremos que isso seja de um tipo, perfeito, nós não vamos definir isso para ser desejado ou cliente qualquer coisa porque nós queremos que isso apareça no centro da nossa tela. Porque se você pensar assim,
bem, marcadores de acerto devem estar sempre
no centro da tela porque nossas balas estão atirando para fora do centro da tela. Então não precisamos realmente fazer nada super louco com isso. Tudo bem, então vamos em frente e adicionar uma imagem ao nosso painel de tela. E vamos chamar este marcador. Podemos centralizar isto ou ancorá-lo no centro, dizer posição 0, posição y é 0. E precisamos alinhar 0.5.5 no x e no y. e vamos em frente
e também acertar o tamanho para o conteúdo. Agora podemos encaixar nossa coisa marcador de sucesso, e é gigantesco. Então você pode definir isso para ser o valor que você quiser. Vou escolher 60 por 60. Então vamos fazer assim. E isso deve ser bom. Aí está o nosso pequeno marcador. Fiz isto no Photoshop. Não é o melhor, mas faz o trabalho. Agora o que nós vamos fazer é que nós vamos querer 0. Já é uma variável. Bem, irreal, apontando a arma para mim lá. Vamos criar um par de animações. Queremos criar dois deles. Queremos fazer um por um, temos um sucesso normal, e um para quando tivermos um golpe de morte porque somos chiques. Tudo bem, então vamos criar um, chamá-lo de normal, bater assim. E a única coisa que vamos estragar aqui como nosso cenário transformado. Então, se você rolar para baixo para renderizar transformação, e vamos querer fazer escala. Vamos apenas clicar neste quadro-chave na escala. E ele vai abrir este menu suspenso e nós temos nossas configurações de escala bem aqui. Então padrão, vamos fazer isso 0 por 0, certo? Em seguida, com 0,2 cincos relativamente rapidamente, vamos adicionar dois quadros-chave e torná-lo 0,7 de seu tamanho no tamanho real. Está bem. Na verdade, vamos fazer do tamanho normal. Certo, pontos 75. Vamos definir esses quadros-chave novamente. Então, basta apertar esses dois botões novamente para que ele
ainda esteja no mesmo tamanho por esse período de tempo. E depois em um segundo. Finalmente, vamos apenas fazer isso em dois quadros-chave e defini-lo para ser 0 e, em seguida, 0 novamente. Então, agora, se reproduzirmos esta animação, ela só fará isso. Então ele vem para cima e, em seguida, zoom de volta para baixo como aquele lago todo bonito. Ok, agora vamos criar outra animação e chamar isso de morte. Por morte atropelada. Vai ser muito parecido. Então vamos pegar a balança mais uma vez. Padrão ou não padrão, mas em 0 segundos, torná-lo 0.25. Vou fazer este um pouco maior. Então talvez como 1,2 por 1 para definir isso novamente em 0,75 segundos e, em seguida, em 1 segundo, defina-o de volta para 0. Então agora é exatamente a mesma coisa, só um pouco maior. E a outra coisa que queremos mudar é que queremos ter certeza que isto é vermelho. Então podemos fazer isso indo para bater marcador e, em seguida, indo em cor e opacidade. E nós podemos honestamente bater em qualquer um desses. Eu só vou bater R. E a única coisa que precisamos fazer é definir todos esses valores como 0. Então deve significar que a é a opacidade. Então mantenha isso em um. Queremos que G e B sejam definidos como 0. E podemos arrastar isso o tempo todo. Ou eu poderia ser capaz de me livrar desse realmente está pronto para ser lido Omega. Então agora é vermelho. Então você tem apenas no AR, fazer que um e, em seguida, padrão, estes devem ser definidos como 0. E é apenas sobre o déficit. Então voltamos ao sucesso normal. É branco e morte, mas é um pouco maior e nossas cores, não, nada de trabalho. Certo, agora o jogo me odeia. Está bem. Talvez tenhamos colocado tudo isso. Espere, antes de voltar para um, então você brinca. Está bem. Apenas defina como casa. Isso realmente não importa. Simplesmente assim. Tudo bem, lá vai você. Então, basta definir os quadros-chave para todos eles e isso deve funcionar. Tudo bem, agora nós vamos realmente precisar dizer o jogo no gráfico de eventos, bem, quando você quiser executar esta animação. Então vamos fugir da construção do evento. E queremos fazer uma nova variável, e vamos chamar isso de “está morto”. E seria um booleano. E queremos expor isso na desova. E nós podemos simplesmente ir em frente e torná-lo instância editável também. Porque não? E o que vamos fazer é ligar isto com
a variável morta que existe dentro do nosso inimigo. É por isso que estamos expondo isso em gerações que quando criamos esse widget nesse blueprint, ou esse blueprint que podemos fazer é vincular esse valor com, esse valor é tão fácil. Agora, embaixo de Animações você deve ver que nossa morte tinha uma cabeça normal. Então, se está morto é verdade, Vamos agarrar definido e dizer Play Animation assim. E tudo isso deve ficar bem. O padrão, se não estiver morto, queremos obter o hit normal e reproduzir essa animação. Tudo bem? E então eu vou ir em frente e bater um nó de atraso aqui só para evitar isso. E ligue os dois lá dentro. Apenas para evitar que estes de fazer sobreposição estranha e as coisas não
são mesmo que os impedem de apenas dar-lhe tempo para esta animação realmente jogar. Uma coisa que você pode fazer é que você pode obter o tempo final destes e conectar isso em um atraso. Eu faço isso às vezes, mas por causa deste 1 segundo, funciona muito bem. Então é tudo o que precisamos fazer. Podemos fechar os marcadores agora em B, volta ao inimigo. Ok? Então, há algumas coisas diferentes que queremos fazer. Ainda não criamos nossos números danificados. Então vamos precisar fazer algumas coisas diferentes fora daqui. Sim, eu vou ficar com essas cordas de impressão por enquanto. Tudo bem, e é verdade e apenas dizer que estou morto. Então, queremos ter um para o falso. Tudo bem, então vamos sair daqui, queremos dizer, é válido? E nós vamos ligar algo aqui em um segundo, e nós vamos ligar a reta falsa aqui. Essas coisas serão adicionadas mais tarde com nossos números de dano. Tudo bem? Então off de não é válido. Não importa qual deles fazemos isso. Vamos criar um widget. Não importa qual deles vamos tirar isso agora. E então vamos querer criar nosso marcador de sucesso. Então agora temos isso é variável morta. Então vamos agarrar está morto a partir deste projeto, é a ligação que para cima. Então agora essas duas variáveis estão vinculadas. Vamos avançar e clicar com o botão direito do mouse e promover isso para uma variável e chamá-lo marcador hit, ref para referência ou o que for. E, em seguida, queremos adicionar ao viewport. Tudo bem, legal. Agora temos esta referência do marcador de sucesso. Vamos conectar isso em nossos objetos de entrada assim. Off of é válido. Vamos, provavelmente não podemos fazer isso. Pegue uma referência de marcador de ocorrência e diga Remover do pai
e, em seguida, conecte isso do é válido, como este, e depois mova de volta para a corrente. Então, a razão pela qual esta pequena parte existe, esta vontade. Então ele vai estar pedindo para você como criar o widget marcador de hit essencialmente, certo? E suas balas ou eu atiram e muito rápido, especialmente com o rifle automático. Então você vai, ele vai estar dizendo ao jogo com cada hit para criar um novo marcador de hit. Mas o jogo que eu recebo, vamos ficar um pouco confusos porque vai ser como você está tentando criar um widget antes que ele tenha sido removido da tela. Você está apenas criando-o, criando e criando sem nunca removê-lo. Então, vai ficar confuso. Vai te dar apenas alguns avisos ou o que quer que seja. Então esta nota aqui praticamente diz como, ok, se os marcadores de hit já estão na tela, em
seguida, removê-lo e, em seguida, criar um novo. Então você poderia apenas dizer, para fins apenas diz remove marcador
anterior se outro hit ocorrer antes do primeiro, este peers, Eu não sei. Espero que isso faça sentido. É como ele está impedindo o jogo de criar gosta de acertar marcadores de uma só vez. Então remover um deles, vai
acontecer tão rápido, que você nem vai notar, mas sim, é uma coisa. Então isso agora pode funcionar como está, mesmo outras partes do script faltando. Então vamos até aqui. E vamos filmar. E lá vamos nós. Perceba que não pegamos ele ou ela, então não batemos em nada. Mas se
acertarmos nosso cara, vamos fazer nosso marcador aparecer. E se você notar, devemos matá-lo em breve. Lá vamos nós. Ali está o vermelho e o Saddam fez. Tudo bem, e agora eles não devem aparecer mais. Eles não fazem. Então isso ficará aparente na espingarda automática. Então o todo como remover do pai coisa. Você pode tipo de ver como ele não criou como 4 mil deles na tela ao mesmo tempo. É muito rápido de ver são muito difíceis de ver, eu acho. Certo? Lá vai você. Há marcadores de acerto, como se as armas de tiro fossem
atingi-lo com todas essas marcas diferentes ao mesmo tempo. Então só aparece com um marcador de acerto em vez de oito. Como isso. Tudo bem, então todas essas coisas devem estar funcionando se suas balas não estão causando nenhum dano. Só para ter certeza que você vai para a classe e vai para as estatísticas de armas e ter certeza que você realmente está danificado. Coisa fácil de perder. Então, sim, legal. São marcadores de acerto. Próximo vídeo, vamos fazer números de danos e nos livrar
dessas cordas de impressão feias e fazer isso parecer incrível. Está bem, então vemo-nos lá. Obrigado por assistir.
32. Adição de números de danos: Olá a todos e bem-vindos de volta a outro vídeo. Na última lição, adicionamos marcadores de acerto ao nosso jogo. E neste nós vamos estar adicionando ao nosso cui calças extravagantes e adicionando alguns RPG legal como números danificados para a tela. Então vamos começar. Certo, vamos para nossa pasta de interfaces. E vamos adicionar uma nova interface. Então vamos para blueprints e Blueprint Interface. E vamos chamar isso, deve manter o nome mesmo BPI sublinhar números de dano. Agora, o que poderíamos tecnicamente fazer isso fora de um evento personalizado. Mas no nosso jogo. Ok, se você pensar sobre isso, se você quiser adicionar a isso, e você quiser criar um monte de inimigos diferentes. Digamos que fazer uma oferta de uma interface seria muito fácil porque então você poderia apenas continuar criando esses eventos e essas funções essencialmente que serão criando dentro daqui. Então imediatamente poderia fazê-lo apenas fazendo um evento. Mas não é assim que fazemos aqui, está bem? Porque eu queria criar este projeto de uma forma que você possa facilmente adicionar um implemento a ele. Então é por isso que estamos fazendo assim. Então vamos mudar o nome da nossa função padrão e chamar esse número de dano. E queremos ter três entradas aqui. Queremos que um seja um flutuador, um para ser
um vetor, e depois um para ser um booleano. E vamos chamar o dano do flutuador. Chama-se localização de impacto vetorial. E vamos chamar o Booleano é um tiro na cabeça assim. E é tudo o que precisamos fazer lá dentro. Tudo bem, e então podemos rolar para baixo dentro do nosso inimigo BP. E vamos para nossas configurações de classe e adicionar essa interface. Então vamos BPI. Números danificados Bpi, compilar
e, em seguida, podemos ir eventos danificados números. Então agora temos que eles são chamados aqui e podemos começar a fazer algumas coisas fora dele. Mas não temos nada criado. Ainda não temos nossos números de dano criados, então vamos ter que fazer isso primeiro antes que possamos fugir disso. Tudo bem, então vamos para a UI. Vamos criar um novo widget e vamos chamar isso de números de dano assim. E podemos abrir isto. Tudo bem, então a primeira coisa que queremos fazer é ir em frente e definir este tamanho de tela para ser desejado em nosso painel de tela. Vamos colocar uma caixa de tamanho. Este tamanho de caixa, vou chamá-lo de caixa de tamanho. Vou transformar isto numa variável. E eu vou definir isso para 100 por 100. Assim e você fica com essa âncora. Oh Deus, ancorando, estragou tudo. Acho que isso realmente não importa. Oh, nós fizemos. Bem, isso é constrangedor. Ok, bem, negativo 50, 50, 100, 100. Realmente não importa. Ok. Vamos só, eu não gostei de ver aquela coisa no centro. Ok. Agora vamos adicionar algum texto à nossa caixa de tamanho. Mas em cima da caixa de tamanho. E nós vamos chamar isso de algo como Oh, eu não sabia que não estava bem. Texto danificado. O que é irreal para ele? É como não mostrar o meu, ainda está dividido. Também fazendo as edições. Ok, e vamos em frente e tornar o texto danificado variável. Vamos alinhá-lo no centro, assim. Em, vamos ter que ser um texto padrão de como algum número como 99 ou algo assim. Então temos nossas fontes adicionadas. Vamos fazer deste um tipo de letra negrito como este. Nós vamos fazer de um tamanho de, eu realmente não gosto que ele seja tão grande. Alguém pode ter a perna 18. Sinta-se livre para fazer este olhar. Como você quiser. Isso é tudo isso de arte, coisas de pansy
chiques para você que estou fazendo agora. Ok, para um deslocamento de sombra, eu quero adicionar um pouco de sombra. Então vamos fazer dois por dois. E para a cor da sombra, eu vou realmente fazer este show porque o nosso valor está definido para ser nada agora. Eu vou fazer isso como 0,5 sobre algo assim. E você sabe, e eu estou feliz com isso. Você pode alterar a justificativa ou todas essas configurações estranhas. Mas em poucas palavras. Isso é o que eu quero. Ok, então agora precisamos criar uma animação para isso e chamá-lo de dano aplicado ou algo assim. E nós vamos dar a isso um efeito para tipo de pop-in e, em seguida, sair de volta. Tudo bem, nós vamos fazer isso como zoom in,
zoom de volta para baixo, e então tipo de flutuar para cima um pouco. Deixe-me pensar no que fazer por um segundo. A primeira coisa que quero fazer é mexer com a balança. Então, vamos em frente e verificar se o texto danificado está selecionado e descer para a escala. Vamos pegar o X e o Y, e pode desaparecer. Então nós queremos que este seja 0 no início. E depois de 0,25, vamos fazer como 1,5 seu tamanho. Tudo bem, e então em 0,5, vamos fazer com que alguns quadros-chave possam ter seu tamanho verdadeiro em 11. Então está fazendo esse tipo de coisa. E então é isso. É, na verdade, preciso fazer para a balança. Ok. Então isso é legal. Sabe, eu estava pensando em como se ele se desvanecesse se quiser que ele se desvaneça aqui. Eu acho que, como
eu disse, eu não quero gastar uma quantidade ridícula de tempo
nos widgets e gosto de fazer tudo isso porque você vai fazer como você quer fazê-lo parecer de qualquer maneira, tudo bem. A única outra coisa que eu quero fazer é
mexer com a tradução no x e y. então vamos adicionar alguns quadros-chave aqui como este. E então vamos sair para 1.25. E eu acho que nós só precisamos do sim, nós só precisamos do y. Então ele pode realmente excluir os x1. E então vamos definir isso para ser movê-lo talvez como 10 negativo. Então agora ele vai jogar em uma espécie de mover-se para cima assim. Oh, nós precisamos que ele desvaneça para dentro e para fora. Sim. Você precisa fazer com que ele vá embora. Tudo bem. Veja como precisamos fazer isso, certo? Mas temos o nosso movimento tipo de coisa para baixo. Agora vamos para a nossa interface do usuário, já que adicionamos uma sombra. Então funciona irreal. Você precisa fazer isso com a cor da sombra e apenas a cor e opacidade normais. Então essas duas coisas vão ser a mesma coisa, os mesmos valores. Então, por padrão, podemos apenas fazer este 0. No momento em que atingimos 0,25. Vamos fazer um conjunto. A coisa toda está carregada em 1 segundo. Vamos apenas adicionar os quadros-chave novamente para ter certeza de que eles estão definidos para ser um. E, em seguida, em 1,25, Vamos fazer o valor a 0. Então, agora, se reproduzirmos toda essa animação, ela faz isso. Tudo bem, eu sou muito louco. Como eu disse, sinta-se livre para enlouquecer com adição de quadros-chave em brincar com um monte de coisas,
qualquer coisa com este rótulo que você possa mudar. Você pode criar um quadro-chave e alterar esse valor ao longo do tempo. Tudo bem? Mas não vamos perder muito tempo com isso. Tudo bem, então vamos sair do Event Construct aqui. E vamos pegar o texto do dano. Oh, você sabe o que? Precisamos criar um par de variáveis nisso. Então vamos fazer um e chamá-lo de dano, e torná-lo de flutuador. E vamos criar um e dizer é headshots em torná-lo uma instância
Boolean entradas editável e expor ambos na geração. A razão pela qual fizemos isso é porque nós
precisamos, nós os criamos aqui e nós só queremos ligar essas duas coisas eventualmente. Ok, então vamos pegar nossos danos. Isto vai ser o que a nossa cadeia de impressão atual está fazendo. Quanto dano estamos causando. Uma coisa que queremos fazer atualmente é se não
queremos que nossos números mostrem pontos decimais. Então, com a forma como a matemática
funciona, é possível que possamos causar 7,5 danos ou algo assim. Não queremos que os números danificados apareçam como 7,5, mesmo que isso possa ser mais preciso. Então podemos fazer para carros alegóricos é que podemos traçar o Snowden, dizer andar. E o que isso fará é evitar decimais. Ele vai, É como arredondar para baixo. Tudo bem. Assim são os textos danificados que você deseja definir, SetText, obter este texto conjunto de widget
e, em seguida, conecte isso assim. Então ele vai adicionar esta pequena nota extra aqui e então nós vamos ligar isso. Então o que isso está fazendo é que estamos fazendo o que quer
que seja esse número de dano, o que não é nada neste projeto, mas vamos ligá-lo a danos aqui. E esse valor que é controlado em nossa web e plantas, vamos vincular essas duas coisas. Vamos nos certificar de que não mostre casas decimais. E então vamos colocá-la como em nos livrar das casas decimais porque queremos ver isso. Ok, agora vamos pegar nosso texto danificado de novo. E eu quero pegar o tiro na cabeça. Então eu quero mudar a cor
do texto de dano se levarmos um tiro na cabeça porque isso é meio divertido. Então, podemos retirar um nó que literalmente é chamado Select Color. Tudo bem? E, em seguida, fora do valor de retorno, podemos dizer fazer cor de ardósia como esta. Em seguida, fora dos textos de dano, digamos definir cor e opacidade. E você verá que temos essa nova opção para uma cor de ardósia e vamos deixar isso aí assim. Tudo bem, e agora tudo o que precisamos fazer é ter um para um e um para B. Agora, a vai ser se isso for verdade. Então eu vou fazer isso antes de torná-lo amarelo e eu já tenho essa cor vermelha, então eu vou apenas, eu vou apenas torná-lo vermelho. Tudo bem. E então eu vou ter que não headshots ser branco ou algo assim. Eu gosto de amarelo, mas eu realmente não sinto que você pode fazer a cor que você quiser para suas fotos. Certo, a última coisa que queremos fazer é pegar nosso dano de animação aplicado. E queremos tocar a animação. Tudo bem, então vamos tocar sua animação e depois queremos ter um atraso. E então queremos remover isso do pai, que está se livrando do widget. A razão pela qual temos este nó de atraso aqui é para
evitar a remoção do nosso widget da tela antes que a animação seja reproduzida. Então isso vai correr como um quadro como instantaneamente. Então, mesmo que nós estaremos tecnicamente jogando a animação também será remover todo o widget da tela ao mesmo tempo. Então precisamos ter um atraso. Vai dizer obter n tempo para a nossa animação. Então vamos apenas obter o tempo N para essa animação, que é 1,25 segundos. E então vamos atrasar por essa quantidade de tempo antes remover todo o nosso widget da tela. Tudo bem, então é tudo o que precisamos fazer com isso. Então lá vamos nós. Agora vamos voltar para o nosso inimigo. E vamos passar por baixo deste evento aqui. Certo, e a primeira coisa que quero fazer é criar um widget. Esse widget que queremos criar é números danificados. E uma vez que temos essas variáveis como expondo a geração, agora
podemos vê-las bem aqui. Então vamos ligá-los assim. Desde que tudo bem. Agora local de impacto, este vai ser o local será querer que os números realmente apareçam. Agora, precisamos adicionar algum nível de aleatorização a isso. Porque se você está atirando a arma, você normalmente não está movendo-a o suficiente. Selecione os números, os números se sobrepõem. Tudo bem, vamos ser simples aqui. Então precisamos adicionar algum tipo de aleatorização a este local aqui. Então vamos começar por obter o controlador do nosso personagem. E há esta pintura realmente extravagante o nó chamado Project world location to widget position. Vai pedir-nos uma localização. Então vamos colocar isso aí assim. E isso é tudo o que precisamos para isso. Agora ele tem uma posição de tela de uma estrutura vetorial 2D. Nós vamos quebrar isso. Então agora temos uma coordenada x e y em nossa tela. Tudo bem, então agora temos que fazer uma matemática chique e chique. Então, para o x Adicionar, vai querer adicionar 100 negativos a isso. E então vamos fazer isso e adicionar outro flutuador mais um carro alegórico. Então nós vamos adicionar este negativo 102, um flutuador aleatório no alcance como este, hum, e então eu vou fazer menos 25 como o mínimo e
o máximo como cento e cento e cento e cinquenta. Ok, então fora do Y, vamos querer adicionar mais carros alegóricos. E este vai ser mais negativo 100 novamente. E então nós estamos indo para, ele vai copiar colar esses dois. Isto está controlando nossas localizações aleatórias x e y. O mínimo para o y, que é para cima e para baixo vai ser 050, assim. E por último, mas não menos importante, só
precisamos juntar essas duas coisas. Passei um bom tempo mexendo com esses números. Isto é o que eu sinto. Ele cria uma boa propagação aleatória para mim, na minha opinião. Então, se você pensar sobre essa matemática que estamos adicionando 102 negativos. Então, o menor número que isso pode ser para o nosso x, que é este para frente e para trás, é negativo 125 para positivo 150. Então, como essa é a maior quantidade que pode espalhar desta forma, os números. E, em seguida, o, isso pode ser tão baixo quanto negativo 100 e negativo 100 mais 0 é negativo 100 ou negativo 50. Então isso é o máximo que podemos ir nessa direção. Então você vai ter esse tipo de seção transversal assim. Se você quiser fazer o número mínimo potencial como 200 negativos, então você obteria um negativo 100 mais potencialmente negativo 100 e você pode fazer isso. Mas estes são os números que eu senti serem decentes o suficiente. Tudo bem. Então, o que fizemos, oh, na verdade não quero juntar essas coisas. Nós quebramos o vetor. Então agora queremos transformar esses carros alegóricos de volta em um vetor. E queremos fazer o vetor 2D assim. Porque este é apenas um avião 2D em nosso widget aqui. E então vamos definir a tradução de renderização. Por que sabe, faz isso comigo? Talvez precisemos pegar. Vamos pegar nossa caixa de tamanho. Lá vamos nós. Vamos me dar o nome idiota. É por isso que precisávamos fazer disso uma variável. Se você não fez isso, não pode obter isso, basta torná-lo em uma variável ou selecionar caixa de tamanho e apenas definir a variável. Pode funcionar fora daqui. Agora defina, renderize. Lá vamos nós. Definir à direita, ou tradução. E a tradução é essa. Então, estamos realmente mudando a localização da nossa caixa de tamanho. E lembre-se que nosso texto é uma criança da caixa de tamanho. Onde quer que a caixa de tamanho vá, a escala numérica. Vamos ligar isso assim, assim. E então podemos sair daqui e dizer “Adicionar ao Viewport”. Ligue isso. Então tipo de um script de login pateta, não vai mentir entre vídeos desde que eu não quero ser este uma vez que você pertence. Então eu provavelmente vou adicionar as caixas comuns e outras coisas entre eles. Só te mostrar o que eu fiz. A última coisa que queremos fazer é que queiras ligar para este evento. Então aqui temos algumas cordas de impressão patetas. Isto é no nosso caso e pode sofrer danos. Ok? Então nós não adicionamos nenhum tipo de morte inimigo M de coisa. Mas faremos isso no próximo vídeo. Porque o nosso ramo falso significa que não estamos mortos. Certo, queremos ligar para números danificados, que é isso. Agora estamos ligando e ele está pedindo essa informação. Ou e isso deve ser bastante simples. Então, danos, queremos que este não seja o dano a partir daqui. Tudo bem, haverá incorreto. Queremos obter o dano calculado, que é redefinir esse número baseado em qualquer parte do corpo que atingimos, essencialmente com qualquer arma que tenhamos. Tudo bem. Vamos pegar nosso resultado de sucesso e podemos tirá-lo daqui, na verdade quebrá-lo assim. Para localização de impacto, queremos ligar isso ao impacto normal. Tudo bem, e a última coisa que precisamos é que isto seja um tiro na cabeça. Então vamos pegar nosso material físico e vamos ter o tipo de superfície. Certo, e temos uma cabeça chamada. Então podemos fazer é dizer iguais. E vamos dizer, isso é igual à cabeça? Se for, então será um tiro na cabeça e isso retornará verdadeiro. Tudo bem, então isso é tudo o que precisamos fazer para isso. Então, se entrarmos e jogarmos, aqui está um momento de verdade. Então, se fizermos esta filmagem, temos 16, a cerca é 20 e amarela ou vermelha. Lá vamos nós. 1014600 antes de lá irmos. 16. Acho que errei. E lá estamos nós. Eu estou morto. E não disparou números, acho que para a morte final abaixo. Tudo bem, porque tem os marcadores vermelhos que fazem isso por nós. Realmente. Saber. Por que isso funcionou? Não funcionou. Estamos longe. Talvez eu seja cega ou algo assim. isso foi muito estranho. Não está funcionando a uma certa distância? Bem, vamos descer aqui. Ok. Então, reconhecidamente, eu nunca vi isso acontecer antes. Eu não tenho absolutamente nenhuma idéia por que ele está apenas aparecendo dentro de um certo raio como esse. Porque está a funcionar da mesma forma que o marcador de acerto está. Então realmente não deveria estar acontecendo. Então, pode ser algum tipo de questão interna, porque isso é muito estranho. Eu não tenho idéia. Então, se eu puder ser apenas uma falha estranha, pode
ser algo com minhas configurações. O script é exatamente o mesmo neste blueprint no projeto anterior. Então eu acho que se você olhar para me avise se eles estão experimentando o mesmo tipo de coisa. Mas isso é uma coisinha muito estranha. Porque como eu disse, os marcadores funcionam exatamente da mesma maneira e ainda
está aparecendo não importa dependendo da distância. Então, se eu encontrar algum tipo de solução para isso, então eu vou te avisar. Caso contrário, vou manter o trem em frente porque pode ser um inseto estranho e
irreal que não tem nada a ver conosco. Ou pode ser apenas um cenário estranho, algo que eu alterei que você nem está experimentando porque
parece que todos os bugs que eu tive até agora só por minha causa, não por causa de qualquer outra coisa. Então fique do meu lado. Quero dizer, ser um idiota, como colocar o material físico errado na cabeça e coisas assim. Mas esse é o vídeo, é
assim que você faz os números de danos. E então você tanto para assistir. E vejo-te no próximo.
33. Animação Defeated de inimigos: Olá a todos e bem-vindos de volta a outro vídeo. Entre os vídeos, eu tentei olhar um pouco para o que poderia estar causando como um problema são números danificados. E se você olhar para o nosso antigo projeto aqui, você vê que isso é exatamente o mesmo de antes. Ou isso ou sou cego. E se eu entrar e atirar de longe, os números ainda aparecem. Então, não tenho certeza se estou sendo honesto o que está causando o problema. Às vezes o motor só encabeça bugs ou problemas ou o que quer que aconteça e é possível, provavelmente mais provável que eu tenha alguns problemas. Então, se você está correndo para o mesmo tipo de problema onde os números de dano estão apenas aparecendo em um determinado intervalo. Eu realmente peço desculpas, mas como eu disse, eles batem marcadores estão trabalhando no script é exatamente o mesmo. Então, não tenho certeza. No final de toda essa classe, eu provavelmente adicionarei algum tipo de vídeo de correção de bugs onde nós apenas entramos e corrigimos alguns dos pequenos problemas que nosso projeto tem, que é um lugar comum para literalmente todos os jogos de vídeo criado como parte do processo. É por isso que as equipes de QA existem. Tudo bem? Mas vamos manter o comboio em movimento, está bem? Porque se você notar agora em nosso jogo, nós temos o marcador de sucesso vermelho legal quando nosso personagem morde a poeira. Está bem, mas só diz que estou morto e que queremos fazer coisas legais. Queremos tocar uns sons. Queremos fazer física de bonecas de pano, certo? E queremos adicionar alguns impulsos. Certo, então vamos fazer algumas coisas legais de física neste vídeo. Então, mais uma vez, vamos precisar de uma pesquisa de nossos arquivos de projeto é para ser o último. Então, quando temos uma pasta chamada áudio e só tem um efeito sonoro aqui. Então, debaixo do FPS. Eu não disse isso direito, jogo FPS. Tudo bem. Vamos fazer um chamado áudio. E este será nosso único arquivo de áudio honestamente. Mas podemos arrastar e largar isso lá dentro. Irreal gosta de sons de ondas. Então isso precisa ser uma onda e eu gostaria de um MP3 ou algo assim se você quiser adicionar seus próprios sons para o jogo. Este é realmente um som da franquia de campo de batalha se você levar um tiro na cabeça matar. Mas eu acho que é, é uma espécie de som legal em geral. Tudo bem. Só um pouco, um pouco mais de flare. Está bem. Sei que não sou muito bom quando se trata de aulas. Na verdade, passei muito tempo no sinalizador, no meu próprio tempo livre, mas estamos falando sobre fazer essa informação, tudo bem, então eu estou, eu estou no gráfico de eventos para as aulas. Então, há, há um pequeno,
pequeno sinalizador vindo de mim. Tudo bem. Então vamos em frente e substituir esta corda de impressão pateta por um evento real que vai, que vai ser executado. Ok, então vamos criar uma função e chamar este inimigo de morte. Eu bati no espaço? Tem uma lágrima? Muito melhor. Certo, então para a morte inimiga, vamos pegar duas entradas. Sim, sim, sim, sim, sim, sim, sim. Está bem. Vamos chamar um deles, acertar o local, fazer disto um vetor. A razão pela qual isso existe é para que possamos passar por um local para adicionar um impulso. Tudo bem, para fazer nossa animação de morte, física de bonecas de
pano parecer incrível. Tudo bem, o outro nós vamos ter como um nome de osso e vamos fazer disso um nome. Queremos dizer ao jogo
qual osso estamos batendo nesse personagem para aplicar esse impulso? Certo, então não estamos realmente adicionando animações, estamos apenas adicionando impulsos físicos nos personagens. Esqueleto, que obviamente parecerá mais legal. Então, fora daqui, vamos fazer uma sequência ou escrever um. E então nós queremos pegar nossos componentes de malha de nosso inimigo. E queremos dizer simular física. Tudo bem, então este testamento, nós verificamos isso em uma nova simulação. Isto significa que, para esta parte, estamos habilitando a colocação de boneca de pano. Física aqui onde estamos definindo, estamos simulando alguma física em nosso ano de malha. Vamos deixar tudo para trás. Tudo bem, a próxima coisa que queremos fazer, adicionar um alfinete, vai tocar um som hoje. E o som que queremos vai ser morto. Uma que pedi para vocês adicionarem bem ali. E por último, mas não menos importante, vamos pegar nossa malha novamente. E nós vamos adicionar um impulso em um local. Então isto vai conduzir um impulso legal aqui. Tudo bem, então vai ser pedir um nome de osso e uma localização. Bem, temos um nome de robô e temos uma localização. Então nós fizemos nosso dever de casa, pessoal. Tudo bem, então está tudo pronto. E a última coisa que precisamos fazer é realmente ter um impulso. Agora, a maneira legal de fazer isso é fazer que
diferentes armas tenham diferentes quantidades de impulsos para a pistola provavelmente terá um impulso muito baixo. Mas o lança-foguetes, queremos que um impulso gigantesco exploda sobre este inimigo. Então eles voam pelo ar e vai ser incrível. Tudo bem, mas depois de fazermos isso, não
vamos pegar você, os componentes da cápsula. E queremos destruir este componente. Isso só permitirá que possamos andar sobre esse personagem. E nenhum outro tipo de eventos com eles será capaz de desencadear agora que o Componente Cápsula, isto desapareceu. Tudo bem, então estamos apenas destruindo esse componente. Se destruíssemos todo o ator do que toda essa malha e tudo desapareceria, o que seria lamentável. Então, talvez em outros jogos, você teria um nó de atraso e então você destrói todo o ator. Então eles estavam apenas fora do pop fora da existência ou o que quer que seja. Bem, não vamos fazer isso aqui. Ok, então vamos pegar uma referência para o nosso jogador. E queremos a localização do ator. Então, estamos conseguindo a localização do ator. E então queremos a localização do ator novamente. Então este é o alvo, aqui é o jogador, esta é a localização do jogador. E então esta é uma referência ao eu. Então agora esta é a localização do nosso inimigo. Tudo bem, eu quero a direção da unidade. Então, estamos recebendo um vetor da localização do nosso jogador para a localização dos nossos inimigos. Tudo bem, e nós vamos multiplicar isso. Então, um vetor vezes um flutuador. Então a saída disto vai ser o nosso impulso. O que queremos fazer fora do jogador é pegar a arma atual e precisamos criar uma variável em nossa arma atual ou Base de Armas. Em outras palavras, e vamos chamar isso de impulso de morte, torná-lo um flutuador. E vamos definir isso para ser padrão como 10 mil. Tudo bem. Agora vamos em frente e obter impulso de matar de volta. E a função de morte inimiga em que vive dentro do nosso inimigo e conecte isso. Então, estamos conseguindo. A localização do jogador, uma linha de vetor desse local até o local do inimigo. Tudo bem, então em outras palavras, isso seria exatamente a mesma coisa. É como nosso traço de bala de certa forma porque estamos atingindo o ator, estamos atingindo nosso inimigo. E nós vamos multiplicar isso por esse impulso e então usá-lo para fazer um vetor de um impulso que ele está pedindo, assim. Então este script está feito. A última coisa que precisamos fazer é sair deste verdadeiro ramo aqui. Eu realmente quero que isso passe sobre Sada, verdade, vamos chamar a morte inimiga e ligar isso. Então, se os nossos inimigos estiverem mortos, vamos comandar este inimigo da morte, esta função de evento da morte, está bem? Se não estiverem mortos, faremos os números dos danos. Tudo bem? Então vai ser pedir outras coisas,
localização e, e todas essas coisas que você provavelmente pode adivinhar. Então, se
pegarmos esse local, adicionamos um pequeno nó de redirecionamento, então não teremos que puxar daqui. Podemos sair daqui. Então vamos tornar o impacto normal. Os resultados, atingem a localização e depois o nome do osso. Este tem um nome de osso como uma opção e basta ligar isso lá, apenas passar isso dentro ou o que quer que seja. Temos luz laser, mostrar todas estas linhas coloridas diferentes aqui. Tudo bem, e então isso vai se conectar como aquele RA. Então o que podemos fazer para ser divertidos sobre isso ou o que quer que seja, vamos em frente e vamos mudar essa arma de espingarda. Tem de acabar com o impulso e tornar isto algo louco como 50 mil. Isso parece 50000. Sim, está bem. E vamos manter pressionada a tecla Alt e arrastar alguns outros inimigos aqui. Tudo bem, e eu apertei Play. E assim a espingarda automática está programada para estar em 10 mil que é uma falha. Então lá vamos nós. Cheio no chão lá. Se eu lhe acertasse no braço, digamos que para o tiro mortal, ele voaria de volta. O impulso será colocado no nome do osso naquele local. Então vai disparar o impulso deste braço assim. Então ele realmente se move lá atrás e descobrir a arma de tiro. Podemos mostrar que temos um impulso de quiloohm maior. É como cinco vezes mais que ele pode voar. Isso pode não ser nada que é o que eu tenho como por padrão no outro projeto. Mas vamos ver. O un, un voa assim. Este pobre homem. Mas ele tem, então é assim que você adiciona impulsos e outras coisas. Então o jogo, então agora você pode adicionar mais inimigos e outras coisas. Você vai ter sons legais e tudo mais. Então, a epístola, isto é provavelmente muito alto. E senhorita. Lá vai ele, de novo por trás, voando naquela direção. Você pode ver como tudo isso está se juntando agora. Temos no pé. Tudo bem, então tchau, tchau. Tudo bem, então sim, você vê como funciona lá e eu só estou me divertindo neste momento. Ok? Então é assim que se adiciona quilojoules. Temos o nosso som fixe a funcionar. Tudo parece bem até onde essa coisa vai. Então, lá vai você. Oh, vocês gostaram deste vídeo. Sinta-se livre para entrar no seu diferente que nós só temos, você sabe, quero dizer, você pode mudar isso se você quiser Reno, mas eles realmente não fazem nada agora. Isso é o que vamos fazer chegando como adicionar o projétil. Mas se você quiser mudar a pistola triste e tiro arma para ser diferentes impulsos matar. Esse seria o meu palpite. Está bem. O padrão é 10 mil. Acho que essa é uma quantia bastante decente para uma dessas armas. Então eu sinto que isso é uma quantidade bastante realista para tipo, você sabe, desculpe, eu vou digitar arma. Tudo bem, para que você possa fazer mais para a espingarda. Você tem a espingarda ser muito, você sabe, a pistola ser um pouco menos o que você quiser fazer. Espero que tenham gostado deste vídeo. Vejo-te no próximo.
34. Projeteis de fotografia (parte 1): Olá a todos e bem-vindos de volta a outro vídeo. Neste, vamos adicionar a uma base de armas. E vamos finalmente permitir-nos fotografar alguns projéteis. Então terminamos com nossas armas de varredura de sucesso. E agora precisamos seguir em frente para o projétil. Tudo bem, vamos fazer isso. Então vamos entrar no jogo FPS. Vamos criar uma nova pasta e chamar isso de projéteis. E vamos definir uma cor. E vamos fazer uma nova classe blueprint do tipo Actor. E vamos chamá-lo de base de projéteis. E vamos abrir isso e arrastá-lo pelo topo. Algumas coisas que queremos fazer, vamos adicionar componentes do movimento do projétil, ok, este projeto, como o movimento tem algumas configurações diferentes que podemos manipular. Podemos mudar ou eventualmente seremos capazes de mudar para nossa velocidade inicial. Vamos fazer algo como 10 mil e a velocidade máxima, também 10000. A escala de gravidade do projétil um é bastante intensa, então vamos fazer com que seja 0,2. Vamos mudar isso dependendo da arma que temos. Assim como um lançador de granadas vai ter
a maior escala de gravidade de projéteis porque vai ser mais de um arco em direção ao nosso rifle de precisão provavelmente terá o mínimo. Também provavelmente vai ser o mais rápido. Está bem. Isto não deve saltar. Não precisamos fazer nada assim. Fora do sénior 2, vamos fazer uma colisão de esfera, e vamos chamar isso de colisão. E vamos em frente e fazer disso a nova raiz. Por que não? Uma coisa que queremos fazer com esta colisão, eu acredito, deixe-me apenas verificar simulação muito rápida, ok, então se tivermos esta colisão selecionada, tudo bem, apenas certifique-se, sim, ok. Então, se eu tiver essa colisão selecionada, queremos pesquisar evento e queremos ter certeza de que selecionamos simulação gera eventos de sucesso. Este é um passo muito importante porque se você não fizer isso, toda vez que você acertar algo com uma arma de projétil, ele vai te dar erros. Tudo bem? Porque com a forma como criamos a nossa base de impacto, isso vai estar à procura de um material físico que atingiu. E assim, enquanto um jogo vai saber que o projétil atinge algo, ele, ele só vai ficar confuso. E não está simulando uma geração. Diz que não está a simular um evento de sucesso. Ele não vai pensar que atingiu nada e então ele não vai saber que som tocar e que efeito para gerar e coisas diferentes como essa. Então, certifique-se de ter verificado isso. Consulte Evitar erros. Tudo bem. Então vamos pegar uma malha estática que será uma criança para nossa colisão e vamos chamar isso de malha de projétil. E não precisamos encaixar em nada para isso agora ou fazer nada. Com isso. Não creio que tudo isso esteja bem por enquanto. Nós provavelmente vamos fazer algumas mudanças para isso eventualmente, mas é o que é. Ok? Vamos criar um par de variáveis. Vamos dizer que este está causando dano de raio. Então este será definido para ser verdadeiro para a nossa granada e foguete. Eles vão estar causando um raio de dano onde o rifle de atirador é só você acertar alguma coisa e foi isso que acertou dois. Também queremos pegar nossas estatísticas de armas aqui, aquela estrutura que criamos uma estatística de arma. E vamos em frente e ter certeza que isso é, para que possamos ligar isso na nossa base de armas. Vamos torná-lo instância editável. É supor em uma desova. E, por último, mas não menos importante, queremos garantir o nosso efeito de impacto. Então vamos obter impacto, afetar referência de classe base, Compilar e salvar. Tudo bem, e isso está tudo bem. Então vamos criar uma referência ao nosso jogador. E você provavelmente já sabe disso, mas podemos arrastá-lo para fora daqui e fazer qualquer uma das pernas o que quisermos. Eu sempre promovo isso a uma variável para que possamos desenhá-la assim. Mas sair daqui e entrar aqui é fazer a mesma coisa. Nós, você não precisa definir isso para uma variável cada vez. É assim que eu roto. Acho que já sabias disso, mas só quero ter a certeza. Está bem. Sou um movimento de projéteis. É clicar com o botão direito. Adicione um evento e queremos fazer no projétil, pare. Tudo bem, e você vê bem aqui tem um resultado de impacto. Já aqui para nós, que é criado. Bem, nós queremos fazer. Então este é um evento que irá correr quando chamado,
quando o projétil chegar a uma velocidade de parada abaixo do limiar de simulação. Tudo bem, então está basicamente dizendo que quando isso atinge algo e não está definido para ser, deve saltar. Certo, vamos fazer uma função e chamar isso de projétil de parada. E vamos ter isso, ter uma entrada de um resultado de hit do tipo hit resultado. Se você compilar isso e voltar para o gráfico de eventos, podemos chamar isso imediatamente assim e, em seguida, basta conectar os resultados de hit como tal. Então é assim que nosso gráfico de eventos deve estar parecendo. É tudo o que precisamos fazer. Então agora, vamos parar o projétil e vamos fazer uma sequência. Mas algumas coisas acontecem simultaneamente aqui. Queremos verificar se estamos causando dano de raio fará duas coisas diferentes. Se estamos, queremos executar uma função diferente que ainda não criamos. Mas, por enquanto, não
vamos fazer isso. Vamos criar isso mais tarde. Então, uma coisa que queremos fazer, vamos pegar o resultado de sucesso em quebrá-lo. Certo, e depois queremos pegar o ator de sucesso. Então vamos sair daqui, devemos dizer: “Nós temos isso?” Nós fazemos. Então, fora de Ator Hit, podemos fazer inimigos sofrerem dano como esse. Porque esse é um dos toros Zak que podemos aquecer. Este é o nosso BBA, estes gays, certo? Então precisávamos pegar algumas estatísticas de armas. Se você se lembra aqui, se o inimigo sofrer dano, está pedindo estatísticas de armas. Então criamos uma variável para estatísticas de armas. Então, podemos ligar isso. E se você se lembra, esta arma agora, ok, isso é nós voltamos para a Base de Armas, certo? E vamos começar a filmar. E nós temos isso, estamos chamando este evento e estamos ligando estatísticas de armas. Então estes são os que vivem dentro das crianças da nossa base de armas. Então isso está sendo passado em suas estatísticas de arma quando ele aparecer aqui. E agora eu estou ligando a variável dentro daqui também, aquela dentro da base de armas. Ao fazer isso, isso é apenas passar em todos os dados. Se você não poderia adivinhar os resultados de HIT, vamos ter que ser exatamente o mesmo resultado assim. Então agora precisamos fazer algumas coisas artísticas. Então, você sabe o quê? Isto não deve ligar aqui. Isso deve ser apagado do falso. Se não estamos lidando com padrões prontos, então vamos sofrer danos. Se formos, então vamos criar uma interface diferente que tenha sofrido dano de raio, que terá algumas coisas diferentes disparadas. Tudo bem, então vamos pegar nossa malha de projétil e vamos dizer jogo escondido. Ligue isso. E queremos fazer com que isto seja um novo oculto. Então, batemos em algo, queremos que a malha desapareça, não
queremos mais vê-la. Então vamos fazer o mundo se transformar. Então a localização disso em uma transformação, x, y, z. E queremos gerar um ator de uma classe. O ator que queremos é o nosso efeito de impacto. E nós vamos. Então fizemos isso para uma variável. Lá vamos nós. Assim, agora temos um resultado de sucesso que precisamos passar. Então vamos fazer isso e redirecionar assim. Vamos configurá-lo para sempre gerar, ignorar colisões. Não queremos que isso tenha algum tipo de problema. E então vamos executar este nó que diz definir a vida útil. Isso é semelhante a destruir um ator como “Aqui está a coisa”. Você não pode chamar nós de atraso dentro de uma função. Então isso não é uma coisa. Então defina a vida útil quando ela expirar. Objeto B é verdadeiro. Então isso é o equivalente a fazer atraso por 0,1 segundos e depois Destroy Actor. Então, estamos apenas definindo o tempo de vida só porque você não pode colocar atrasos e funções. Ok, eu não faço as regras. Então podemos vir para encaixotar isso. Então podemos dizer remove malha,
gera, impacto, efeito, destrói ato. Isso é o que tudo isso está fazendo. Portanto, há mais do nível artístico de script. E esta é a função. Isto é o que está fazendo as contas e as coisas é o que está enganando o jogador para pensar que, bem, então as coisas realmente acontecendo na tela. Oh, nós precisamos passar em uma transformação. Oh, nós nunca conectamos esse nó. Tolo eu. Ok? Então precisamos fazer algo agora, se estamos causando danos no raio. Tudo bem, então vamos fazer isso. Vamos criar outro e chamar isso de projétil explodido. Tudo bem. Isso vai ter um resultado de sucesso também. E chamaremos de resultados de sucesso. Tudo bem. E eu acho que vamos fazer isso provavelmente em outro vídeo, mas vamos apenas ir em frente e chamá-lo de z. Queremos que eu só quero que o atirador funcione primeiro, mas é assim que funciona. Então você tem que explodir projétil e isso será um resultado de sucesso. Acho que não mudou o nome. Eu nunca compilei. Podemos todos viver se você está bem. Então domine isso. Explodindo o projétil em um vídeo diferente quando estamos lidando com o outro. Obrigado. Ok, então isso é tudo o que queremos fazer dentro da nossa base de projéteis agora, voltamos para a nossa base de armas e voltamos para começar a disparar. O que queremos fazer é que queremos agora fazer coisas para que se definirmos a nossa arma para ser um projétil, o que vamos fazer é obter traço de linha
calculado
e vamos acertar o Controle W. Copie isso. E vamos dizer calcular rejeitar. Agora o que eu fiz aqui é que eu tinha uma malha de arma em um encaixe de arma em Calcular traço de linha. E a razão pela qual isso foi e eu estava confuso, por que nunca usou? A razão foi porque eu
costumava ter o traço de linha e o projeto como dentro da mesma função. E eu mudo isso. Então agora eles trabalham em diferentes formas. Então essas duas coisas são realmente inúteis para calcular o traço de linha. Você pode se livrar do soquete da arma e da malha da arma. Você só precisa da câmera. Tudo bem, e isso vai te dar um erro porque te odeia. E então podemos clicar com o botão direito do mouse aqui e podemos dizer atualizar nós e, em seguida, apenas se livrar disso. E isso ainda deve funcionar perfeitamente. Ainda funciona bem. Está bem. Nós não precisávamos dele. Está bem, mas vamos precisar dele dentro dos cálculos. projétil vai precisar dos três. Muito bem, vamos precisar da malha da arma, da câmara e do encaixe da arma. Então estes vão ser apenas, apenas sempre tão ligeiramente. Na verdade, há muitas serifas. Então, em vez de calcular projétil, você pode realmente simplesmente se livrar dessas coisas. Apenas livre-se da maior parte. Mantenha o nó de retorno. Livrar-se disso, livrar-se de DrawLine, traço e tudo mais. E nós vamos apenas promover essas duas variáveis locais. Então, vamos dizer malha local de armas. Então nós vamos realmente estar usando estes aqui, ao contrário do outro que nós fizemos. E, em seguida, tomadas de armas. Lembre-se que já existe. Então, o que quer dizer com “está em uso”? Oh, meu Deus. Sim. Quero apagá-lo. Esperar o quê? Não, espere. Tomada de armas. Oh, meu Deus. Estou tão confuso ou afundar objeto componente. Meu Deus, vou promover isto a uma variável local. Quero dizer, “Oh, veja, ele não existe. Ok? Às vezes, essa cópia colar, realmente te deixa boa. Tudo bem, então ok, nós apenas meio que nos dados o que fizemos no outro, o outro projeto lá, para que isso pareça estranho. Tudo bem. Então temos nossa câmera local ou malha de arma local em nosso soquete local. Tudo bem, então o que queremos fazer, eu vou apertar o controle e eu vou mover isso para cima e me livrar desse nó de redirecionamento. E o que queremos em vez de um resultado de sucesso é que queremos obter uma transformação que é semelhante a um local. Então, em vez de resultados de acertos, vamos obter a transformação de projéteis. E vamos chamar isso de transformação, porque ele vai estar nos perguntando quando gerarmos nossos projéteis podem nos
perguntar onde precisamos fazer isso. E vamos promover isso a uma variável. E vamos chamá-lo de objeto. Vou me transformar. Tudo bem? Não precisamos que isto seja definido como nada agora. Então você tem todas essas coordenadas bacanas e chiques. A razão pela qual não precisamos disto é porque queremos pô-lo aqui. E agora vamos fazer um roteiro para definir isso. Então isto é para o nosso projétil. Então vamos em frente e pegar nossa malha de armas local e nossa tomada de arma local. E nós vamos dizer obter a localização do soquete. Vai ser talvez tirando um imediatamente. Por padrão. Apenas apague isso. Então, basta obter a localização do soquete. Nós conectamos nossa malha de armas local e nosso soquete de armas local ou definir as variáveis porque nossa malha de armas sempre está mudando. Ok? Queremos transformar isso em uma transformação, pegue aquela. Tudo bem, e então ele vai estar nos pedindo uma rotação e escala e tudo mais. Nós não nos importamos com escala definida. Mas o valor de retorno disso será a nossa transformação CINAHL. Vamos pegar nossa câmera local e vamos pegar o dono. E então vamos lançar para o jogador da BP. Podemos clicar com o botão direito sobre isso e podemos dizer converter para puro elenco. E odeio esse preconceito de falácia. Tudo bem, então agora vamos dizer que obtém rotação de controle e tubulação para rotação. Então o que isso está fazendo
aqui é onde precisamos transformar o que vocês verão em um segundo aqui para disparar nosso projétil. Então estamos conseguindo a localização da malha de armas e estamos pegando o nome do soquete. Lembrem-se que se chamava flash de focinho. Estamos conseguindo isso. Então é isso que vamos dizer. Nosso ponto de desova é que é a nossa localização, ok? Mas precisamos ter a rotação do nosso personagem. Então estamos pegando o componente da câmera em nosso personagem. Estamos fazendo, estamos lançando para ele. Podemos ver, sim. Então você não pode. Está bem. Sim. Você precisa dessas anotações. Você precisa pegar a coisa do elenco. E eu fiz um elenco puro para que não precisássemos ter os fios de execução passando por ele. E então estamos entrando na rotação de controle da câmera. E então definindo essa criação,
fazendo estes para este local, esta localização vetorial nesta estrada, rotação em uma transformação. Então, um vetor é XYZ, um transformador como XYZ mais rotação mais escala. Então é ainda mais chique. Tudo bem, então podemos fechar daqui. Podemos começar a filmar de novo. Tudo bem, e então podemos tirar um projétil. E vamos dizer calcula projétil, esta função. Vai pedir-nos muitos desses dados agora. Então, agora, se entrarmos naquelas poucas armas e dissermos, estas são imagens de projéteis ou não. Agora vai passar por este aqui. Ok? Então, agora queremos sair daqui e dizer “gerar ator da classe”. Você pode ver que ele está pedindo por uma transformação, então nós apenas conectamos isso direito. E, em seguida, queremos obter são 0. Vamos configurá-lo para ser uma variável e vamos dizer projétil, e vamos fazer este tipo base de projétil. A razão pela qual eu estou
transformando em uma variável e não apenas colocando-o dentro é porque nas crianças,
no rifle sniper, foguete e tudo mais, nós queremos atribuir diferentes projetos de projéteis, semelhantes a como Fizemos os efeitos de impacto. Queremos ser capazes de definir dinamicamente aqueles dependendo da arma que temos. Então, se eu apenas encaixá-lo em como este, então ele sempre será a base. Não vai, não vai mudar isso através da variável. E está pedindo estatísticas de armas. Então vamos ligar isso com a variável que
criamos dentro da nossa base de armas. Então, se você se lembra, fizemos essa variável e a expomos em gerações. Então, agora, quando gerarmos isto, está a pedir-te aquilo. Então agora estamos ligando esses dados para que eles passem. Tudo bem. Agora, quando isso é geral que precisamos fazer é apenas conectar isso no recuo para terminar este fio aqui. E então vamos em frente e colocar essas coisas conectadas. Então nós vamos pegar o jogador vai pegar a câmera. Plugine a malha da arma da câmera. Vamos pegar a malha da arma daqui. E a tomada de armas. Podemos transformar isso em uma variável, mas como eu disse, todos eles são chamados de flash focinho. Então, flash focinho, inputted duro sempre funcionará. Se você quer transformá-lo em uma variável, vá para a ruiva. Seja, você só precisa fazê-lo para uma variável. Tecnicamente falando, se você quiser adicionar armas que são diferentes do pacote que estamos usando aqui. Finalmente, apenas certifique-se de que diz sempre gerar, ignorar colisões apenas para evitar alguns problemas. E depois as minhas caixas de vírgula e dizem: “Projétil”. Tudo bem, a última coisa que quero fazer neste vídeo para termos esta configuração aqui, é, vamos para as nossas armas. E para a espingarda de sniper, vamos ver, agora
temos uma vaga para o nosso projétil repentino, o que é muito legal. E só queremos ter a certeza que isto não está definido para atingir a pele, mas sim para projétil. E queremos fazer isso para o projétil do foguete e o projétil do lançador de granadas. E agora essas três armas correrão pelo outro caminho. Isto não vai fazer nada. Pode nos dar erros, mas você pode ver como ele não está mais filmando um traço de linha e ele ainda está fazendo aquele pequeno chute de arma, pequeno chocalho. Eu não mudei nenhum desses números para torná-lo algo insano, mas como se ele estivesse passando e não está nos dando um erro. há nenhum evento que é adicionado agora para correr quando realmente acertamos qualquer coisa com isso. Então vamos fazer isso no próximo vídeo. Vemo-nos para a segunda parte. Então, obrigado por assistir. Se tiver alguma dúvida, me avise e nos veremos na próxima.
35. Projeteis de fotografia (parte 2): Olá a todos, Bem-vindos de volta a outro vídeo. Neste vamos continuar nosso roteiro de projéteis, terminando isso neste vídeo. Ao contrário de todos os outros vídeos até agora, este não está sendo gravado ao vivo. Este sou eu do futuro porque algo ruim aconteceu com a gravação da última vez. Então eu tenho que voltar e refazer. Então vai ser um pouco estranho. Então eu estou olhando para trás para o que eu estou fazendo atualmente. Então, se você está olhando para a tela agora, a coisa que eu estou explicando é uma coisa. Mudei a variável para ser uma variável local porque ela não é necessária fora desta função. Mas você quer ter certeza de que o nó retornado está fora do pino de sequência final. Se esse não for o caso no seu jogo, no seu projeto, ele não aparecerá no local correto. Então, mesmo que as sequências devem estar acontecendo simultaneamente, você quer ter certeza de que você definiu essa variável antes de retorná-la. Então eu fui em frente e eu estava encaixado em uma base de projéteis no meu lançador de granadas apenas para mostrar que isso está funcionando e eu coloquei apenas uma caixa aleatória em nossa malha de projéteis para se divertir, apenas para mostrar que tudo isso está funcionando quando você tem O projétil está aparecendo no local correto. E então eu o removi. Então, se você quiser, você pode ir em frente e encaixar algo
na malha e, em seguida, entrar em uma de suas armas e colocar isso dentro Então a próxima coisa que estou fazendo aqui é falar de respostas de colisão. E vamos criar uma nova resposta de colisão chamada de projétil ou tipo de objeto. A fim de obter o nosso jogo para reconhecer que estamos usando um projétil porque nós queremos o nosso jogo para mim. Podemos configurá-lo acrescenta apenas como a dinâmica do mundo ou outra coisa. Mas o que também podemos fazer é criar um novo objeto canais. Então vamos chamar um nome de um projétil. Então as configurações do projeto embaixo do motor, é colisão. Vamos criar um chamado projétil. E a resposta padrão será bloqueada. Então, quando criarmos isso agora, ele aparecerá como uma opção. E assim podemos agora definir isso como um tipo de objeto. Então eu acho que eu tenho um pequeno problema aqui, se eu me lembro corretamente, eu acho que eu vou em frente e procurá-lo. Então ele aparece ao longo do fundo. Para que nosso inimigo tenha certeza que essa configuração bloqueia o projétil. Mas nós realmente não entramos em nossas Predefinições de Colisão para ser capaz de definir qualquer coisa como um projétil. Então, eu vou me deparar com a questão aqui. Estamos olhando em volta como preocupações principais. Acho que está em algum lugar. Portanto, são dois passos. Você pode adicionar um tipo de objeto, mas é uma coisa completamente diferente para, adicioná-lo. Para realmente fazê-lo aparecer aqui em uma predefinição. Porque queremos que o projétil seja definido como projétil para que o inimigo bloqueie sempre o projétil. Portanto, este não é um passo 100% necessário. Você não tem que fazer isso todas as vezes. Mas ao fazê-lo desta forma, Você começa a especificar quais objetos você deseja ignorar, sobrepor e bloquear para executar eventos diferentes em seu jogo. Então irreal vem com uma quantidade decente de preset uma vez. Mas você sempre pode criar o seu próprio para tornar as coisas mais específicas e adaptadas para você. Ok, então finalmente descobri que você também precisa definir como uma predefinição. Então aqui estamos nós na mesma coisa. Portanto, certifique-se de criar um projétil de nome de canal de objeto na colisão de configurações do projeto. Um dos meus pesos e para ele, provavelmente, EPA para cima e por todo o lado. Mas queremos ter certeza de que também criamos um sob a predefinição. Então projétil. Veja, nós queremos fazer, nós queremos permitir colisão para consulta e física para este novo perfil de objeto? E você pode adicionar uma bela descrição, se quiser. E então, para isso, vamos dizer ignorar, ignorar. Vamos ver o que estou fazendo aqui. Bloco, bloco. Ignore o comando Pon, Tim, sim, ignore o corpo físico e acho que ignoramos todo o resto. Sim, sim. Então estamos ignorando tudo, mas vamos bloquear a estática mundial e a dinâmica mundial. Então, se você se lembra do nosso tipo inimigo, a malha que tem o corpo físico nele. E é onde colocamos nossos materiais físicos. Se arrumarmos isso, acho que vou checar em um segundo aqui nós colocamos essa malha. Venha até eles, você pode fazer isso. Então, como você vê aqui, definimos a malha para ser dinâmica do mundo. Então, nosso tipo de projétil. Está definido para ser projétil em nossa malha é dito para bloquear qualquer coisa que é chamado de projétil. Portanto, é basicamente assim que isso está funcionando em nosso jogo. E estamos em cima, nosso personagem está definido para ser um lago, então vamos ignorar isso, que
significa que nossas balas ou projéteis não vão nos atingir. Se você quiser ser capaz de se explodir com um foguete ou algo assim, você teria certeza que o peão também bloqueia. Mas isso não é algo que vamos fazer neste projeto. Então, na colisão em nossa base de projéteis, se você não vê-lo, basta pressionar Compilar e você vai configurá-lo para ser um projétil. Predefinições de colisão sob projétil de colisão , com a colisão da esfera de colisão selecionada, ok? Esse é o objeto real que vai conduzir nosso evento para a parada do projétil. Agora vamos fazer algumas crianças com esta base de projéteis. Vamos fazer um para o nosso rifle, um para o nosso lança-granadas, e um para o nosso lança-foguetes. Então vocês já sabem o que fazer, clique com o botão direito na base e dêem o nome que quiserem. Estou fazendo sublinhado de projétil e depois o nome da arma. Se quisesse ser consistente, teria feito isso ao contrário. Teria feito o nome da arma e
sublinhado o projétil, como fiz tudo o resto, mas decidi trocá-lo desta vez. Honestamente, eu provavelmente esqueci que eu os
nomeei o contrário com tudo o resto. Mas vamos iniciar a espingarda de sniper e, em seguida, debaixo do projétil, vamos colocar o projétil de rifle de sniper. Então isso está na própria arma. Então você quer entrar em cada uma das armas,
essas três armas, arma de rifle sniper, lançador de
granadas, arma , foguete lançar sua arma. E uma vez que definimos isso para ser uma variável, você quer ter certeza de que eles estão definidos para ser projétil não hit scan. E você quer ter certeza que debaixo do projétil, está definido para ser as crianças projéteis apropriadas que você deveria ter feito agora mesmo. Então, para o projétil de rifle de sniper debaixo da malha, há um chamado munição de rifle de sniper, e é esta pequena bala. E vamos girar isso para que ele fique virado para a frente e aumente o tamanho. Então, 90 negativos, parece que no y. e então eu faço isso provavelmente cerca de seis vezes mais do que o tamanho. Você pode torná-lo o maior que você quiser que ele seja. Então eu só o faço grande o suficiente para que ele tipo de encaixe em torno da nossa colisão. Mas você pode redimensionar a colisão apenas para saber que se você redimensionar a colisão dentro da criança, ela também irá encolher a malha porque a malha é uma criança disso. Vamos mudar essa velocidade para 12 mil e a escala de gravidade para 0,1. Então não vai haver um monte de entrega e este vai ser muito rápido. Queremos ter certeza de que está causando dano de raio para o nosso rifle de atirador é transformado em falso. Para estatísticas de armas, eu vou encaixar em um dano de 100, mesmo que eu acredite que a variável que controla que existe dentro da arma. Acho que é só isso que importa. E então para o efeito de impacto, mas o efeito de impacto do rifle de precisão, como eu disse ,
estes, talvez não importem tanto. Talvez você não precise colocá-lo aqui porque pode estar pegando a informação do projeto da arma. Mas sabe, é um bom treino. Ele não causa nenhum dano ao slot nas quantidades de dano. E esse efeito de impacto no projétil está bem, não
pode causar nenhum dano. Então, muito disso é apenas certificar-se de que as variáveis são definidas para o tipo correto. Muitas vezes, se você pode ter algum tipo de erro, pode ser que você não tem Projétil entalhado ou o impacto afeta entalhado. Você pode ter uma espingarda de atirador. O atirador definido para ser um sucesso Scan quando é realmente deve ser um projétil. Então, se certas pequenas coisas como essa não estão funcionando, a primeira coisa que eu faria é verificar suas variáveis em seus planos para ter certeza de que há realmente definido para ser as coisas corretas. Porque quando se tem armas de alguém, pode ficar um pouco confuso. Então, não consertamos o escopo. Faremos isso em um vídeo mais tarde. Mas se ele deve estar atirando as balas para fora da frente da arma agora e deve ser bem visível para ver isso. Agora o que vou fazer é atirar nesse cara. Eu vou receber um erro quando eu fechar isso em um vídeo anterior, eu acho que eu mencionei para ter certeza de que nós mudar um certo sentido para os materiais físicos não ser capaz de ser devolvido corretamente. E este é o erro que eu estava falando. Então eu fico um pouco confuso aqui. Eu sou como, o que diabos? Nossos danos e trabalho, mas é estranho. Então ele ainda está disparando um efeito de impacto. Ele ainda está mostrando um número danificado, mesmo que o número de dano seja 0. E ainda está mostrando um marcador de dica como se tivéssemos atingido algo, mas há algo errado com ele. Então a última parte deste vídeo vai estar viva novamente. Então, espero que você foi capaz de suportar esta parte do vídeo. Mais uma vez, Peço desculpas por isso acontecer no é perdido o áudio tem que regravar esta parte, mas o último minuto ou dois deste vídeo será a versão ao vivo novamente. E você vai me ver mostrando a solução para este ar. Ok, então vamos em frente e avançar para isso e seguir em frente com nossas vidas. Está bem. Então, mais constrangimento indo para mim, ok, então você sabe o que eu te disse. Coma uma verificação em uma determinada variável C, você não recebe erros para que o computador não reconheça qual material físico você possui. Bem, eu fiz a coisa certa e te disse que isso ia acontecer, mas eu não te disse qual e te disse qual ligar. Então, se eu desmarcar isso aqui, tudo bem. Pego a espingarda, apanho-a e atiro para o chão. Está bem. Observe que ainda é a contagem d, tudo de tudo, mas ele vai dizer acesso nenhum tentando ler propriedade, material
físico e ele vai mostrar em nossa base de impacto afetar como o emissor, o som em detalhes não está funcionando e você obtém um erro de acesso nenhum. Significa que está tentando encontrar algo que não está lá. Então, neste caso, está à procura de um material físico que foi atingido. Ele não consegue encontrá-lo. Então o computador ainda está fazendo algo e maioria das vezes ele ainda vai realmente fazer a coisa certa, mas você está confundindo. Então, na base do projétil e você também notou que os números danificados não funcionam se você não fizer isso. Então, na colisão da nossa base de projéteis, basta procurar o retorno. Se os componentes verdadeiros varrer retornar o material dos resultados. Eu não sei por que em nome de Deus não está ligado por padrão. Mas você precisa fazer isso. Então, coloque o material de retorno em movimento, ative isso nas configurações de colisão. Então, agora, se atirarmos no chão ainda é tudo trabalho. Mas se andarmos até nosso inimigo e
acertarmos com o som correto e os números de dano e tudo isso. E quando atingimos Escape, não recebemos erros. Está bem? Trata-se de um passo crucial. Eu não posso acreditar que eu corri para o mesmo erro novamente, mas eu quero dizer, você quer eu acho que você quer cerca semelhante gerado também? Não vejo por que não faria isso, mas sim. Está bem. Tão fixe. consertamos isso antes de seguirmos com nossas vidas agora. Certo, então sim, vamos descobrir onde estávamos e toda honestidade, que pode ser onde eu posso terminar o vídeo porque eu ainda estou escondido headshots no tanque. No próximo vídeo, vamos consertar o rifle sniper, que ele realmente faça coisas e construa isso. Mas sim, quero dizer, agora estamos atirando projéteis fora da nossa arma, então eu vou funcionar bem. Então vamos criar a espingarda de sniper e então vamos fazer explosões, e então nós vamos praticamente acabar. Então estamos na reta final aqui. Obrigado por assistirem. Vejo-te no próximo.
36. Fotografar o Sniper: Ei pessoal, bem-vindos de volta a outro vídeo. Neste, nós vamos ser consertados
no rifle sniper porque enquanto atualmente nós podemos equipá-lo, atirar e tudo mais, ele não faz um som e o escopo é muito Genki, então nós vamos consertar essas coisas em este vídeo. Ok? Mas vamos começar montando em frente aqui. Então nós temos essa textura de nossos pêlos cruzados, mas precisamos adicionar isso a um widget. Então vamos clicar com o botão direito do mouse na interface do usuário, e vamos chamar
isso, é chamado de franco-atiradores cruzados. E vamos abrir isto. Podemos manter isso em uma tela de preenchimento e só queremos adicionar uma imagem. E vamos chamar isso de cruz sempre lembre-se F2 é renomear coisas e irreal e assim como no seu computador em geral, vamos ancorar esta imagem para preencher a tela e definir os deslocamentos para 00. Então agora vamos preencher toda a nossa tela aqui. E vamos apenas encaixar na nossa imagem para cruzar os franco-atiradores. E lá vamos nós. Então esta é outra coisa que eu fiz no Photoshop. É certo que não é perfeito. Mas faz o trabalho, para os nossos propósitos. Isto não é o que somos profissionais aqui. Está bem. Mas não é assim tão profissional. Podemos fechar isso. Não precisamos fazer nada com isso, só
precisamos que isso exista. Então vamos para a nossa pasta de armas e abrir a nossa arma de rifle de atirador. Está bem. Se você não tem essas coisas encaixadas, nós temos impacto, nós temos nosso dano ou impulso de matar que podemos fazer como 15000, torná-lo bastante poderoso. Projétil é projétil de arquivo separado. Tudo isso deve ser encaixado. - Sim. Ok, então agora vamos em frente e criar alguns eventos. Então vamos ter que pegar começar a atirar. Você. Os eventos começam a filmar assim. Vamos adicionar uma chamada para a função pai. Em seguida, ambos ligados lá. E depois fora da malha da arma. Já fizemos isso antes de irmos tocar uma animação. Animação vai ser tiro de atirador, rifle de
atirador, desculpe, animação. Então agora nossos efeitos sonoros e partículas e tudo isso vai funcionar apenas atirar. E também não queremos que este seja um daqueles que podem ser disparados por spam. Então vamos calcular a taxa de fogo. E então eu só checar bem rápido. A taxa de disparo para isto. Ou teria colocado as taxas de disparo, definido para ser 1 segundo. Então um pouco mais rápido disparando do que a espingarda. Ok? Agora, se você se lembra em nossa base de armas nós temos essas armas mira entrar na arma apontar, sair. E estes são vinculados ao evento de entrada que temos em nosso player, que é vinculado ao botão direito do mouse. Então podemos chamar esses eventos agora, certo? E esses eventos que existem em nossos pais, já que estão vinculados ao Despachante de Eventos que existe em nosso jogador, farão com que isso seja disparado quando entrarmos em nossa mira dentro do jogador. Então é por isso que os criamos dessa maneira. Então vamos fazer uma arma de evento entrar, e vamos levar essa chamada para o pai. Está bem. Então, se eu explicar isso bom o suficiente. Então, como estes estão ligados a um mentor, esses eventos que estamos chamando aqui. E este evento em nosso personagem, nossos despachantes de eventos funcionam? Os mapeamentos de ação apontam e vamos chamar um mentor. Então, sempre que chamamos isso, todos os outros eventos que estão vinculados a acontecer também. Então este é um deles. Certo, então vamos pegar uma referência ao nosso jogador e pegar a arma atual. E só queremos ter certeza de que a arma atual que temos é a espingarda de atirador. Tudo bem. Porque não queremos que isso aconteça sempre que chamarmos um mentor. Então vamos fazer uma declaração de “se”. Então não fizemos isso, senão faria. E que podemos obter uma referência a si mesmo. Em vez de ter isso igual como a carga para fora é igual a fraqueza do rifle de atirador. Consiga uma referência a nós mesmos neste projeto porque enquanto nós somos aquele rifle de atirador, ok? Assim como a mesma coisa. Porque não queremos essas coisas, que não queremos que tudo isso
aconteça se não tivermos um rifle de atirador equipado. E vamos criar um widget. O widget, como você provavelmente pode imaginar, vai ser a nossa mira de franco-atirador. Tudo bem, digamos que está em viewport. Então vamos dizer, e então vamos dizer ramo. E então vamos dizer para fora daqui no visor. Isso não é coisa de viewport. O que isso está fazendo é prevenir. Então eu posso dizer que não vai adicionar através dela duas vezes. Por isso, só irá adicionar a nossa mira à janela de visualização se ela não estiver lá atualmente. Tudo bem. Isso só irá evitar que esse tipo de mesmo tipo de problema aconteça de como você vai receber algum tipo de um aviso ou erro dizendo widget já adicionado à tela ou algo assim, e ele não vai aparecer. Então isso vai impedir que isso aconteça. Em seguida, quando tivermos a nossa mira para cima, queremos nos esconder no jogo. Queremos pegar nossa malha de armas e torná-la invisível. Ok? Então é por isso que nós realmente não nos preocupamos o objetivo F0 v e todas essas coisas porque quem se importa? Vamos torná-lo invisível. Nós também vamos pegar nosso personagem jogador e não pretendemos fazer isso e fazer nosso personagem jogador. Ok, não importa disse jogo de ator escondido. Assim, as mensagens de arma jogo escondido,
e, em seguida, o personagem é Hit Actor no jogo. Então vamos tornar nossa arma em nosso personagem invisível. Ok? E queremos ter o nosso jogador. E se você se lembra, nós criamos o HUD e nossos jogadores, nós vamos obter o HUD principal. E vamos definir a visibilidade para um colapso. Então vamos nos livrar do HUD também. Não queremos ver o HUD, não
queremos ver o nosso jogador e não queremos mais ver a malha da arma. Então digamos que esconde arma, jogador e Hod. Enquanto mira. Nova Iorque. Como isso. Enquanto se escondia. Enquanto Amy e a espingarda, essas coisas estavam escondendo tudo. Tudo bem, isso é tudo para um mentor. Em seguida, queremos obter eventos, arma apontar, sair, e vamos chamar a função pai assim. Ok? E então vamos verificar se é válido. A primeira coisa que vamos verificar é válida é essa coisa de cabelo cruzado. Então isso impedirá que isso seja executado. Se este cabelo cruzado tem uma neomicina criada. Porque nós vamos dizer a ele para removê-lo de nós
vamos dizer a ele para ir embora para remover do pai. Então isso é só checar, digamos que pegamos o rifle de assalto e apontamos para a saída, certo? Nós, quando apontamos saída, ele está indo, o jogo vai ser como remover este widget da tela e, em seguida, o jogo será confuso. Eles vão ser como, Bem, nós nem sequer adicionamos isso em primeiro lugar. Portanto, este é um aviso válido impedindo que erros para esse tipo de erro ocorram. Removido do pai. Então só irá removê-lo se for válido. Em outras palavras, se alguma vez foi criado em primeiro lugar. Tudo bem, então tudo o que queremos fazer é pegar essas mesmas três coisas que queremos desmarcar nossas caixas, então trazê-lo de volta, trazê-lo de volta e torná-lo visível. E então vamos dizer que mostra a camada de arma e todas essas coisas, todos atiradores de tiro. Tudo bem, e isso é tudo o que precisamos para um rifle de atirador. Então, agora, se pegarmos o atirador, pegamos isso e miramos. Lá vamos nós. Uma coisa que provavelmente vamos querer fazer é mudar o zoom porque isso é um pouco difícil de ver agora. Campo de visão da mira. E se você pode totalmente com isso como você quiser, quanto você quer que isso zoom em porque o atirador é suposto Zoom. Sim, provavelmente nem está perto. Vamos fazer algo como 25. Veja como isso se parece. Lá vai você. Vou dizer que ainda falharam. Então, reconhecidamente, minha mira de rifle de sniper não é perfeita. Tudo bem. Serei o primeiro a admitir isso. Não é uma linha muito próxima até o centro da tela. Mas eu não fiz Photoshop. Por isso, se apareceres um bocadinho, vai sempre bater. Realmente os CIOs devem fechar. Então, sim, é um pouco confuso. Mas algo que você também pode fazer para corrigir esse problema. Muito bem, o pequeno Jerry Reagan aqui. Então, se você descer e encontrar a malha do rifle, certo? Se te lembrares da malha esquelética, se te lembrares disto, está bem. Estamos expulsando a bala do flash do focinho para que você possa fazer é pegar o flash do focinho aqui e movê-lo um pouco para cima. Talvez colocá-lo em linha com isso, talvez assim e pressione Salvar. E agora suas balas realmente vão injetar um pouco mais alto porque o soquete era mais alto. E agora e agora estamos escondidos bandeira tiro na cabeça não é da conta de ninguém. Tudo bem, então, apesar do meu pobre Photoshop e habilidades, se você mover isso para 20 para 22, parecia um valor decente. Passo 22. A tomada do flash da focinheira na espingarda de sniper. Lá vai você. Agora, agora estamos dando nossos tiros. Então, o caminho para chegar lá como armas militares, armas de prata, e então pegar a malha esquelética do rifle de sniper, obter flash de focinho, é disso que estamos injetando nossas balas. E mova isso para um valor z de 22. E então isso vai tornar este atirador mais preciso com o cabelo cruzado que eu criei no Photoshop. Tudo bem, então isso é tudo para o rifle sniper, é tudo criado. Então, nos próximos dois vídeos, vamos trabalhar em um lança-granadas e lança-foguetes e fazer as coisas explodirem e será incrível. Tudo bem, então obrigado por assistir. Avise-me se tiver perguntas e espero vê-lo na próxima.
37. Criação das coisas Go BOOM (explosões!): Olá a todos e bem-vindos de volta a outro vídeo. Este vai ser divertido porque vamos explodir
algumas coisas com o nosso lançador de granadas e lança-foguetes. Por isso, não percamos tempo e vamos aos Michael Bay pedir explosões agora mesmo. Tudo bem, então vamos para nossas interfaces e vamos para BPI, sofrer danos. Nós vamos adicionar uma nova função dentro
desta interface já existente e vamos chamar isso dano de raio de
tomada. Tudo bem. O dano do raio vai ter duas entradas. Nós vamos ter um resultado de sucesso porque nós sempre
temos que escrever e o outro vai ser exatamente como antes do inimigo receber dano, nós queremos obter estatísticas de armas. Então vamos pegar um dos tipos de estatísticas de arma. Compilar, salvar, fechar. Agora vamos abrir o nosso inimigo é ir para o Gráfico de Eventos e podemos rolar para baixo até onde temos algum espaço aberto e queremos chamar evento receber dano de raio. Ok, então nós já adicionamos essa interface para esses projetos e agora podemos
continuar puxando funções que existem dentro de lá. Tudo bem, primeiro, vamos verificar e ter certeza de que nosso personagem ou inimigo não está morto. Não quero ser capaz de fazer o que vamos fazer se eles estiverem mortos. Fora do resultado da batida. Ir tirá-lo das estatísticas de armas é meio que quebrar isso. Vamos começar a colocar algumas coisas no ar. Para fazer isso, vamos criar uma nova função e digamos contagem, fila, atraso, raio, dano. Isto vai funcionar um pouco diferente. Li, em seguida, apenas calcular danificado. Então vamos adicionar três entradas diferentes. Um chamado dano. Vamos ter um chamado raio de impacto, e depois outro chamado pontos de impacto. E estes serão danos de flutuação do raio de impacto de flutuação também é um flutuador. Os pontos de impacto serão um vetor. Tudo bem. Vamos definir danos para uma variável local apenas para fins organizacionais. Ok, vamos em frente e obter a localização do ator. Então estamos conseguindo a localização do inimigo. Lembre-se, o alvo é eu mesmo, é esse personagem de planta. Vamos pegar os pontos de impacto e vamos subtrair estes. Então vetor menos vetor. Tudo bem? E então nós vamos obter o comprimento deste vetor. E então vamos dividir isso por um carro alegórico. É um carro alegórico. Queremos ter certeza que isso está no topo e vamos dividir isso pelo raio de impacto. Tudo bem, e então vamos fazer uma subtração aqui. E nós vamos pegar isso no fundo, e então nós vamos fazer este. Então vai ser 1 menos qualquer que seja o valor desta matemática. Matemática é pegar o ator, a localização do inimigo. Está pegando o que quer que seja esse vetor de ponto de impacto, está conseguindo o comprimento dessas duas coisas, quão longe elas estão separadas. Dividi-lo pelo que definimos para ser este raio, e depois subtrair isso. Então, como eu disse, a
maioria das pequenas coisas matemáticas aqui, é um ícone fácil em cima, em, mas muitos desses números e esses cálculos são descobertos apenas através de testes. Então o fato de que esta é uma aula significa que você não precisa passar pelo tédio de fazer isso. Então vamos fazer um flutuador vezes um flutuador. Vamos multiplicar isso pelos nossos danos. Tudo bem? E então o que queremos fazer é fazer algo chamado de apertar um carro alegórico. O mínimo que queremos ser 0. E o máximo que queremos ser capazes de fazer é qualquer dano. Então isso é apenas dizer que isso está impedindo o dano que aplicamos a um maior do que o que quer que definamos os danos. Então, se o nosso foguete causar 700 de dano ou algo assim, nós mesmo que este cálculo resulte em um número maior que 700, ele vai apertar, vai impedi-lo de ir mais de 700. Certo, então vamos adicionar um nó de retorno e diremos danos no raio. Aplicado ou são calculados danos de raio ou qualquer outra coisa. E isso vai ser um plug-in de retorno flutuante. E lá vamos nós. Isso é isso. Então agora podemos voltar ao nosso gráfico de eventos. E se não estivermos mortos, podemos calcular danos no raio. Temos todas essas entradas. Então vamos ligar Damage em dano, impacto no raio de impacto. E então nosso resultado de quebra, vai
haver um ponto de impacto. Você pode vê-lo bem ali. Ponto de impacto em ponto de impacto. Como isso. Meus nós são muito próximos em um, mas tudo bem. Ok. A próxima coisa que queremos fazer é executar nossa atualização de saúde. Então, o mesmo que o, como antes que usamos aqui quando estamos calculando esse dano. Então vamos passar isso. Certo, então queremos verificar se estamos mortos ou não. E então muito disso vai ser o mesmo. Se estamos mortos, então queremos executar a morte inimiga. Tudo bem? O local da batida vai ser este ponto de impacto. Define onde o impulso vai disparar e depois precisamos de um nome de osso. É, nome de osso em nome de osso. Colapso. Oh meu Deus. É uma festa de nódulos aqui. Ok. Sim, tudo bem. Por não estar morto. Então nós queremos executar os números de dano k e nós vamos apenas ligar isso assim. A localização do impacto ainda será o ponto de impacto. O dano ainda vai ser a mistura de danos aplicada. É o dano aplicado após o cálculo ocorrer, não antes. E então não precisamos de um tiro na cabeça. Uma coisa que um poderia ter feito incorretamente. Deixe-me comentar as caixas primeiro e dizer que o inimigo sofre danos de explosivos ou algo assim. Uma coisa que eu poderia ter feito incorretamente inicialmente no dano da fita, o dano normal do tecido. E certifique-se de que o seu fique assim. Certifique-se de que a verdade é ir até a morte e, em seguida, ir para baixo para números de danos. Em seguida, false está indo para números de dano e, em seguida, números de dano está levando a é válido. Eu poderia ter tido a morte entrando aqui assim e então apenas pulando isso. Eu não tenho certeza, mas eu poderia ter feito isso se eu apenas tivesse certeza que parece, esses quatro nós se parecem com isso. Neste caso, o inimigo recebe dano, parte do script como esse. Ok? Mas isso é tudo o que precisamos fazer no inimigo. Então agora tudo isso está configurado. Então o que precisamos fazer é voltar ao nosso projétil, na nossa base de projéteis. E lembrem-se, temos essa função de projétil explodida que está funcionando aqui. E assim não faz nada. Então vamos fazê-lo fazer alguma coisa. Então, fora do projétil explodido, vamos abrir uma sequência. Vamos acertar os resultados. A broca, vamos quebrá-la. Gostaríamos de quebrar as coisas. E então o que vamos fazer é obter nossas estatísticas de armas e vamos quebrar isso. Então você quer ser capaz de obter este raio de impacto. E vamos fazer um nó chamado de 1000. Vai ser atores de sobreposição de esfera. Então isso é desenhar uma esfera. E vai se sobrepor. Retorna uma matriz de atores que se sobrepõem à esfera dada. Então estamos desenhando uma esfera e então ela está voltando com um grupo de atores que se sobrepõem a essa esfera. Então, quão grande será a esfera? Bem, vai ser o que definimos para ser o nosso raio de impacto. Qual é a posição da esfera que vai ser, o ponto de impacto vai ser onde o projétil atinge alguma coisa. Certo, assim como antes, precisamos dar tipos de objetos
para sobrepor e, em seguida, aqueles para ignorar. Então, fora daqui, vamos fazer uma matriz. Array é como uma matriz de coisas, como várias coisas, uma lista, eu nem sei. Uma matriz como uma palavra normal, se quisermos verificar o que é
dinâmico do mundo e o que é peão define nosso inimigo e, em seguida, como outras coisas no mundo. Então nossos inimigos são inimigos, dinâmicos do mundo. Tudo bem, então é isso que vai se sobrepor. E então vamos acabar com o jogador e pegar a arma atual. Tudo bem, e então vamos ligar isso aos atores para ignorar. E então eu vou fazer sua própria pequena matriz. Estes são os atores que não queremos. Não queremos que a nossa esfera diga que se sobrepõe à nossa arma. Tudo bem, isso não seria bom. Eu criaria alguma confusão com nossos atores da OUT. Vamos fazer um para cada loop ou direita, como na execução. E depois, fora do corpo do laço, queremos dizer tomar raio, danos. As estatísticas de armas vão ser estatísticas de armas aqui. Resultado hit, você provavelmente adivinharia que vai ser este resultado hit. Entrar, Bergen. E isso é tudo o que precisamos fazer. Para o elemento de matriz. Mas vamos conectá-los ao Target. Certo, então a última coisa é que queremos criar um ator da classe e queremos fazer uma explosão, mas não criamos esse efeito de explosão, então vamos ter que criar isso agora. Então podemos mantê-lo em projéteis. Vamos criar um plano de classe e ator e chamar isso de impulso de explosão ou algo assim. Não precisa ser um nome super complexo. Tudo bem, e então o que queremos acrescentar a isso é que queremos adicionar no homem é que pode ser um componente de força radial. Só uma força radial. Ok. E vamos chamar esta explosão cheia. Então este vai ser o nosso grande objetivo. Tudo bem. Então, para o raio, vamos fazer como 400 em mudanças como você quiser. Impulso. Então, tudo bem. Então, se você fizer a queda do impulso constante é uma força constante para torná-lo linear, então haverá impulso fica mais fraco quanto mais longe da origem. Então é isso que queremos, isso é mais realista como uma explosão real. É mais poderoso naquele impacto no centro. E então, se você bater nele de fora, não vai fazer as coisas tão loucas. Tipos de objeto para efeito. Vamos apenas fazer o mundo dinâmico e físico corpo. Nós podemos. Podemos livrar-nos disto? Podemos nos livrar desses dois porque quando eu os uso, força de impulso, podemos definir como 3 mil o que você quiser fazer. E então, no gráfico de eventos, tudo o que precisamos fazer é começar a jogar. Vamos pegar nossa força de explosão e dizer impulso de fogo. Certo, então sempre que esse projeto for gerado no mundo, eles dispararão esse impulso. Bada bing, bada, boom. Certo, agora estou de volta à nossa base de projéteis. Diamos sempre gerar, ignorar colisões, o que é bastante padrão aqui quando se trata dessas coisas. E a classe que queremos será impulso de explosão. Tudo bem? E a desova se transforma. Vamos dividi-lo porque só nos importamos com a sua localização. Então você faz disso o ponto de impacto. E então é isso. Ok. Então esse é o roteiro. Pare as corridas de projéteis para ouvir que parece correto. Então a única coisa que precisamos fazer é criar esses projéteis em nossas plantas, precisamos ter certeza de que estamos prontos para o dano de raio. Ok. Então vamos para o nosso lançador de granadas. Um. Certo, vamos usar isso como exemplo. Então, para nossa malha de projétil, eu vou fazer isso três vezes isso. E eu vou dizer munição de lança-granadas. E lá vamos nós. Lá está ele. Podemos fazer talvez quatro vezes o tamanho, torná-lo um pouco maior. O que você quisesse. Realmente não importa. E eu vou adicionar um componente extra a isso. E eu vou procurar por um sistema de partículas e vamos chamar isso de efeitos de trilha assim. Porque há uma chamada trilha de granada. Então ele vai realmente disparar um pouco de efeito smokey, eu acho que você quer chamá-lo de casa. Você vai ver para o nosso movimento de projéteis, estas são as configurações que eu tinha. Eu tinha 3500 para a velocidade inicial e máxima. A escala de gravidade era muito pesada e o que as coisas arcos eu vou definir para ser dois. E então está causando danos no raio. Quer ligar isso nesta planta? A razão é porque nós queremos que ele fique sem projétil
explodido e não apenas como o dano normal tomar que os rifles sniper fazendo. Então dedos cruzados. Aqui vamos nós. Consegui e podemos não ter colocado isto na nossa planta. Deixa-me só ver. E nós não temos, ok, então nós realmente não dissemos ao jogo que pequeno. Então, para estatísticas de armas. Na verdade, vamos em frente. Eu não sei se as estatísticas importam, mas para o impacto da verdade, eu acho que sim porque nós estamos gerando isso e o projétil Bayes. Então as estatísticas provavelmente importam na arma, mas o efeito de impacto importa aqui. Então vamos em frente e fazer o efeito de impacto do lançador de granadas. E então deixe-me voltar para o meu lança-granadas, uma arma. Vai abrir isto. Então, para o projétil, isso é importante. Queremos colocar no lançador de granadas de projéteis, esse é o arquivo do projeto que queremos atirar para suas estatísticas de armas. Vamos apenas dizer que o valor máximo, pode ser como um 100 e, e deixe-me verificar e ver o que eu tinha antes. Ok, então no projeto anterior eu tive o dano em um golpe de 150 Sophie, atingido diretamente no epicentro vai causar muitos danos no raio de impacto daquela esfera. Vai ser 500. Tudo bem, então isso não vai tocar um som quando ele ejeta porque nós realmente não construímos isso ainda. Mas vamos ver se isso dispara. Lá vamos nós. Está atirando por atirar tão fino. Realmente explodir as pessoas. Agora, o impulso da cabeça, isso é um erro que pode aparecer às vezes não se preocupe com isso. Só tem a ver com destruir o componente da cápsula e tentar interagir com alguma coisa. Não se preocupe com isso. Ok. Então, esse foi o impulso ou o que quer que seja o impulso de matar? Isso é algo que queremos mexer um pouco. Então vamos fazer isso como o quê, 100 mil, certo? E mande-os voar. E eu errei. Tudo bem. Então, sim, isso vai funcionar. Tudo bem. Então, no próximo vídeo, vamos acabar com o lança-foguetes e o lança-granadas e é construí-los. Certifique-se de que estamos jogando as animações e fazendo as últimas coisas que queremos fazer essas duas armas, mas sim, isso é tudo definido em pedra,
então sim, espero que vocês tenham gostado deste vídeo. Estamos chegando ao fim desta aula. Bastante louco. Então, muito obrigado por assistir e te vejo na próxima.
38. Fotografar a granade e lançamento de foguete (o final): Olá a todos e bem-vindos de volta a outro vídeo. Este provavelmente vai ser o último vídeo desta série principal. E o que vamos fazer é que você vai terminar nosso lançador de granadas e nosso foguete. Então, criando este projétil e , em seguida, adicionando algumas coisas
ao lançador cinza que estavam faltando no último vídeo. No meio, eu só tenho alinhado nosso vídeo ou vídeos são inimigos a cada 200 separados. Então, se você se lembrar, selecione algo com suas configurações de encaixe em uma determinada configuração, pressione Control End e ele o encaixará nessa grade, textos, renderizações e pastas e coisas assim. Ok, então neste que vamos começar
abrindo nossa arma lança-granadas em nossa pasta de armas. A coisa que queríamos fazer como a maior parte do tempo, porque precisamos começar a filmar evento. E vamos adicionar uma chamada à função pai. Bem, eu gosto destes, como estes. E então queremos pegar a malha de armas e vamos jogar animação. Tudo bem? E a animação que queremos tocar é lançador de granadas disparado assim. Tudo bem? E então para este, nós também queremos taxas de disparo, calcula. Você não quer spam disparar este também. E a taxa de disparo que vamos ter por aqui, só
vemos onde fica. Taxa de disparo. Defina para ser 0,5. Tudo bem, então isso é tudo o que queremos fazer. Podemos definir estes para números diferentes, como 0,2, negativo 0,25. tempo de recarga pode ser 2,5, as balas espalhadas podem ser 600. Então, quero dizer, alguns desses, quero dizer, isso tem que ser projétil, isso tem que ser lançador de granadas. Mas algumas dessas munições, é
aqui que as coisas estão ficando divertidas. Você sabe, onde você pode olhar para todas essas variáveis que nós
criamos e encaixá-las para o que você quiser. Você pode mexer com malhas diferentes. Se você tem pacotes
diferentes e efeitos sonoros diferentes e você pode facilmente encaixar este material, altere o impulso de matar. O projétil deve ser o lançamento de gradiente um efeito de impacto de projétil deve ser que. Estatísticas de armas. Você pode alterar os valores de dano. O chute de arma, tempos de recarga, tudo isso agora é totalmente personalizável para você. Então, se eu entrar no jogo, então eu não vou gastar muito tempo com ele. E agora temos o nosso lança-granadas. Eu vou ser um pouco grande demais de um raio, mas assim agora ele entra em como testar o jogo onde tudo funciona e agora é apenas sobre torná-lo olhar e sentir e soar quem você quiser. E então isso era uma grande coisa que eu queria fazer com essa classe era configurá-la dessa maneira onde, neste momento, tudo o que se resume a é apenas mudar essas variáveis e você tem um jogo de sentimento completamente diferente. E assim suas armas podem agora começar a parecer diferente da mente, soar diferente das minhas. Tem diferentes quantidades de KYC e balas espalhadas e recuo e todo esse tipo de coisa. Tudo bem. Então, para acabar com isso, vamos fazer o lança-foguetes. E também tem o projétil lançador de foguetes. E para uma malha de projétil, vamos pegar foguetes, munição. E vamos definir isso para ser como, Oh, isso é muito grande. Duas vezes 2,52,5 vezes o tamanho. É um pouco maior do que a colisão. Podemos definir isto para ser como 1, 2, 0. Isso fez tudo menos as mãos para cima. Venha até ele e crianças, você deve saber como isso funciona. Queremos ter certeza que isso está causando dano de raio, as estatísticas de
armas não importam, mas o impacto da verdade, queremos que seja um lança-foguetes. Efeito de impacto realmente diz o que eu penso, ok ,
humano, você em vez de você abrir este script só pode ser um longo neste momento. Movimento de projéteis. Vamos definir isto para ser. Então a nossa espingarda de atirador era como doze mil e doze mil. Para que possamos manter isto em cem, dez mil. Podemos fazer isso 0,5 porque acho que a granada é como também, então eu quero que você seja 0,5, como eu disse, mexa com ela, faça o que quiser. Você pode ter essa coisa, atirar uma bola de praia para fora e fazer um tipo de barulho estridente ou um rugido de leão. Eu não me importo. Faça o que quiser. É só uma questão de mudar. Então podemos fechar o projétil agora na arma. Então temos nossa arma lançadora de foguetes. Tudo o que queremos fazer. Tudo bem, só temos uma coisa a fazer, Event. Comece a filmar porque os profissionais de TI disso. Então, neste ponto, basta ligar os tipos de fogo, pegar o mash de armas e queremos colocar em animação. Esqueci-me de fazer uma coisa, mas vou fazer essa tarefa, disparar um foguete. E nós temos que ir. Temos que nos preocupar com a taxa de disparo calculada pelo menos eu não preciso porque eu só tenho um foguete rodada um no meu pente a qualquer momento. Então, sempre que você atirar, apenas recarrega automaticamente o projétil vai ser lançar um foguete um projétil. Vou abrir esse backup, na verdade. Mate o impulso. Vamos definir isto para 250 mil ou algo assim. Absolutamente ridículo. O dano será de 200 e o raio de impacto será de 300. Só estou colocando números aleatórios neste momento. impacto do lançador de foguetes afeta o tempo de pré-carga B. Oimpacto do lançador de foguetes afeta o tempo de pré-carga B. Para ter este ser 750, então r. Então isso não vai realmente afetar para onde o projétil está indo, mas afetará a mira. Ok, então vai tornar mais difícil acertar fogo apontar porque você não vai atravessar aqui. Os spreads podem ser muito mais largos. Agora, pontapé de arma, provavelmente queremos que isto seja negativo 0,5, provavelmente muito. Quanto mais perto de um, mais louco seria se fosse como dois negativos. Assim, quanto menor o número, mais intensivo será essencialmente salvo. Pensar nisso, já que são números negativos, é como invertido. Então negativo 0,5 não é muito, mas como negativo dois é como se a taxa de fogo não importasse. Se eu digitar projétil. Sim. A única coisa que quero fazer é como o lança-granadas. Vai adicionar um componente. E eu quero ter certeza de fazer isso aqui em um,
um sistema de partículas e chamaremos isso de efeitos de trilha novamente. E depois há um rastro de foguetes. Posso lançar uma trilha. Tudo bem. Dedos cruzaram, esqueça algo. Mas sim, nós temos isso. Agora temos este atraso um pouco de carregamento iniciado. Veja, é como discutir. Oh, lá vamos nós. Temos que matar. Os sons são um pouco inafundáveis. O foguete é muito alto e assim você poderia, mas se você ouvir atentamente, você ainda pode meio que ouvir aquele impulso mortal. Se eu atirar bem no chão na frente deles. Só tive uma decisão. Faça isso com todos eles. Mas espero que isso esteja criando Oh, eu posso não ter definido o raio de impacto. Isto, na verdade, sentou-se no raio de impacto do status da arma. Eu só pensei que o fim deste vídeo está ficando muito aleatório. E é meio que mexer em torno até este ponto. Você pode ver que isso atingiu as pessoas que me contrataram o raio da lista local. Não é super grande refi bater no chão. Na verdade. Mais cedo eles vão? Não. Tudo bem. Desça até ele. Ok. Sim. Acho que é tudo. São todas as nossas armas que podemos pegar o MO. Sim, acho que é tudo o que temos que fazer nesta aula por enquanto. Temos que pegar essa arma, essa arma. Esta arma. Não mudei a propagação da bala para ver que a espingarda não é tão grande. Então eu poderia fazer isso um pouco maior. Você pode ver que eles estão mudando um pouco. Chicago é mais do que como todos eles. Sim, podemos pegar nossas munições. Pegue isso. Sim, você tem todo esse projeto. Deve ser tudo trabalho agora. Burros. Isto, tenho isto. Temos um pouco disso. Nós temos um pouco oh, eu errei. Temos um pouco de dívida. Será isto. E um pouco para ele. 360. Acabe com eles no pistil. Veja, agora você pode começar a se divertir. Você pode alternar entre as armas e você pode ser Africano Pro aqui. Ok. Então, sim, pessoal, eu acho que isso é praticamente tudo. Então, antes de terminarmos, só
quero rever algumas coisas. Então, avançando neste projeto, obviamente há certas coisas que estão em atiradores em primeira pessoa que eu não incluí aqui no queria incluir as armas. Quero incluir D, a munição e os diferentes defeitos de impacto. Então, como eu disse, é muito facilmente personalizável para agora
torná-lo qualquer tipo de tiro em primeira pessoa que você quiser. Você pode tomar este conhecimento de como
desenhar os traços de linha e você pode aplicar isso a um atirador em terceira pessoa. Ele alerta, ele vai funcionar exatamente da mesma maneira. Você pode adicionar diferentes tipos de serviço. Você pode adicionar IA aos inimigos, um monte de coisas diferentes. Então, sim, então como agora você pode fazer o tipo de jogo que você quer, você pode torná-lo em como um atirador Luder, pode torná-lo em um tipo de sobrevivência onda zumbi de jogo. Você pode ter alvos de tiro com um sistema de pontos. Você pode fazer. Um atirador militar mais padrão, que é como o que eu fiz aqui. Você pode ir em frente e criar como um sistema de saúde, adicionar exames de sangue. Nós não temos uma maneira de o jogador realmente sofrer dano
neste projeto atual com isso é algo que pode ser adicionado. Você pode fazer captadores de saúde e coisas diferentes assim. Podemos fazer os inimigos largarem munições. Então o que podemos fazer isso seria muito simples. Ofereça a este inimigo a morte. Você poderia adicionar um pin extra e você poderia fazer com que ele gerasse um ator da classe. E você pode fazê-lo gerar qualquer um desses. Você pode tirar uma matriz, certo? E então você pode fazer com que seja qualquer uma dessas seis possibilidades que você precisa. Talvez você possa ter uma matriz de 10. Então há uma chance de que nada caia do inimigo, algo assim. Podemos colocar mais, Mais recursos UI com as armas nos captadores. Porque agora em um jogo real, algo apareceria e você poderia realmente interagir com isso. Isso foi algo que eu não me preocupei em acrescentar. Podemos dar o nosso jogo para fazer essa mão e desaparecer. Então, espero que você saiba o suficiente sobre diferentes projetos de animação com que não estamos segurando uma arma. Tudo o que você tem que fazer é apenas mudar a animação ou você pode simplesmente, você pode até mesmo fugir de um tick de evento e ter a malha de braço se não tivermos uma arma acabada de definir no Endgame e tiver isso invisível. Então há apenas como um casal como pequenas coisas que você pode fazer. Este projeto não vai ser super perfeito. Haverá pequenos problemas. Uma coisa que eu notei isso em particular é que se você está trocando de armas,
então, se eu estou mirando e trocando armas, na verdade só fica entre elas. Ele realmente não toca a animação no som. Então é por isso que as equipes de QA existem. Então há certas coisas que não são necessariamente como bugs em si, mas são uma espécie de imersão quebrando coisas dentro do código que você pode tentar aliviar. Provavelmente há algumas coisas que eu, honestamente, eu nem estou ciente, mas tal é a vida. Isso é tipo de quando fazer jogos é como se houvesse tanto tempo gasto em diferentes compilações de jogos sendo criados todos os dias e seguida, ter essas compilações atualizadas e ter uma equipe inteira de pessoas jogando testando-os para encontrar alguns dessas questões que talvez o computador não reconheça como um problema, mas um ser humano jogando o jogo diria, isso é um pouco natural ter acontecido assim, certo? Também podemos adicionar mais configurações de colisões ao jogo. Então, a deusa tem isso trabalhando como traços de linha, mas essas caixas invisíveis que você pode ver que elas realmente interagem,
atingem a coisa padrão de pedra que não podemos andar ao redor delas. Isso seria tão simples como ir para as configurações do projeto, entrar em colisão e adicionar configuração que a caixa diz um tipo diferente de traço de objeto que nosso jogador pode realmente caminhar entre, e isso é algo que nosso traço de linha faria, ignoraria. Ok, então eu estou tentando pensar em qualquer outra coisa. Você também pode fazer o jogo como você quer. Como se eu não tivesse com o jeito que eu preparei. Você não pode recarregar. Se estiver correndo. Você pode, você pode mudar isso se quiser. Você pode modificar, modificar o script para seu gosto pessoal ou qualquer outra coisa, dependendo de como isso funciona e onde você está assistindo. Se há certos recursos que você quer me ver especificamente mostrar-lhe como fazer se você não está ciente disso. Você é incapaz de encontrar um tutorial no YouTube para construir este projeto ou algo sobre a documentação irreal, eu sugeriria vivamente que você vá em frente e tente que se você quiser pesquisar algo que é como realmente, realmente específico. Mas se houver certos outros recursos que você deseja ver adicionados, basta me avisar e eu posso potencialmente adicionar a este curso, eu teria que pensar se é possível que você possa adicionar vídeos, como anexá-los ao final. Mas sim, se você fez todo o caminho até o final desta aula, muito
obrigado por assistir. Significa muito para mim que você veja esse tipo de coisa envolvente. Espero que tenha aprendido muito sobre este projeto final em nosso orgulho dele. E pode deixar isso ser e ser como, ok, eu sei como fazer isso e isso foi divertido ou você pode começar a personalizá-lo e adicionar suas próprias coisas a ele, seus próprios recursos indo para o mercado e, e, e fazendo esses caras não gostarem do homem do manequim ou algo assim. Então, sim. Este projeto é uma ostra então você pode usá-lo como algo como ok, eu sei como fazer isso e isso foi legal. Ou você pode manter UM adicionado a ele. E se continuares a acrescentar, adoraria ver o que crias a partir disto. Haverá incrível. Como sempre, tem alguma pergunta para mim? Apenas escreva na discussão ou mande um e-mail ou algo assim. Muito obrigado por assistirem isso do começo ao fim. Significa muito para mim. E eu vou vê-lo no próximo vídeo barra classe barra barra barra. Eu nem sei. Tudo bem. Bom.