• Nenhum resultado encontrado

Tutorial de desenvolvimento de mini jogo em Unity 3D Converter e exportar o mini jogo para dispositivos Android

N/A
N/A
Protected

Academic year: 2021

Share "Tutorial de desenvolvimento de mini jogo em Unity 3D Converter e exportar o mini jogo para dispositivos Android"

Copied!
17
0
0

Texto

(1)

Tutorial de desenvolvimento de mini

jogo em Unity 3D

Converter e exportar o mini jogo

para dispositivos Android

Diogo Filipe, Ramiro Conceição

Instituto Politécnico de Leiria Escola Superior de Tecnologia e Gestão

Informática para a Saúde 31-10-2014

(2)

1

Introdução

Após termos criado o nosso mini jogo a partir do primeiro tutorial “Aprender os Básicos do Unity”, este estará apto a ser jogado em computador com auxílio dos botões do teclado. Neste tutorial vamos exportar esse mesmo mini jogo para dispositivos android, mas como nesta plataforma é utilizado o “touch” e não um teclado físico, iremos aprender a converter o nosso mini jogo adicionando botões “touch” e fazendo as alterações necessárias para que o nosso mini jogo possa ser jogado também em plataformas android sem problemas.

No final do tutorial teremos um mini jogo semelhante ao da figura abaixo onde podemos observar os botões touch que serão utilizados para interagir em dispositivos android.

(3)

2 Etapa 1 - Preparar o Cenário.

Abrir o mini jogo desenvolvido inicialmente para computador (caso não o tenha basta seguir o tutorial “Aprender os básicos do Unity”).

1.1- Procurar a pasta onde esta o mini jogo e aceder a:

Pasta “Assets” -> pasta “_Scenes” -> abrir o cenário “Demo” Com o cenário aberto e antes de mais, para posteriormente não gerar confusões, caso tenham um game object “Player” (o nosso jogador inicial do tutorial anterior que corresponderia a uma esfera) vamos eliminar este game object.

De seguida vamos importar assets que nos permitem fazer uso dos recursos de dispositivos mobile como é o caso dos android. Para tal: 1.2- Na barra de menus clicar em:

Assets -> Import Package -> Standard Assets (Mobile) Clicar em import na caixa de texto que aparecerá.

Desta forma teremos á nossa disposição os Assets para mobile onde encontraremos um prefab (um asset já criado) de nome “First Person Controls” que utilizaremos para substituir o nosso jogador inicial. Comecemos então por adicionar este prefab:

1.3- Na vista Project navegar até “First Person Controls”:

Assets -> Standard Assets (Mobile) -> um clique em Prefabs: Selecionar o “First Person Controls” e arrastar para a Hierarchy. Vamos alterar a cápsula criada por pré definição pelo nosso player (3rd Person Controller).

1.4- Na vista Hierarchy navegar pelo “First Person Controls” até chegar ao “capsule”:

First Person Controls -> First Person Controls -> Player -> Capsule

Eliminar este game object “Capsule”.

1.5- Arrastar o nosso player “3rd Person Controller” para onde estava o Capsule:

First Person Controls -> First Person Controls -> Player (arrastar para aqui).

1.6- Criar um novo Game Object. 1.7- Fazer Reset a este Game Object. 1.8- Renomeá-lo para “Joysticks”.

1.9- Arrastar o “Joysticks” para o game object de nome “Player” onde já se encontra o nosso “3rd Person Controller”.

Encontramos associado ao nosso primeiro game object “First Person Controls” outros dois game objects de nomes “RightTouchPad” e “LeftTouchPad” onde teremos os nossos botões touch.

(4)

3 1.10- Vamos então arrastar estes dois game objects para dentro do

nosso game object “Joysticks”.

1.11- Como foram criados game objects a mais por pré definição no game object “First Person Controls” podemos navegar até a “Player” (First Person Controls -> First Person Controls -> Player) e com este game object “Player” selecionado arrasta-lo

