Programando na Unity 3D Engine (Parte 01)

Documentos relacionados
Algoritmos II prof. Daniel Oliveira

Programação Orientada a Objetos

Estruturas de Repetição

Laboratório de Programação II

4. Constantes. Constantes pré-definidas

Introdução à Linguagem C++

Variáveis primitivas e Controle de fluxo

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Apostila - Desenvolvimento web com PHP

LABORATÓRIO: CRIANDO O JOGO MEGAMAN 2D

CONCEITOS DE ALGORITMOS

Preparatório OBI. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula 01 Introdução a C++

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Introdução a Programação

Introdução a Programação

Fundamentos Programação

Fundamentos de Programação em Python

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Working 03 : Conceitos Básicos I

Programação Aplicada à Engenharia

Professor Jefferson Chaves Jefferson de Oliveira Chaves - IFC Araquari

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

Desenvolvido por: Juarez A. Muylaert Filho - Andréa T. Medeiros - Adriana S. Spallanzani -

Programação de Computadores II

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Conceitos Básicos Linguagem C

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

Linguagem de Programação

Análise de Programação

NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços

Programação Estruturada

Programação de Computadores III

WORKSHOP FUNDAMENTOS DO UNITY 3D. WorkShop Fundamentos de UNITY 3D João Pires

Programação: Vetores

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Programação de Computadores III

Técnicas de Programação

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

TÉCNICO DE INFORMÁTICA - SISTEMAS

Programação de Computadores:

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

Algoritmo e Programação Matemática

Unidade 2: Estruturas de Controle Parte 1 - Scanner e Estrutura IF Prof. Daniel Caetano

Oficina de Python Prof. Me. José Carlos Perini

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

PROGRAMAÇÃO ORIENTADA A OBJETOS I. Prof. Me. Hélio Esperidião

Oficina de Python Prof. Me. José Carlos Perini

Estruturas de Controle em c#

Introdução ao C# com o Microsoft Visual Studio Community 2015

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Estruturas de Repetição

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

INSTRUÇÕES DE REPETIÇÃO

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

exatasfepi.com.br Informática C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13

Unidade 11: Programando Swing com o NetBeans Prof. Daniel Caetano

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Semana 2 Estruturas de Condição, Seleção e Repetição. Prof. Tiago Jesus de Souza

Programação Computacional C/C++

Linguagem C Princípios Básicos (parte 1)

Programação de Redes de Computadores

Programação para Games I

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

Introdução à programação de jogos em C# Aula 01 Variáveis e Métodos

Lição 4 Fundamentos da programação

Aula 11: Desvios e Laços

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Algoritmos e Programação

Programação Estruturada e Orientada a Objetos

PROGRAMAÇÃO COMPUTACIONAL

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Exercitando a Programação com PHP

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Revisão. Profa Marina Gomes

Java Variáveis e Controle Fluxo

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

JavaScript (Elementos de Programação e Programação Básica)

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Transcrição:

Programando na Unity 3D Engine (Parte 01) Salustiano Rodrigues de Oliveira saluorodrigues@gmail.com

Sumário Programando na Unity 3D Engine (Parte 01)... 1 GameObject... 3 Script... 3 Criando Scripts na Unity 3D... 4 Analisando o Script... 5 Executando nosso primeiro Script... 6 A linguagem C#... 7 Variáveis... 7 Declarando uma variável... 7 Tipos primitivos... 8 Operadores... 9 Modificadores de acesso... 9 Estruturas de Controle... 10 IF/ELSE... 10` Tomando decisões complexas (ELSE-IF)... 10 Arrays... 11 Estruturas de repetição... 11 WHILE... 12 DO WHILE... 12 FOR... 12 FOREACH... 13

