pesquisar neste blog
posts recentes

O motor da aplicação

Mód. TP6 – Testes

Mód. TP6 – Versão Beta

"Não descansaremos enquanto não pusermos o virtUA a crescer"

#1 BASTIDORES: Criação do Pavilhão I

Testes ao projecto Virtua

Jardinagem virtual: Luta contra os bugs!

Informações sobre versão Beta de Virtua

Mód. TP5 – Prototipagem de alta fidelidade (2/2)

Mód. TP5 – Prototipagem de alta fidelidade (1/2)

arquivos

Junho 2011

Maio 2011

Abril 2011

Março 2011

Fevereiro 2011

Quarta-feira, 15 de Junho de 2011
O motor da aplicação

 

A Linguagem de programação que serve como suporte e cria a estrutura lógica de navegação e interação na aplicação e que está a ser desenvolvida é o Javascript. É uma das três linguagens usadas pela ferramenta UNITY3D - já amplamente discutida neste blog -, a par do C# e  BOO.

Na realidade, apesar do Javascript do Unity ser bastante parecido com o standard ECMAScript, utilizado nas páginas web, tem algumas diferenças substanciais. Devido a essas diferenças, há quem nomeie de outra forma esta linguagem: UnityScript. De facto, ela é bastante parecida com o JScript da Microsoft, especialmente porque são ambas linguagens .NET.

 

Ao invés do irmão mais velho e mais conhecido (JS), o UnityScript é compilado e não interpretado. Além disso não tem a trabalhar consigo o DOM (ufa!). Contudo, perde um pouco no dinamismo que a versão para browser tem.

 

Os objetos existentes na scene de uma aplicação criada nesta ferramenta, podem ser muito diversos, desde câmaras, luzes, objetos modelados em 3D, entre outros - denominados GameObjects. A esses GameObjects podem ser acrescentados Components que podem introduzir imensas possibilidades de comportamento aos mesmos. Um Component pode ser um detetor de colisões, uma textura, e, entre outros, pode ser um script.

 

 

Fig.1 e 2 - Acesso ao GameObject e às componentes no Unity

Desta forma, cada GameObject pode ter vários scripts (ficheiros JS), pelo que é importante implementar os scripts de forma modular, tendo a ganhar com isso a flexibilidade de uso.

No caso da aplicação virtUA, damos o exemplo do script criado chamado Raycast_Collider, que trata, entre muitas coisas, da alteração do estado da mira que aparece no centro da interface.

 
 
 
-
 
 Fig. 3, 4 e 5 - Script e Propriedades do RayCast Collider
 

Na imagem que se segue, consegue-se ter uma ideia da quantidade de ficheiros JS que se criaram para se obter os resultados da conseguidos na implementação. Nem todos estes ficheiros foram criados na integra pelo grupo, dado que algumas das interações base já vem criadas de raiz em ficheiros JS disponibilizados (como o caso da ligação dos movimentos do rato e teclado ao GameObject que serve como câmara) mas mesmo esses precisam de ajustamentos, conforme o tipo de aplicação criada. Neste tópico é também necessário dar um realce à imensa comunidade de utilizadores desta plataforma, que é extremamente colaborativa, apresentando respostas a quase todo o tipo de problemas que se apresentaram ao grupo.

 
  Fig. 6 - Área do Projecto
 

Uma das últimas implementações no projeto foi a criação de uma galeria de fotos no próprio Campus. Esta galeria de fotos encontra-se "invisível", ou não renderizada, por defeito. Para fazer aparecer a galeria faz-se uso de outro objeto escondido (que é uma simples caixa), presente ao redor do "i" gigante que se vê a rodar (rotação constante originada por programação) no campus. Podemos verificar que essa caixa (GameObject) tem o "is_trigger" ativo, tem acoplada um script "i_abre_galerias (script)", e tem o "Mesh_renderer" desativo.

O "is_trigger" vai despoletar um efeito (neste caso passa uma variável boleana de falso para verdadeiro) em caso de colisão. O script apresentado é o que vai conter essa variável e todo o código para fazer aparecer (render) o outro objeto (as imagens em si) representado na variável "Obj_galerias".

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

  Fig. 7 - Script e activação da opção isTigger

Esta linguagem de programação conta já com uma função para ajudar nestes casos de colisão. OnTriggerEnter é usado para quando se dá a colisão em si, e OnTriggerExit quando a mesma colisão deixou de acontecer. Neste caso concreto, quando o player entra em colisão com o objeto que tem anexado este script, faz aparecer o objeto que está ligado à variável "Obj_galerias": "i_placard_galerias_pav1". Este último contém as fotos do respectivo edifício. Para já as fotos estão integradas diretamente na aplicaçao (fazem parte da compilação). Para a implementação final vai-se proceder ao uso de scripts que permitam obter as fotos diretamente do website. Fotos essas que serão colocadas pelos administradores assim como por qualquer utilizador registado e que queira partilhar com a comunidade.

  Fig. 8 - Objectos da cena
 

Para se poder navegar por entre as diversas fotos de cada edifício, faz-se novamente uso do script "raycast_collider". Está criada uma função própria para alterar a mira da interface e responder aos inputs do teclado (teclas Q e E), alterando a posição do Array criado para a listagem das fotografias.

 

  Fig. 9 - Script relativo à activação das teclas para mudar de fotografias

Bibliografia:

http://www.unifycommunity.com/wiki/index.php?title=Head_First_into_Unity_with_JavaScript 

http://forum.unity3d.com/threads/34015-Newbie-guide-to-Unity-Javascript-(long) 

http://answers.unity3d.com/questions/8329/how-to-get-started-learning-javascript-or-unityscr.html



tags: , ,

publicado por palexandre às 12:49

editado por lilianavale às 12:57

pesquisar neste blog
mais sobre mim

goncalvessilva

lilianavale

palexandre

pedro-charneca

Junho 2011
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4

5
6
7
8
9
10
11

12
13
14
16
17
18

19
20
21
22
23
24
25

26
27
28
29
30


arquivos

Junho 2011

Maio 2011

Abril 2011

Março 2011

Fevereiro 2011

tags

todas as tags

subscrever feeds

RSSPosts

RSSComentários

RSSComentários do post

posts recentes

O motor da aplicação

Mód. TP6 – Testes

Mód. TP6 – Versão Beta

"Não descansaremos enquanto não pusermos o virtUA a crescer"

#1 BASTIDORES: Criação do Pavilhão I

Testes ao projecto Virtua

Jardinagem virtual: Luta contra os bugs!

Informações sobre versão Beta de Virtua

Mód. TP5 – Prototipagem de alta fidelidade (2/2)

Mód. TP5 – Prototipagem de alta fidelidade (1/2)