diretamente para a Hierarchy para fora dos game objects “First Person Controls”. Em seguida estes game objects ficarão vazios portanto poderemos eliminá-los.

Vamos também querer que a nossa Main Camera siga o nosso jogador (3rd Person Controller). Como podemos observar o nosso game object “Player” já trás também por pré definição uma Main Camera, então vamos proceder ao seguinte:

1.12- Com esta Main Camera selecionada arrastamo-la para o nosso “3rd Person Controller”.

1.13- A nossa outra Main Camera inicial, que não está associada a nada podemos eliminá-la.

1.14- Com a Main Camera do “3rd Person Controller” selecionada, vamos á vista Inspector, no componente “Camera” e caso o “Background” esteja a preto alteramos a cor para um azul para parecer mais alegre.

Em seguida alteramos os valores da Main Camera para podemos observar o nosso jogador (3rd Person Controller).

1.15- Com a Main Camera selecionada, vista Inspector no

componente Transform alteramos a “Position” -> Y = 2 e Z = -3 alteramos ainda a “Rotation” -> X = 10.

(5)

4 Etapa 2 - Preparar os Botões touch.

Depois de termos toda a hierarquia definida na vista Hierarchy e tudo pronto podemos adicionar os botões que servirão para interagirmos com o nosso jogo através de um dispositivo android.

2.1- Na vista Hierarchy navegamos até aos game objects

“RightTouchPad” e “LeftTouchPad”. Selecionando um de cada vez alteramos a textura de ambos para aparecer os botões touch:

Selecionar “RightTouchPad” ir á vista Inspector, componente GUITexture, selecionar em Texture e escolher a textura

“JoystickThumb”.

Selecionar “LeftTouchPad” ir á vista Inspector, componente GUITexture, selecionar em Texture e escolher a textura “JoystickThumb”.

(6)

5 2.2- Alterar também em ambos, no componente GUITexture, o “Pixel

Inset” em ambos deverá ser: X = 0 e Y = 0; W = 150 e H = 150. Desta forma estão ambos sobrepostos mas vamos agora

adicionar um script que fará com que os botões fiquem alinhados á esquerda e á direita respetivamente dependendo do tamanho do ecrã do dispositivo.

2.3- Na vista Hierarchy navegamos até ao game object “Joysticks” que criamos, selecionamo-lo e em seguida na vista Inspector clicamos no botão “Add Component” -> “New Script”, com o Name “Joysticks Position” e Language “Java Script”.

2.4- Com o botão direito clicamos no script criado e editamo-lo (Edit Script). O editor de texto do Unity abrirá com o código do nosso script. Selecionamos todo esse código gerado automaticamente e substituímos pelo código apresentado abaixo:

#pragma strict

public var leftJoystick : GUITexture; public var rightJoystick : GUITexture; public var size : float;

function Start() {

//right joystick size and position:

rightJoystick.pixelInset.width = Screen.width * size; rightJoystick.pixelInset.height= Screen.width * size;

(7)

6 rightJoystick.pixelInset.x = Screen.width -

rightJoystick.pixelInset.width*1.5;

//left joystick size:

leftJoystick.pixelInset.width = Screen.width * size; leftJoystick.pixelInset.height= Screen.width * size; leftJoystick.pixelInset.x = leftJoystick.pixelInset.width/2; }

2.5- Voltamos ao Unity e verificamos que possou a estar disponíveis dois parâmetros no nosso script: “Left Joystick” e “Right Joystick”. Arrastamos o “RightTouchPad” da vista Hierarchy para o

parâmetro do script “Right Joystick” e o “LeftTouchPad” da vista Hierarchy para o parâmetro do script “Left Joystick”.

2.6- Alteramos o valor do parâmetro “Size” do script para 0.15 e pressionamos o botão “Enter” do teclado.

2.7- De seguida confirmamos os valores dos game objects na vista Inspector e acertamos os componentes:

Game Object “Player” -> Transform -> “Position” e “Rotation” tudo a 0 (zero), “Scale” -> tudo a 1 (um).

Deixamos apenas o componente Transform. Todos os outros removemos.

Game Object “Joysticks” -> Transform -> “Position” e “Rotation” tudo a 0 (zero), “Scale” -> tudo a 1 (um).

Game Object “RightTouchPad” -> Transform -> “Position” e “Rotation” tudo a 0 (zero), “Scale” -> X = 0, Y = 0, Z = 1. Game Object “LeftTouchPad” -> Transform -> “Position” e “Rotation” tudo a 0 (zero), “Scale” -> X = 0, Y = 0, Z = 1.

Game Object “3rd Person Controller” -> “Position” -> X = 0, Y = 2, Z = 0; “Rotation” tudo a 0 (zero), “Scale” -> tudo a 2 (dois).

Removemos os componentes correspondentes aos scripts “Third Person Controller” e “Third Person Camera”. Adicionamos um script (Add Component -> Script -> First Person Control) e editamos este First Person Controller (Script) substituindo o código todo pelo código abaixo:

#pragma strict

@script RequireComponent( CharacterController )

// This script must be attached to a GameObject that has a CharacterController var moveTouchPad : Joystick;

(8)

7 var rotateTouchPad : Joystick; // If unassigned, tilt is used var forwardSpeed : float = 4;

var backwardSpeed : float = 1; //var sidestepSpeed : float = 1; var runningMultiplier : float = 3; var jumpSpeed : float = 8;

var inAirMultiplier : float = 0.25; // Limiter for ground speed while jumping

private var thisTransform : Transform;

private var character : CharacterController; private var cameraVelocity : Vector3;

private var velocity : Vector3; // Used for continuing momentum while in air

private var canJump = true; private var isRuning = false; function Start()

{

// Cache component lookup at startup instead of doing this every frame thisTransform = GetComponent( Transform );

character = GetComponent( CharacterController );

// Move the character to the correct start position in the level, if one exists var spawn = GameObject.Find( "PlayerSpawn" );

if ( spawn )

thisTransform.position = spawn.transform.position; }

function OnEndGame() {

// Disable joystick when the game ends moveTouchPad.Disable();

if ( rotateTouchPad ) rotateTouchPad.Disable();

(9)

8 this.enabled = false;

}