GameObject GameObject é a base de todos os objetos em uma Scene (Cena). De fato, todos os objetos de uma Scene são um GameObject. Entretanto, GameObjects não fazem nada sozinhos. Eles precisam de certas características para se tornarem um personagem, um cenário, uma arma, uma explosão, um veículo, um item, etc. Na verdade, GameObjects são apenas containers. Eles são caixas vazias onde você pode adicionar diversos Components (Componentes). Dependendo do objeto que você queira criar, você irá adicionar diferentes combinações de Components ao GameObject. Você poderá também criar seus próprios componentes via script. Todo GameObject possue um Component chamado Transform e não é possível remove-lo. Todos os Components de um GameObject podem ser visualizados dentro da aba Inspector. Alguns exemplos de Components: Transform: responsável por dimensionar, girar e posicionar o elemento na cena. Mesh Filter: selecionar a malha ou textura que ira renderizar o objeto na cena. Mesh Render: responsável por renderizar o componente na cena. Box Collider: propriedade de um GameObject de detectar colisões entre componentes de jogo. Figura 1 - Visualizando Components na aba Inspector Script O Script é um ingrediente essencial em qualquer tipo de jogo. Mesmo os jogos mais simples precisam de scripts, seja para responder à entrada do jogador ou organizar um evento. Além disso, Scripts podem ser usados para criar efeitos gráficos, controlar o comportamento físico de objetos ou até mesmo implementar um sistema de IA (Inteligência artificial) personalizado para personagens do jogo.

Na Unity o comportamento de um GameObject é controlado pelos componentes que estão anexados a eles. Embora os Componentes internos da Unity possam ser muito versáteis, em diversos cenários precisaremos ir além do que eles podem fornecer para implementarmos nossos próprios recursos de jogabilidade. A Unity permite que você crie seus próprios componentes usando scripts. Isso nos permite desencadear eventos, modificar propriedades e responder a entrada do usuário da maneira que acharmos mais conveniente. Criando Scripts na Unity 3D Existem diversas formas para criarmos arquivos de Scripts na Unity. Uma delas é clicar com o botão direito do mouse dentro da aba Project, depois selecionar Create à C# Script. Figura 2 - Criando um Script C# Um novo arquivo será criado dentro do projeto como mostra a figura abaixo: Figura 3 - Alterando o nome do Script Podemos renomeá-lo com o nome que quisermos, porém por convenção devemos utilizar o padrão Pascal Case, onde cada palavra é iniciada com uma letra maiúscula, não podendo conter espaços em branco entre as palavras assim como caracteres especiais. Para afins de organização é sempre bom armazenarmos nossos arquivos de Scripts em uma pasta, neste caso irei chamá-la de Scripts que ficará dentro do diretório Assets. Figura 4 - Organizando os arquivos na aba Project

Depois de um duplo clique em cima do arquivo, que deverá ser aberto no Visual Studio ou em algum outro software de edição de Scripts. Dica: No Windows podemos ir em Edit à Preferences à External Tools e trocar de software de edição. Figura 5 - Alterando o software de edição de scripts Por padrão o arquivo gerado pela a Unity sempre terá o formato a seguir: Figura 6 - Script padrão gerado pela Unity Analisando o Script A imagem abaixo mostra o modelo de Script padrão da Unity, onde podemos dividi-lo em 3 partes: Em vermelho, temos os namespaces que serão utilizadas em nosso Script; Em laranja temos a definição da nossa classe; E em azul temos dois métodos que são adicionados por padrão pela própria Unity; Um problema que surge com o desenvolvimento de aplicações grandes é a organização de todas as nossas classes. Para evitar que o sistema fique caótico, podemos agrupar classes por características comuns e dar um nome para cada um desses grupos e esse espaço definido por um nome é chamado de namespace.

As duas primeiras linhas do código acima fazem referência a namespaces básicas do C#, enquanto que a namespace UnityEngine nos dá acesso aos componentes básicos de jogo da própria Unity. Sempre que precisarmos utilizar algum componente em nosso jogo e este não estiver localizado dentro de UnityEngine devemos referenciá-lo de forma explicita, como veremos mais à frente. Figura 7 - Divindo o Script A seguir temos a definição da nossa classe MeuPrimeiroScript. Algo importante para ressaltarmos é que o nome de uma classe deve ser exatamente igual ao nome do seu arquivo (MeuPrimeiroScript.cs), caso contrário, teremos problemas na execução do nosso código. Em seguida temos o trecho MeuPrimeiroScript : MonoBehaviour, isto quer dizer que a classe MeuPrimeiroScript é herdeira da classe MonoBehaviour. Por ultimo temos os métodos Start() e Update(), que serão discutidos mais afundo adiante. Executando nosso primeiro Script Para executarmos o nosso primeiro script, o famoso Hello World!, primeiro devemos escrever o seguinte trecho de código como mostra a figura abaixo: Figura 8 - Hello World! Para executá-lo devemos voltar para a janela do Unity. Porém antes disso devemos associá-lo a um GameObject. Crie em nosso projeto um GameObject vazio (GameObject à Create Empty), depois arraste o arquivo de script para dentro da aba Inspector do GameObject recém criado.

