
Oi, habrozhiteli! A segunda edição do Unity in Action foi completamente redesenhada para apresentar novas abordagens e idéias que ajudam você a aproveitar ao máximo o Unity para desenvolvimento de jogos. É dada mais atenção ao design de jogos bidimensionais, cujos conceitos fundamentais o leitor pode colocar em prática e construir um jogo de plataformas bidimensional complexo. Este livro pode ser chamado com segurança de introdução ao Unity para programadores profissionais. Joseph Hawking fornece às pessoas com experiência em desenvolvimento todas as informações necessárias para ajudá-las a aprender rapidamente uma nova ferramenta e começar a criar novos jogos. E é melhor aprender com projetos específicos e tarefas práticas.
A unidade é frequentemente apresentada como um conjunto de componentes que não requerem programação, o que é fundamentalmente errado. Para criar um jogo bem-sucedido, é preciso muito: o excelente trabalho do artista, habilidades de programação, uma história interessante, jogabilidade fascinante, trabalho amigável e coordenado da equipe de desenvolvimento. E não devemos esquecer a visualização impecável e o trabalho de alta qualidade em todas as plataformas - de consoles de jogos a telefones celulares. O Unity combina um mecanismo poderoso, oportunidades de programação profissional e designers criativos, permitindo que você realize os projetos mais incríveis e ambiciosos.
Domine a Unidade e comece a criar seus próprios jogos mais rapidamente!
Estrutura do livro
O capítulo 1 apresenta o Unity, um ambiente de desenvolvimento de jogos entre plataformas. Você aprenderá o sistema de componentes básicos subjacente ao Unity e também aprenderá a escrever e executar scripts básicos.
No Capítulo 2, passaremos a escrever um programa que demonstra movimento no espaço tridimensional, examinando simultaneamente tópicos como entrada de mouse e teclado. A determinação da posição dos objetos no espaço tridimensional e a operação de sua rotação é explicada em detalhes.
No capítulo 3, transformaremos o programa de demonstração em um jogo de tiro em primeira pessoa, demonstrando o método de emissão de feixes e os conceitos básicos de inteligência artificial. A emissão de raios (criamos uma linha na cena e vemos com que ela se cruza) é necessária em todas as versões dos jogos.
O capítulo 4 é dedicado à importação e criação de recursos de jogos. Este é o único capítulo do livro em que o código não desempenha um papel central, pois cada projeto requer modelos e texturas (básicos).
O capítulo 5 ensina como criar jogos bidimensionais no Unity. Embora essa ferramenta tenha sido originalmente destinada exclusivamente à criação de gráficos tridimensionais, agora suporta perfeitamente gráficos bidimensionais.
O capítulo 6 continua a explicação dos princípios da criação de jogos bidimensionais usando o jogo de plataforma como exemplo. Em particular, implementamos controles, simulando o ambiente físico e a animação do personagem.
O capítulo 7 apresenta a funcionalidade mais recente da GUI no Unity. A interface do usuário é necessária para todos os jogos, e as versões mais recentes do Unity possuem um sistema aprimorado de criação de interface do usuário.
No capítulo 8, criaremos outro programa que demonstre movimento no espaço tridimensional, mas desta vez do ponto de vista de um observador externo. A implementação de controles de terceiros fornecerá uma idéia das principais operações matemáticas no espaço tridimensional. Além disso, você aprenderá como trabalhar com personagens animados.
O capítulo 9 mostra como implementar dispositivos e elementos interativos no jogo. O jogador terá várias maneiras de usar esses dispositivos, inclusive tocando diretamente, tocando os gatilhos dentro do jogo ou pressionando o botão do controle.
O capítulo 10 ensina a interação com a World Wide Web. Você aprenderá como enviar e receber dados usando tecnologias padrão, como solicitações HTTP, para receber dados XML de um servidor.
No capítulo 11, você aprenderá como adicionar som aos jogos. No Unity, efeitos sonoros curtos e fonogramas musicais longos são notavelmente suportados; as duas opções de som são críticas para quase todos os videogames.
No capítulo 12, reuniremos fragmentos de vários capítulos para obter um jogo no final. Além disso, você aprenderá como programar controles que são manipulados com o mouse e salvar o jogo.
Sobre o autor
Joseph Hawking vive em Chicago e desenvolve software para ambientes interativos. Ele trabalha na InContext Solutions. A primeira edição deste livro foi escrita durante seu tempo na Synapse Games. Ele também ensinou desenvolvimento de jogos na Universidade de Illinois, no Instituto de Artes de Chicago e no Columbia College. Seu site é
www.newarteest.com .
Trecho. 6.4.2 Push up
Vamos ensinar o personagem a pular. Para fazer isso, quando você pressiona o botão Jump, o personagem deve empurrar para cima. A velocidade do movimento horizontal é editada diretamente no código e, com o movimento vertical, agiremos de maneira diferente para não interferir na ação da gravidade. O fato é que várias forças podem afetar um objeto ao mesmo tempo, portanto adicionamos força ascendente a ele. Cole esse código no script de movimento.
Preste atenção ao comando AddForce (). A força crescente é adicionada ao componente Corpo rígido no modo pulsado; impulso é um empurrão repentino, diferente de uma força de ação contínua. No código, esse choque ocorre após pressionar a barra de espaço. Ao mesmo tempo, a gravidade continua a atuar no personagem, devido ao qual, após o salto, ele descreve um belo arco.
Mas, talvez, você já tenha prestado atenção a uma desvantagem, cuja eliminação estamos trabalhando agora.
6.4.3 Reconhecimento de superfície
O controle de salto tem uma pequena desvantagem: a capacidade de saltar em voo (quando o personagem já saltou ou caiu). Pressionar a barra de espaço, mesmo neste caso, dará um impulso, embora isso não possa ser feito. O controle de salto deve funcionar apenas para um personagem em pé na plataforma. Portanto, você precisa aprender como determinar se um personagem está na superfície.
Esse código rouba o caráter da capacidade de pular no ar. Ele verifica se há um colisor sob o personagem e leva em consideração o resultado da verificação na condição do salto. Primeiro, os limites da primitiva de colisão de nosso personagem são determinados e, em seguida, os coletores sobrepostos são pesquisados na área com a mesma largura diretamente sob as pernas do personagem. O resultado da verificação é armazenado na variável aterrada e usado na instrução condicional.
6.5 Recursos adicionais de plataforma
Então, descobrimos as nuances da implementação dos movimentos, andando e pulando do personagem. Vamos complementar a demonstração do nosso jogo com novos recursos ambientais.
PROJETANDO NÍVEIS COM O TILEMAP_ ______
No âmbito do projeto, o piso e as plataformas foram criados a partir de retângulos brancos vazios. A versão final do jogo requer gráficos mais elaborados, mas é improvável que o computador seja capaz de processar uma imagem do tamanho de um nível inteiro. Na maioria das vezes, esse problema é resolvido usando a ferramenta tilemap. Permite projetar imagens com base no princípio de uma grade. Aqui está como fica.
Atenção: o mapa é composto inteiramente de pequenas células. É isso que permite cobrir a tela inteira com uma imagem sem recorrer a imagens muito grandes.
A ferramenta oficial do tilemap foi adicionada às versões mais recentes do aplicativo Unity. Você também pode usar bibliotecas externas, por exemplo, Tiled2Unity, um sistema que importa mapas criados no popular editor de mosaico (e gratuito).
6.5.1 Plataformas inclinadas e unilaterais
Agora, no nosso jogo, existe apenas um piso comum e um bloco através do qual você pode pular. Mas existem outras opções de plataforma. Vamos usá-los para diversificar a cena. Vamos começar com a seção inclinada. Crie uma cópia do objeto Floor, atribua a ele o nome Slope, insira os valores 0, 0, -25 nos campos de transformação de rotação e mova-o para a esquerda, atribuindo os valores de –3,47, –1,27, 0 às coordenadas da transformação de transformação.
Comece a reproduzir a cena. No processo de movimento, o personagem desliza corretamente para cima e para baixo. Mas devido à gravidade, ele começa a deslizar para baixo e em um estado estático. Para resolver esse problema, desative a simulação da gravidade nos casos em que o personagem (a) esteja na plataforma, (b) esteja em repouso. Felizmente, já o ensinamos a reconhecer superfícies e podemos usá-lo em um novo trecho de código. Você precisa adicionar apenas uma linha.
Após editar o código de movimento, o personagem começou a se comportar corretamente em superfícies inclinadas. Agora adicione a chamada plataforma unidirecional. Um personagem pode não apenas ficar nele, mas também pular nele. Quando você tenta pular através de uma plataforma regular, o personagem bate na cabeça dele.
As plataformas unilaterais são frequentemente encontradas nos jogos, portanto o Unity tem um meio de implementá-las. Se você se lembra, anteriormente, ao adicionar o componente Platform Effector, desmarcamos a caixa de seleção Use One Way. E agora precisamos! Mais uma vez, crie uma cópia do objeto Piso, dê o nome de Plataforma, insira os valores 10, 1, 1 nos campos de escala e coloque o objeto resultante acima do piso, especificando as coordenadas -1,68, 0,11, 0. E certifique-se de selecionar a caixa de seleção Use One Way na seção Plataforma Effector 2D.
O personagem poderá voar pela plataforma ao pular para cima, mas impedirá o movimento para baixo. Apenas uma desvantagem precisa ser resolvida. É ilustrado na fig. 6.11 No Unity, o sprite da plataforma pode ser exibido na parte superior do personagem (para facilitar a visualização, defina a variável jumpForce como 7. Você pode editar a coordenada Z do personagem como no capítulo anterior, mas desta vez faremos isso de maneira diferente. sprites, existe uma ordem de classificação que determina qual sprite será exibido no topo. Selecione o objeto Player e defina o parâmetro Order in Layer na seção Sprite Renderer para 1.
Agora na cena há um fragmento inclinado do chão e uma plataforma unidirecional. Mas há outra opção incomum, que é implementada um pouco mais difícil do que as plataformas que você já conhece. Vamos ver como isso é feito.
6.5.2 Movendo plataformas
A terceira versão do gênero incomum, comum em jogos de plataforma, é mover plataformas. Para adicionar essa plataforma ao nosso jogo, você precisará, primeiro, escrever um novo script que controle seus movimentos e, em segundo lugar, editar o script para o movimento do personagem. No novo cenário, a plataforma se moverá entre dois pontos: início e fim. Crie um script C # chamado MovingPlatform e adicione o seguinte código a ele.
DESENHO GIZMOS PERSONALIZADOS _________________________________________
A maior parte do código escrito no processo de leitura de um livro programa o que acontece nos jogos. Mas os scripts do Unity permitem influenciar o editor interno. Muitos não sabem que você pode adicionar menus e janelas adicionais ao Unity. Além disso, com a ajuda deles, objetos auxiliares são criados na guia Cena, chamados de recipientes dimensionais (dispositivos).
Você já encontrou contêineres em massa. Lembra dos paralelepípedos verdes que designam colisores? Eles estão integrados no Unity, mas ninguém o incomoda em escrever um script para seu próprio contêiner geral. Por exemplo, na guia Cena, crie uma linha correspondente à trajetória da plataforma. É mostrado na figura.

O código que desenha essa linha é muito simples. Na parte superior do código que afeta a interface do Unity, adicione a linha usando o UnityEditor; (porque a maioria das funções do editor está nesse espaço de nome específico), mas isso não é necessário neste caso. Basta adicionar este método ao seu script MovingPlatform:
... void OnDrawGizmos() { Gizmos.color = Color.red; Gizmos.DrawLine(transform.position, finishPos); } ...
Sobre esse código, é importante entender o seguinte. Primeiro, toda a ação é feita dentro do método OnDrawGizmos (). Esse é o nome do sistema, assim como os nomes dos métodos Iniciar e Atualizar. Em segundo lugar, adicionamos duas linhas de código a esse método: a primeira define a cor da linha e a segunda força o Unity a desenhar uma linha de onde a plataforma está localizada no ponto de destino.
Arraste esse script para a plataforma. Comece a tocar a cena e você verá que agora a plataforma está se movendo de um lado para o outro! Resta editar o script que controla os movimentos do personagem para associá-lo a uma plataforma móvel. Faça as seguintes alterações.
Agora, o personagem que pula na plataforma se move com ela. Na verdade, tudo se resumia em transformar o personagem em um filho da plataforma. Espero que você se lembre de que, após a formação do relacionamento hierárquico, a criança começa a se mover atrás dos pais. O método GetComponent () na Listagem 6.7 verifica se a superfície reconhecida é uma plataforma móvel. No caso de um resultado positivo, ela se torna um ancestral em relação ao personagem; caso contrário, o personagem será desconectado de qualquer ancestral.
Mas há um problema. O personagem herda da plataforma e da transformação de escala, que afeta seu tamanho. A situação pode ser corrigida pela transformação inversa (redução da escala do personagem, compensando o aumento no tamanho provocado pela plataforma).
Matematicamente, a compensação de escala parece muito simples: o jogador recebe 1 dividido pela escala da plataforma. E quando um pouco mais tarde a escala do jogador é multiplicada pela escala da plataforma, o resultado é 1. O único momento difícil nesse caso é levar em conta o sinal que determina a direção do movimento; talvez você se lembre de que, dependendo disso, o personagem virou de um lado para o outro.
Então, adicionamos uma plataforma móvel ao jogo. Ainda resta um toque final e a versão demo estará completamente pronta ...
»Mais informações sobre o livro podem ser encontradas no
site do editor»
Conteúdo»
TrechoCupom de desconto de 20% para vendedores ambulantes -
UnityPS: 7% do custo do livro será destinado à tradução de novos livros de informática, a lista de livros entregues à gráfica
aqui .