function Update() {

var movement = thisTransform.TransformDirection( Vector3( 0, 0, moveTouchPad.position.y ) );

var jump = false;

// We only want horizontal movement movement.y = 0;

movement.Normalize();

// Apply movement from move joystick

var absJoyPos = Vector2( Mathf.Abs( moveTouchPad.position.x ), Mathf.Abs( moveTouchPad.position.y ) );

if ( absJoyPos.y > absJoyPos.x ) {

if ( moveTouchPad.position.y > 0 ){ movement *= forwardSpeed;

//anda quando está em terra para afrente e para trás if(character.isGrounded){ if(!isRuning){ animation.Play("walk"); } else if(isRuning){ animation.Play("run"); movement *= runningMultiplier; } } } else{ animation.Play("idle"); movement *= 0; }

(10)

9 }

else if( absJoyPos.x > absJoyPos.y ){ if ( moveTouchPad.position.x > 0 ){ this.transform.Rotate(Vector3.up,90*Time.deltaTime); } else{ this.transform.Rotate(Vector3.down,90*Time.deltaTime); }

//quando se vira para animation.Play("idle"); canJump = false; }

else{

//movement *= sidestepSpeed; //quando esta parado, para

if(character.isGrounded) animation.Play("idle"); }

// Check for jump

if ( character.isGrounded ) {

var touchPad : Joystick; if ( rotateTouchPad ) touchPad = rotateTouchPad; else touchPad = moveTouchPad; if ( !touchPad.IsFingerDown() ) canJump = true;

//para cima para saltar

if ( canJump && touchPad.position.y > 0) {

(11)

10 jump = true; canJump = false; } if ( jump ) {

// Apply the current movement to launch velocity velocity = character.velocity;

velocity.y = jumpSpeed; //quando salta

animation.Play("jump_pose"); }

//duplo clique e pressionar ao segundo clique para correr if (touchPad.tapCount == 2 && touchPad.IsFingerDown()) { isRuning = true; } else { isRuning = false; } } else {

// Apply gravity to our velocity to diminish it over time velocity.y += Physics.gravity.y * Time.deltaTime;

// Adjust additional movement while in-air movement.x *= inAirMultiplier;

movement.z *= inAirMultiplier; }

movement += velocity; movement += Physics.gravity;

(12)

11 movement *= Time.deltaTime;

// Actually move the character character.Move( movement ); if ( character.isGrounded )

// Remove any persistent velocity after landing velocity = Vector3.zero;

}

2.8- Tendo alterado o código do script “First Person Controller

(script)” voltamos ao Unity e verificamos que os parâmetros foram alterados.

Desta forma arrastamos o game object “LeftTouchPad” para o parâmetro “Move Touch Pad” e o game object “RightTouchPad” para o parâmetro “Rotate Touch Pad”. Alteramos também os valores dos restantes parâmetros:

“Foward Speed” = 6; “Backward Speed” = 6; “Running Multiplier” = 3; “Jump Speed” = 14;

“In Air Multiplier” mantém o valor de 0.25

(13)

12

E com estas alterações todas ao nosso mini jogo podemos agora experimentar o jogo num dispositivo android.

Podemos testar o jogo da seguinte maneira:

 No dispositivo android, ir á Play Store e fazer o download da aplicação “Unity Remote 4”.

 No Unity ir a: Edit (Barra de Menus) -> Project Settings -> Editor e na vista Inspector alterar o campo “Device” por baixo de “Unity Remote” para “Any Android Device”.

 Ligar o dispositivo android ao computador com um cabo USB e iniciar a aplicação “Unity Remote 4”.

 Ir ao Unity clicar no botão “Play” para testar o jogo.

Aparecerá o jogo a correr em simultâneo na vista Game do Unity e no dispositivo android onde podemos testar o jogo pelo touch do dispositivo.

Caso o jogo não apareça no dispositivo android quando tentar fazer o teste simplesmente guarde tudo no Unity e

(14)

13

feche o mesmo voltando a abrir em seguida e experimente testar o jogo novamente.

Etapa 3 – Exportar o jogo para o dispositivo Android

Para instalar o mini jogo no dispositivo android e jogar sempre que quiser basta seguir os passos abaixo:

3.1- Em primeiro lugar temos de ter no computador instalado o SDK

do android para poder exportar. Caso não tenha ir ao site:

https://developer.android.com/sdk/index.html

Tendo feito o download abra o SDK Manager e garanta que faz o download da versão da API do seu dispositivo android para que possa exportar o mini jogo para o seu dispositivo.

3.2- Voltar ao Unity e na barra de menus clicar no menu “File” -> “Build Settings”.

Aparecerá uma janela de nome “Build Settings” onde escolhemos qual a plataforma onde o nosso jogo irá executar. Por pré definição a opção é “PC, Mac & Linux Standalone” e como queremos executar o nosso jogo no nosso dispositivo android alteramos esta opção para “Android”, selecionando esta opção e clicando no botão abaixo “Switch Platform” para trocar a plataforma para onde iremos exportar o nosso mini jogo. Para exportarmos o nosso jogo vamos ter de escolher o cenário que criamos do nosso jogo e que guardamos. Para tal:

3.3- Caso a janela “Scenes In Build” não tiver nada clicamos no botão “Add Current” e o cenário que temos estado a desenvolver será adicionado, caso este cenário já lá esteja adicionado então passamos este passo sem fazer nada;

(15)

14 De seguida vamos acertar as definições do jogo de acordo com o nosso

dispositivo.

3.4- Clicamos no botão “Player Settings…” e aparecerá na vista Inspector as definições do nosso mini jogo:

 No campo “Company Name” colocamos o nome da nossa companhia caso tenhamos uma.

 No campo “Product Name” colocamos o nome do nosso jogo, neste caso podemos colocar aqui “Mini_Jogo”.

 No campo “Default Icon” selecionamos um Icon para importar e adicionar sendo este a imagem do nosso mini jogo.

 Mais abaixo se clicarmos em “Resolution and Presentation” podemos alterar valores como “Default Orientation” para “Landscape Left” para garantir que o jogo é jogado sempre na mesma posição do dispositivo. Caso pretenda uma rotação automática mantenha a opção por pré definição.

Figura 5: "Build Settings" onde selecionamos a plataforma onde vamos executar o jogo, adicionamos o cenário e exportamos o jogo.

(16)

15  Finalmente clicamos em “Other Settings” e aqui fazemos as

seguintes alterações:

o No parâmetro “Bundle Identifier” temos de garantir que colocamos os mesmos nomes que colocamos em “Company Name” e em “Product Name”. Por exemplo se a “Company Name” é DefaultCompany e o “Product Name” é Mini_Jogo, o “Bundle Identifier” terá de ser com.DefaultCompany.Mini_Jogo

o No parâmetro “Minimum API Level” selecionamos a versão da API correspondente á versão do nosso dispositivo (Garantindo que no SDK Manager fizemos o download da mesma versão da API).

o No parâmetro “Graphics Level” selecionamos “Automatic”

E as configurações necessárias estão finalizadas. 3.5- Clicar no botão “Build”.

Por último aparecerá uma janela onde escolhemos onde queremos guardar o nosso jogo exportado.

3.6- Navegar até onde queremos exportar o jogo, criar uma nova pasta (de nome “Build_Android” por exemplo) e selecioná-la para o jogo ser exportado para essa pasta.

3.7- Dar um nome ao jogo (Por exemplo “Mini_Jogo”); 3.8- Clicar em “Guardar”.

(17)

16 Depois de ter finalizado a exportação acedemos à pasta onde

guardamos o nosso jogo e encontramos o ficheiro de extensão APK que foi gerado e que corresponde ao ficheiro de instalação do nosso jogo no dispositivo android. Copiamos este ficheiro para o dispositivo e abrimo-lo aqui para proceder á instalação do jogo. Terminada a instalação podemos jogar o nosso mini jogo no nosso dispositivo android.

Esperamos que com este tutorial tenhamos deixado claro como proceder para adaptar o mini jogo para um dispositivo Android e como configurar qualquer jogo na altura de exportar o jogo para que não haja problemas.

Referências

Documentos relacionados

Você reconhece quando chega a felicidade? Ana Paula Padrão Tenho uma forte antipatia pela obrigação de ser feliz que acompanha o Carnaval. Quem foge da folia ganha o

Como mediador, a postura dos professores/educadores merece destaque, pois eles precisam ter sua autoridade (na função que ocupam – educadores) sem serem

Historicamente esta surge quando a ação do homem não representa mais uma res­ posta exclusiva às necessidades e pressões da natureza, mas circunstancia-se “num

Pinto de Carvalho, op.. Os homens que visitavam habitualmente estes redutos de licenciosidade, como já referimos, provinham muitas vezes de altos níveis da

Ora, se a retórica contemporânea recupera «o estudo dos meios de prova uti- lizados para obter a adesão de um auditório» e se, em certa medida, é isso que encontramos na

UTFPR, Câmpus Pato Branco, 2014...55 Figura 26 – Plotagem dos escores da análise AMMI 1 para interação entre dois cultivares de trigo e doze formas de parcelamento da

Os scaffolds são biomateriais que são preparados para atuar como suportes para liberação de substâncias ativas responsáveis, pela reparação do osso, a fim de se ter

Nas temperaturas de cozimento mais baixas utilizadas durante a etapa de cocção para a produção de arroz integral de cozimento rápido houve uma diminuição no teor