Figura 9 - Adicionando um script a um GameObject Para podermos visualizarmos qualquer informação impressa pelo comando print, devemos habilitar (caso não esteja) a janela de console da Unity, acessando Window à Console. Agora é só clicar em Play e visualizar a aba console. Figura 10 - Visualização da aba console A linguagem C# C# é uma linguagem de programação, multiparadigma, de tipagem forte, desenvolvida pela Microsoft como parte da plataforma.net. A sua sintaxe orientada a objetos foi baseada no C++, mas inclui muitas influências de outras linguagens de programação, como Object Pascal e, principalmente, Java. A linguagem de programação C# pode parecer complicada no início, mas na realidade, existem duas partes básicas que formam sua base, que são: Variáveis Métodos Variáveis Tecnicamente é uma pequena seção da memória do seu computador, que irá armazenar qualquer informação que lhe for passada. Por exemplo, enquanto um jogo está sendo executado, seu computador fica monitorando as informações que deverão ser armazenadas, como seu tipo e valor. Declarando uma variável Na declaração de uma variável, devemos dizer seu tipo e, além disso, qual é o nome que usaremos para referenciá-la no texto do programa. Para declarar uma variável do tipo inteiro que representa o número de pontos de vida do jogador, utilizamos o seguinte código:

Figura 11 - Variável PontosDeVida Dica: Sempre que for nomear uma variável, um método ou um novo Script, sempre tente colocar um nome que melhor o represente. Evite colocar nomes como x ou b1. Prefira nomes como MovimentacaoDoJogador, velocidadedoinimigo ou RotacaoDaCamera. Tipos primitivos As variáveis guardam informações de um tipo específico. Podemos, por exemplo, guardar um número inteiro representando a quantidade de pontos de vida de um jogador, um texto para representar o nome de um personagem ou um número real para representar a velocidade atual de um veículo. Os tipos primitivos mais comuns no C# são: int armazena valores inteiros; float armazena valores decimais; string armazena caracteres; bool armazena os valores true ou false; Abaixo veremos uma lista com todos os tipos primitivos do C#.

Operadores O C# fornece muitos operadores, que são símbolos que especificam as operações (matemática, indexação, chamada de função, etc.) para executar em uma expressão. Segue abaixo alguns desses operadores: + (Adição) (Subtração) * (Multiplicação) / (Divisão) % (Resto/Módulo) = (Atribuição simples) += (Atribuição aditiva) -= (Atribuição Subtrativa) *= (Atribuição Multiplicativa) /= (Atribuição de divisão) %= (Atribuição de módulo) ++ (Incremento) -- (Decremento) == (Igualdade) > (Maior) < (Menor) <= (Menor igual) >= (Maior igual)!= (Diferente)! (Negação) Modificadores de acesso A palavra reservada public indica que essa variável pode ser vista e acessada dentro do painel Inspector da própria Unity (figura abaixo), como também pode ser acessada por outros scripts. Porém nem todas as variáveis necessitam ser públicas. Se não houver necessidade de alterar o valor de uma variável no painel Inspector ou de ser acessado a partir de outros scripts, não faz sentido colocarmos essa variável como publica, nesse caso utilizaremos o modificador de acesso private. Dica: Se você não indicar explicitamente se uma variável será pública ou privada, por padrão, a variável será, implicitamente, private em C#. É uma boa prática de codificação indicar explicitamente se uma variável será pública ou privada.

Estruturas de Controle O mecanismo fundamental da programação é tomar decisões. No cotidiano, fazemos centenas e possivelmente milhares de decisões por dia. Eles podem ser os resultados de perguntas simples, como "Preciso de um guarda-chuva hoje?" ou "Posso colocar mais açúcar no meu café?". Na programação esse tipo de decisão é representado pelo comando if/else. IF/ELSE O comando if/else funciona como uma maneira para descrevermos ao computador, como o código deve ser executado. Por exemplo, a pergunta "está chovendo?" é a uma condição. Ao planejar seu código, você deve sempre quebrar a tomada de decisões em perguntas simples que podem ser respondidas apenas por um simples "sim" ou "não". Caso esteja chovendo, levarei o meu guarda-chuva, se não o deixarei em casa. Figura 12 - IF/ELSE Tomando decisões complexas (ELSE-IF) A expressão else if é uma expressão que você pode adicionar após o bloco de código pertencente a primeira declaração if. Vamos analisar um outro exemplo. Imagine que você está monitorando uma rodovia e precisa verificar o limite de velocidade dos carros que a atravessam, baseado na velocidade atual do veículo você pode

multa-los caso estejam acima do limite de velocidade, apenas adverti-los caso estejam muito abaixo do limite ou parabeniza-los caso estejam na faixa adequada. Arrays Um array armazena uma coleção sequencial de valores do mesmo tipo, nos termos mais simples. Podemos usar arrays para armazenar listas de valores em uma única variável. O tamanho de um array é definido durante a sua criação e não poderá ser modificado. O primeiro valor de um array estará sempre armazenado na posição 0 e o seu último valor estará na posição equivalente ao seu tamanho total menos 1. Estruturas de repetição Estruturas de repetição permitem executar mais de uma vez um mesmo trecho de código. Trata-se de uma forma de executar blocos de comandos somente e sob determinadas condições, mas com a opção de repetir o mesmo bloco quantas vezes for necessário. As estruturas de repetição são úteis, por exemplo, para repetir uma série de operações semelhantes que são executadas para todos os elementos de uma lista ou de uma tabela de

dados, ou simplesmente para repetir um mesmo processamento até que uma certa condição seja satisfeita. WHILE O while é a estrutura de repetição mais simples. Ele repete a execução de um bloco de sentenças enquanto uma condição permanecer verdadeira. Na primeira vez que a condição se tornar falsa, o while não repetirá a execução do bloco, e a execução continuará com a sentença ou comando que vem logo após o bloco do while, na sequência do programa. DO WHILE Esta estrutura tem um comportamento muito semelhante ao while, com uma diferença crucial: a condição é verificada após executar o bloco de instruções correspondente. FOR Na maioria dos casos, algoritmos necessitam executar um bloco de sentenças por um número específico de vezes. Frequentemente, utiliza-se uma variável para controlar o número de repetições. Já aprendemos como fazer isso usando o while e o do...while. Estas situações sempre apresentam uma variável contadora e as quatro etapas seguintes: Inicialização: Atribui um valor inicial à variável contadora. Teste: Verifica uma condição antes de decidir se executará o bloco de sentenças. caso a condição seja falsa, interrompe as repetições.

Execução: Executa o bloco de sentenças. Atualização: Atualiza a variável contadora para o próximo valor. Um for sempre está acompanhado de uma variável contadora que armazena quantas vezes o bloco de sentenças do for deve ser executado. Em seguida avalia a expressão, que determina se o valor da variável contadora está dentro do limite desejado. Caso positivo, o bloco de sentenças é executado e, em seguida, é executada a atualização, que altera o valor da variável contadora. O processo se repete avaliando novamente a expressão. FOREACH O loop foreach é muito simples de usar. Ele também possui a sintaxe mais simples. Usamos a palavra-chave foreach seguida de parênteses neste loop. Dentro dos parênteses, você deve especificar o tipo de dados que você deseja iterar dentro do seu loop. Escolha um nome de variável de elemento único. Você pode nomeá-lo da forma que quiser. Esse nome é usado para acessar essa variável dentro do bloco de loop principal. Após o nome, escrevemos a palavra-chave in, e em seguida o nome da variável do array ou lista, conforme mostrado abaixo: