Professional Documents
Culture Documents
retw eet
Curtir
Com a adeso crescente de novos usurios Unity, tanto aqui na comunidade quanto mundo fora, busco atravs deste tutorial expressar uma viso geral sobre a engine, suas ferramentas e ajudar os aventureiros e curiosos a terem uma experincia prvia de uma rotina de trabalho no ambiente da ferramenta. Este tutorial uma compilao de conceitos e conhecimentos bsicos que todo desenvolvedor em Unity precisa ter antes de partir para qualquer tipo de projeto e graas esplndida estrutura em que a Unity desenhada voc pode facilmente produzir enquanto aprende. Pensando nisso, vejamos o que ser explorado neste pequeno tutorial: Entendo Assets, GameObjects e Components. Importando Skinned Meshes e trabalhando com animaes. Conhecendo melhor o Builtin Controller Component. Entendendo Unity's JavaScript, suas funes e co-rotinas. Trabalhando com Classes, Helper Functions e cdigo Frame-Dependente. Colocando tudo em prtica. O que voc j precisa dominar para melhor aproveitamento e entendimento deste tutorial: Ser familiarizado com a interface do Unity Editor. Possuir algum personagem 3D animado ou saber como produzir um em seu software de preferncia. Ter acesso aos guias e manuais oficiais da Unity para referncia. Ter um conhecimento mnimo da estrutura e programao em JavaScript.
14/09/13
1.1 Assets:
Assets, se voc j andou explorando as funcionalidades e documentao, j deve ter em mente que os Assets so os arquivos fsicos de seu projeto. No h nenhum segredo aqui, todos os seus modelos 3D, arquivos de udio, scripts, etc e etc que precisam ser estocados em disco so parte desta classe de seu projeto, os recursos com o qual voc ir trabalhar encima de seu projeto.
Antes que um Asset possa ser utilizado necessrio que voc tenha um projeto criado e adicione o arquivo desejado dentro da pasta Asset na pasta raiz do projeto. Uma funcionalidade incrvel da Unity que voc pode trabalhar, por exemplo, em suas cenas 3D e apenas clicando save no modelador o resultado automaticamente atualizado na Unity, voc apenas assiste a engine re-compilando a cena e logo em seguida o resultado pode ser facilmente visualizado no Scene View. D uma olhada no guia bsico da Unity para um melhor entendimento.
1.2 GameObjects:
Todo objeto que faz parte do mundo 3D de sua cena e possui um Component Transform um GameObject. Um Transform apenas um componente ligado ao objeto que indica que o mesmo tem volume, escala ou apenas se localiza em algum ponto no mundo 3D de sua cena, so as bsicas informaes XYZ. Ao trabalhar na Unity, voc geralmente usa um Asset como base para criar seu GameObject e com o auxilio de Components vai adicionando funcionalidades, com o GameObject implementado da maneira que voc deseja, sempre boa prtica converter o GameObject em um Prefab para melhor organizao, melhor performance e facilidade de re-uso de seus objetos entre os vrios leveis que pode ter o seu game. Prefabs so outra ferramenta de destaque extremamente teis e poderosas na Unity. Consulte a documentao para melhor informao.
1.3 Componentes
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
2/23
14/09/13
Sem eles impossvel dar vida qualquer objeto que faa parte de seu cenrio. Os Components so a essncia de como as coisas na Unity funcionam, so a maior expresso das facilidades de trabalho que a engine oferece. Scripts so Components, objetos e efeitos de fsica, partculas, udio e etc so todos Components que podem ser adicionados ao seu GameObject para fazelo se comportar dar maneira que voc deseja no game. importantssimo ter uma viso clara de como os Components funcionam e como se relacionam entre si. Mais sobre isso ser falado durante a seo de programao, mas se voc sente que no entende realmente o que exatamente so essas coisas, procure pensar que Components so Itens que formam um item ainda maior, seu objeto na cena, e que eles controlam todas as caractersticas do objeto no game. Um GameObject sem Components um objeto sem caracterstica alguma, por isso no pode ser manipulado de forma alguma e provavelmente um objeto intil para o seu projeto neste ponto. Simplificando, Components so propriedades que tornam seus GameObjects nicos atravs da combinao entre as ferramentas providas pela Unity e os Assets que voc produz. assim justo dizer que quanto melhor forem os Assets que voc produz, melhores sero seus GameObjects e maiores as capacidades de seus Components de realizar exatamente tudo que voc deseja extrair deles.
2.1 O Personagem
Se voc no possui um personagem animado, divirta-se, crie um! :) Para este personagem em questo que eu usarei, existem algumas notas que devem estar em mente. Eu tenho a inteno de utilizar efeitos de fsica real no personagem, por isso neste caso h duas verses dele, uma sem Skin com todas as partes do corpo separadas em pedaos para serem adicionadas componentes fsicos e gerar um efeito rpido e fcil diferenciado de ragdoll onde o personagem explode ao morrer. E a verso convencional com a Skin e animaes como de costume. Este um caso especfico do meu trabalho em questo, voc no obrigado a fazer um personagem da mesma maneira, use sua liberdade e imaginao.
14/09/13
Por motivos de Pipeline, j utilizo o formato FBX um bom tempo, eu continuo usando FBX mesmo na Unity, por convenincia. Voc pode utilizar o formato que preferir e se adaptar melhor. Bom, aps um tempo relativamente grande, voc modelou, texturizou, animou seu querido personagem e est pronto pra faze-lo mandar ver na Unity. Apesar das facilidades que a Unity oferece, voc precisa ter em mente que certas convenes devem ser seguidas. Antes de qualquer coisa, adicione seu modelo em qualquer diretrio dentro da pasta Assets do seu projeto, a Unity ir detectar o arquivo e ele aparecer na lista do Inspector com todas suas opes de importao. No mecha em absolutamente nada, click e arraste o modelo da lista do Project View para a Scene View e veja o que acontece. Seu personagem aparece na cena sem problemas? timo, voc um cara de sorte! Click Play e rode o game, veja se as animaes rodam normalmente como esperado. As animaes esto ok? timo, voc mesmo um cara de sorte! :) Ao arrastar o personagem para a cena, ele est distorcido, como se os bones no estivessem nas posies corretas ou coisa semelhante? Opa, volte ao seu modelador 3D e reveja seus conceitos, evite criar uma hierarquia muito complexa de parents e childs, grupos e sub grupos quando se trata de um personagem animado. Ao arrastar o personagem para a cena, o modelo parece estar ok, mas as animaes simplesmente no tocam ou existe algo de errado com elas, como se suas animaes no estivessem ali? Opa, volte ao seu modelador 3D e reveja novamente seus conceitos, se voc tem conhecimento bsico sobre animao deve saber que as animaes de controladores e parentes dos bones, efeitos fsicos, driven keys e etc, no so automaticamente adicionados aos bones do seu modelo no momento da exportao, por isso, se for o caso de haver animaes faltando ou animaes faltando pedaos, voc precisa ter certeza de que todos os movimentos que faz est gerando animation keys nos bones do personagem ou seja, voc precisa usar a soluo Bake Animations. Voc pode fazer isso diretamente na Unity simplesmente acionando a checkbox de mesmo nome no Importer do seu modelo ou se quiser mais controle sobre os resultados, faa isso voc mesmo no modelador, os resultados so mais fceis de serem mantidos da maneira que voc exatamente quer. Se voc no sabe como fazer um bake em suas animaes, consulte a documentao do seu programa ou pea socorro comunidade l no frum da Unity, sempre tem algum perguntando sobre este tipo de problema. No geral, clicando em Bake Animations na Unity vai resolver seus problemas e muita dor de cabea se voc no gosta de ficar horas otimizando keys no seu modelador 3D. Aps ajustadas as configuraes de importao, seu personagem animado da maneira que voc espera? timo, hora de prepara-lo para o futuro que o reserva, no Importer do seu modelo, clicando no arquivo importado no Project View ficar visvel no Inspector, voc ver que existe uma variedade grande de opes e propriedades. Seja um bom amigo com voc mesmo e pesquise na documentao cada uma dessas caractersticas e opes para ter uma viso mais intuitiva e verdadeira do que cada uma delas possa vir a ser. Mais abaixo no Inspector, existe um pequeno grupo que acionado quando voc seleciona a opo Split Animations. Click nessa opo e voc ter acesso a ferramenta mais simples da terra para criar clips de animaes. Voc pode dar um nome aos clips e definir o incio e fim da animao, seu WrapMode e etc de maneira rpida, fcil e visual. Neste ponto, extremamente recomendvel criar um Prefab para seguir seu trabalho, voc no pode trabalhar diretamente encima do Asset do seu personagem por isso boa prtica criar um GameObject com seu personagem, apenas arraste ele do Project View para a Scene View, no menu Assets click em Create New > Prefab, renomeie o Prefab com o nome que quiser e arraste seu personagem da Scene View para cima do Prefab. Pronto, voc tem uma instncia totalmente reutilizvel do seu personagem em que qualquer mudana no Inspector afetar todas as cpias do objeto em sua cena. Aps configurar seus clips, seu personagem est pronto para ser animado in-game... Mas hey, e agora? Como se anima o personagem, pergunta-se o afobado aprendiz...
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page= 4/23
14/09/13
A resposta para isso se resume uma palavra Scripts! Mas antes, precisamos ter uma ideia mais aprofundada do que exatamente vamos animar. uma boa hora para pesquisar sobre o Character Controller Component!
14/09/13
Quando criar uma funo, lembre-se de que o nome de cada funo deve comear com um caractere legal e sempre em letra maiscula. Sabendo disso e seguindo esta padronizao, lhe salvar uma vida de problemas e bugs que voc mesmo escreveu e no consegue resolver pelo simples fato de no ter seguido uma conveno to simples. Se a funo um conjunto de vrias palavras, voc pode optar por usar underlines se quiser, mas aconselhvel apenas seguir o padro, como por exemplo, MyFunctionName(). Assim quando um problema surgir no debug e apontar para um identificador, voc tem certeza absoluta de que o caso se trata de uma funo e no qualquer outro tipo de dados.
4.3 Funes
Este ponto onde a coisa pode complicar de incio para programadores que no esto acostumados a seguir o tipo de lgica adotado na Unity. A engine, por padro, faz todo o trabalho sujo de controle do software, execuo, loops, carregos e despejos, etc e etc. Sendo assim, ela trabalha com funes padronizadas que todos os scripts que voc escreva iro utilizar uma ou outra de alguma forma. Por exemplo, na Unity voc no cria um loop principal para a execuo do seu game, pois ele j est l antes mesmo de voc comear a programar. Voc apenas precisa chamar uma instncia da funo responsvel pelo loop, no caso Update(). Isso vai parecer muito confuso no incio, voc comea a se perguntar, ao criar vrios scripts com a mesma funo, qual desses updates o principal?... O caso que toda funo que voc criar com o nome de Update(), sero todas ao mesmo tempo o seu loop principal. No me pergunte como a engine faz isso, mas ao compilar seus scripts a Unity detecta todas as instncias das funes com nome que ela j conhece, transforma todas as funes em uma nica funo e seu cdigo est pronto para rodar. O que ainda mais incrvel que ela faz isso mesmo com seu projeto aberto no editor, no necessrio compilar nada, a engine faz tudo sozinha, voc apenas clica Play! Vejamos uma relao das funes e mtodos padronizados mais importantes que voc usar com frequncia:
14/09/13
Consulte a documentao e pesquise sobre loops distintos existentes em vrias classes da engine. Procure se familiarizar com a relao geral desses loops entre si, mas concentre-se apenas em dominar as funes descritas acima, sem um domnio claro do uso dessas funes e de como elas podem ser utilizadas em seu projeto, todo o resto se torna uma pilha de informaes sem sentido no momento em que voc for programar qualquer coisa com a Unity.
5.1 Classes
A Unity j disponibiliza uma lista robusta de classes que voc usa e abusa, mas interessante ter a possibilidade de criar classes customizadas inteiramente dedicadas um tipo especfico de objeto em seu game, por exemplo, uma classe dedicada somente ao controle do seu personagem, outra classe dedicada somente execuo de animaes do personagem, outra classe que ativa triggers que otimizam a interatividade de seu personagem com o ambiente, etc.
14/09/13
Cada varivel tem um propsito, conforme descrito a seguir: sneakAnimationSpeedModifier: Usaremos esta varivel para um controle mais gil da velocidade em que a animao Sneak ser executada. walkAnimationSpeedModifier: Usaremos esta varivel para controlar a velocidade em que a animao Walk ser executada. runAnimationSpeedModifier: Usaremos esta varivel para controlar a velocidade em que a animao Run ser executada. jumpAnimationSpeedModifier: Usaremos esta varivel para controlar a velocidade em que a animao Jump ser executada. jumpLandAnimationSpeedModifier: Usaremos esta varivel para controlar a velocidade em que as animaes Landing e Landed sero executadas. getDownAnimationSpeedModifier: Usaremos esta varivel para controlar a velocidade em que a animao Get Down ser executada.
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page= 8/23
14/09/13
hangTimeUntilFallingAnimation: Usaremos esta varivel para identificar quanto tempo faz que o personagem est em queda livre. floorHitFX: Usaremos esta varivel do tipo AudioClip para guardar um pointer para o som que queremos tocar quando o personagem atinge o cho de maneira descontrolada. Se isso parecer confuso, consulte a classe AudioClip na documentao. A regra private, ao contrrio do que parece, no isola sua varivel contra acesso de outros scripts. Na verdade deveria, mas sempre existe alguma maneira de acessar uma varivel privada se preciso, ento apenas uma questo de isolar a varivel para que ela no esteja amostra no Inspector. Aps definir suas variveis, selecione seu personagem ou Prefab, observe no Inspector como elas se tornaram parte das propriedades do seu script. Essa funcionalidade do Inspector sem palavras, torna seu trabalho to dinmico.
Note que este bloco de cdigo apenas inicializa as variveis com os valores desejados. Isso poderia ser feito em qualquer ponto fora da funo Start(), mas como queremos ter certeza de que as variveis sero inicializadas antes que qualquer loop comece a rodar, inicializamos as variveis desta forma.
14/09/13
reaes controlados por mais um punhado de estruturas baseadas em Cases ou Ifs. Com nossas variveis inicializadas, s nos resta implementar os resultados no personagem durante a execuo do game, ento devemos trabalhar na funo Update(). Antes disso, criaremos algumas co-rotinas que podem auxiliar algumas tarefas durante a execuo das animaes: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 f u n c t i o nD i d J u m p ( ){ a n i m a t i o n . P l a y ( " J u m p " ) ; a n i m a t i o n . P l a y Q u e u e d ( " S m a l lF a l l " ) ; y i e l dW a i t F o r S e c o n d s ( 0 . 2 2 5 ) ; i f( I n p u t . G e t B u t t o n ( " J u m p " ) ) { a n i m a t i o n . C r o s s F a d e ( " S t a yJ u m p i n g " ) ; }e l s e{ i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s F a l l i n g= =f a l s e ) { a n i m a t i o n . C r o s s F a d e ( " S m a l lF a l l " ) ; }e l s e{ a n i m a t i o n . P l a y ( " F a l l " ) ; } } y i e l dW a i t F o r S e c o n d s ( 0 . 0 1 5 ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . c a n C o n t r o l=f a l s e ; } f u n c t i o nD i d L a n d ( ){ i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s F a l l i n g= =f a l s e ) { i f( a n i m a t i o n . I s P l a y i n g ( " S t a yJ u m p i n g " ) ) { a n i m a t i o n . P l a y ( " L a n d i n g " ) ; }e l s e{ a n i m a t i o n . C r o s s F a d e ( " L a n d e d " ) ; } y i e l dW a i t F o r S e c o n d s ( 0 . 1 5 ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . c a n C o n t r o l=t r u e ; }e l s e{ a n i m a t i o n . C r o s s F a d e ( " F l o o rI m p a c t " ) ; a n i m a t i o n . C r o s s F a d e ( " G e tU p " ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s F a l l i n g=f a l s e ; y i e l dW a i t F o r S e c o n d s ( 0 . 1 5 ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . c a n C o n t r o l=t r u e ; } }
?
Sobre a funo DidJump(): Esta funo ser utilizada pelo script PlayerController que criaremos logo depois. Basicamente, essa funo checa o estado da animao atual e executa a animao desejada assim que o script PlayerController decidir que o momento certo para estas animaes serem executadas. Sobre a funo DidLand(): Sempre que o script PlayerController detectar que o personagem pousou de um salto ou caiu em algum lugar, ele ir enviar uma mensagem para este script dizendo que o personagem acabou de atingir o solo e a animao de pouso deve ser tocada. Ao salvar seu script, neste ponto a Unity vai estar se indagando o que viria a ser o componente PlayerController. Este um script que ainda no criamos, por isso seu cdigo ainda no funciona, mas agora precisamos definir a funo Update() e ento podemos partir para o script que a Unity acusa estar faltando. 6.7 Editando a funo Update Na funo Update() ns continuamos o trabalho com as animaes, mas com a diferena de que no poder ser usada nenhuma funo Yield aqui: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 f u n c t i o nU p d a t e ( ){ i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . G e t H a n g T i m e ( )<h a n g T i m e U n t i l F a l l i n g A n i m a t i o n ) { i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . h e a d s U p= =f a l s e ) { i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . I s M o v i n g ( ) ) { i f( I n p u t . G e t B u t t o n ( " A c t i o nA " ) ) { i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g! =t r u e ) { a n i m a t i o n . C r o s s F a d e( " R u n " ) ; } e l s e { a n i m a t i o n . C r o s s F a d e ( " S n e a k " ) ; } } e l s e
?
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
10/23
14/09/13
2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7
} e l s e { i f( ! G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g= =t r u e ) a n i m a t i o n . C r o s s F a d e ( " L a n d e d " ) ; }
} } e l s e { i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . h e a d s U p= =t r u e ) { a n i m a t i o n . C r o s s F a d e ( " G e tD o w n " ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g=t r u e ; } e l s e { i f( G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g= =f a l s e ) a n i m a t i o n . C r o s s F a d e ( " I d l e " ) ; } } i f( ! G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . I s M o v i n g ( ) ) { i f( I n p u t . G e t A x i s ( " V e r t i c a l " )< =0 . 2 5 ) { a n i m a t i o n . C r o s s F a d e ( " G e tD o w n " ) ; G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g=t r u e ; } e l s e { G e t C o m p o n e n t ( P l a y e r C o n t r o l l e r ) . i s S n e a k i n g=f a l s e ; } }
E assim nossas animaes esto prontas para desempenhar seu papel no game. Nessa funo existe contedo suficiente para um bom tempo de estudo. Deixando um pouco de lado a mecnica de nossas animaes, vamos dar uma olhada mais de perto em o que exatamente estas linhas esto fazendo: Antes de tudo, ns verificamos se o personagem no est caindo tempo suficiente para impedir sua movimentao terrena, e se caso no o estiver, seguimos em frente com as animaes, caso contrrio significa que precisamos tocar a animao de pouso pois muito em breve ele ir tocar o solo. Verificamos isso atravs da funo GetHangTime() que escreveremos no futuro. Em seguida, verificamos se o personagem no colidiu com algum obstculo que o force se manter agachado atravs da varivel headsUp. A implementao desta funcionalidade pode se tornar complexa pois envolve alguns conceitos que talvez no sejam cobertos aqui, por isso talvez seja matria de um outro tutorial no futuro, quem sabe. Se o personagem estiver ciente de que h algo sobre sua cabea que o impede de levantar, ele ser obrigado se mover agachado, caso contrrio se o boto de corrida estiver pressionado ele poder correr, caso contrrio eles apenas ir andar normalmente. Assim ns tocamos a animao de correr ou andar ou engatinhar somente se o personagem est mesmo se movendo, julgando isso atravs da funo IsMoving() que ainda no foi escrita. Note que as teclas virtuais do meu projeto tem nomes prprios ao invs do padro criado pela Unity.
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
11/23
14/09/13
Se voc precisar editar suas teclas virtuais, v at Edit > Project Settings > Input.
6.8 PlayerController
Partiremos agora para o lado interativo que controla nossas animaes com o script PlayerController. V at o menu Assets e crie mais um JavaScript, renomeio para PlayerController, adicione-o como componente do seu personagem, aplique as mudanas ao Prefab e estamos prontos para programar. Novamente, comeamos com a declarao de variveis: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 v a rm o v e m e n t:P l a t f o r m e r C o n t r o l l e r M o v e m e n t ; v a rj u m p:P l a t f o r m e r C o n t r o l l e r J u m p i n g ; p r i v a t ev a rc o n t r o l l e r:C h a r a c t e r C o n t r o l l e r ; v a rc a n C o n t r o l=t r u e ; v a rs p a w n P o i n t:T r a n s f o r m ; v a rf l o o r H i t F X:A u d i o C l i p ; @ S y s t e m . N o n S e r i a l i z e d v a ri s S n e a k i n g=f a l s e ; @ S y s t e m . N o n S e r i a l i z e d v a ri s F a l l i n g=f a l s e ; @ S y s t e m . N o n S e r i a l i z e d v a rh e a d s U p=f a l s e ;
?
As variveis so usadas para: movement: Usaremos esta varivel como identificador para a classe que determina os movimentos do personagem. jump: Usaremos esta varivel como identificador para a classe que controla toda mecnica do movimento de pulo do personagem. controller: criamos aqui uma instncia do Builtin Controller Component que deve ser adicionado ao personagem. Voc pode adicionar a linha @script RequireComponent(CharacterController) ao fim de seu script e assim que ele for adicionado um objeto, o componente requerido tambm ser adicionado. canControl: Usaremos esta varivel para permitir ou no que o personagem possa ser controlado pelo jogador. Isso muito til para evitar que o jogador consigo executar movimentos muito irreais como por exemplo, saltar para a esquerda e de repente ainda no ar virar e comear a cair para a direita. tambm muito til para a criao de cut-scenes. spawnPoint: O conceito de Spawn Point interessante. Quando seu personagem morrer, entrar em alguma passagem, tnel, portas, etc, esse conceito extremamente til para facilitar a sua vida na hora de tele-portar um personagem para o local de destino. Esta varivel nada mais do que uma coordenada qualquer em seu espao 3D para onde o personagem pode ser movido. floorHitFX: J criamos uma varivel de mesmo nome em nosso primeiro script. Ela faz referncia ao clipe de som que usaremos aqui para ser usado como efeito de quando o personagem atinge o cho de maneira brusca. No se pode esquecer de assinar um Audio Clip da sua lista de Assets. Se voc no tiver nenhum udio mo, pode baixar alguns de sites frees pela web ou pode apenas ignorar esta questo do tutorial. isSneaking: Esta varivel se torna verdadeira todas as vezes em que um objeto que faz parte da layer escolhida se sobrepem sobre a cabea do personagem em determinada altura que o impea de se manter de p. Infelizmente os clculos usados para fazer o personagem entender que precisa se manter agachado so um tanto fora do foco e fazem parte de outros scripts que detectam colises e raycasts, por isso pode complicar o entendimento e desviar a ateno, ento deixaremos este tpico para um outro tutorial. isFalling: Esta varivel deve se tornar verdadeira todas as vezes em que o personagem estiver caindo de uma altura exagerada ou saltar de forma descontrolada, indicando que ele sofrer uma queda dolorosa ao invs de um pouso comum. Esta funcionalidade utiliza os mesmos princpios bsicos que isSneaking, mas apenas uma regra simples dentro do prprio loop Update() que executa um raycast em direo ao solo e se a altura for muita, o personagem sofrer uma queda ao atingir o solo. headsUp: Esta varivel deve se tornar verdadeira todas as vezes que o raycast implementado por outro script na cabea do personagem indicar que existe um objeto muito prximo que o impede se manter de p. Faz parte do sistema que identifica se ele est agachado ou no. Esta varivel usada como um gatilho que fora o personagem a se abaixar mesmo contra a vontade do jogador enquanto ele no se afastar do obstculo que o impede de se manter de p.
14/09/13
Com nossas variveis bem definidas, podemos seguir em frente com a implementao de nossas classes que auxiliaro na programao de toda a movimentao de nosso personagem: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 c l a s sP l a t f o r m e r C o n t r o l l e r M o v e m e n t { v a rw a l k S p e e d=3 . 0 ; v a rr u n S p e e d=1 0 . 0 ; v a ri n A i r C o n t r o l A c c e l e r a t i o n=1 . 0 ; v a rg r a v i t y=6 0 . 0 ; v a rm a x F a l l S p e e d=2 0 . 0 ; v a rs p e e d S m o o t h i n g=5 . 0 ; v a rr o t a t i o n S m o o t h i n g=5 . 0 ; @ S y s t e m . N o n S e r i a l i z e d v a rd i r e c t i o n=V e c t o r 3 . z e r o ; @ S y s t e m . N o n S e r i a l i z e d v a rv e r t i c a l S p e e d=0 . 0 ; @ S y s t e m . N o n S e r i a l i z e d v a rs p e e d=0 . 0 ; @ S y s t e m . N o n S e r i a l i z e d v a ri s M o v i n g=f a l s e ; @ S y s t e m . N o n S e r i a l i z e d v a rc o l l i s i o n F l a g s:C o l l i s i o n F l a g s ; @ S y s t e m . N o n S e r i a l i z e d v a rv e l o c i t y:V e c t o r 3 ; @ S y s t e m . N o n S e r i a l i z e d v a ri n A i r V e l o c i t y=V e c t o r 3 . z e r o ; @ S y s t e m . N o n S e r i a l i z e d v a rh a n g T i m e=0 . 0 ; v a rs n e a k C o n t r o l l e r H e i g h t:f l o a t=0 . 9 5 ; v a rs n e a k C o n t r o l l e r C e n t e r:V e c t o r 3=V e c t o r 3 ( 0 , 0 . 5 , 0 ) ;
?
c l a s sP l a t f o r m e r C o n t r o l l e r J u m p i n g { v a re n a b l e d=t r u e ; v a rh e i g h t=1 . 0 ; v a re x t r a H e i g h t=4 . 1 ; @ S y s t e m . N o n S e r i a l i z e d v a rr e p e a t T i m e=0 . 0 5 ; @ S y s t e m . N o n S e r i a l i z e d v a rt i m e o u t=0 . 1 5 ; @ S y s t e m . N o n S e r i a l i z e d v a rj u m p i n g=f a l s e ; @ S y s t e m . N o n S e r i a l i z e d v a rr e a c h e d A p e x=f a l s e ; @ S y s t e m . N o n S e r i a l i z e d v a rl a s t B u t t o n T i m e=1 0 . 0 ; @ S y s t e m . N o n S e r i a l i z e d v a rl a s t T i m e=1 . 0 ; @ S y s t e m . N o n S e r i a l i z e d v a rl a s t S t a r t H e i g h t=0 . 0 ;
Sobre nossas classes: Ao salvar seu script, voc pode ver que todas as variveis expostas das classes aparecem de maneira elegante e organizada no Inspector. No existem mais tantas dvidas sobre a funcionalidade das animaes, ento no h necessidade de informao redundante. O que estas iro fazer simplesmente pegar as informaes que o player insere atravs de valores seja em um gamepad ou teclado e implementar a interatividade, mandando mensagens nos momentos certos para que as animaes sigam a lgica definida pela interatividade proposta. Neste momento em diante a questo de jogabilidade vai se tornando cada vez mais presente e voc se ver por horas e horas aprimorando a movimentao e Gameplay de seu personagem. Em uma situao assim com tantas variveis corelacionadas sempre bom utilizar uma classe para tornar o trabalho menos doloroso.
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page= 13/23
14/09/13
Com nossas classes definidas, vamos em frente em trabalhar com o contedo oferecido por elas: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 f u n c t i o nA w a k e ( ) { m o v e m e n t . d i r e c t i o n=t r a n s f o r m . T r a n s f o r m D i r e c t i o n ( V e c t o r 3 . f o r w a r d ) ; c o n t r o l l e r=G e t C o m p o n e n t ( C h a r a c t e r C o n t r o l l e r ) ; S p a w n ( ) ; } f u n c t i o nF i x e d U p d a t e ( ) { t r a n s f o r m . p o s i t i o n . z=0 ; } f u n c t i o nU p d a t e ( ) { i f( i s D y i n g! =t r u e ) { i f( I n p u t . G e t B u t t o n D o w n( " J u m p " )& &c a n C o n t r o l ) { j u m p . l a s t B u t t o n T i m e=T i m e . t i m e ; } U p d a t e S m o o t h e d M o v e m e n t D i r e c t i o n ( ) ; A p p l y G r a v i t y ( ) ; A p p l y J u m p i n g ( ) ;
?
i f( m o v e m e n t . d i r e c t i o n . s q r M a g n i t u d e>0 . 0 1 ) t r a n s f o r m . r o t a t i o n=Q u a t e r n i o n . S l e r p( t r a n s f o r m . r o t a t i o n ,Q u a t e r n i o n . L o o k R o t a t i o n( m o v e m e
U p d a t e E f f e c t s( ) ; i f( i s S n e a k i n g= =t r u e ) { i f( c o n t r o l l e r . h e i g h t! =m o v e m e n t . s n e a k C o n t r o l l e r H e i g h t ){ c o n t r o l l e r . h e i g h t=m o v e m e n t . s n e i f( c o n t r o l l e r . c e n t e r! =m o v e m e n t . s n e a k C o n t r o l l e r C e n t e r ){ c o n t r o l l e r . c e n t e r=m o v e m e n t . s n e } e l s e { i f( h e a d s U p= =f a l s e ) { i f( c o n t r o l l e r . h e i g h t! =1 . 8 5 ){ c o n t r o l l e r . h e i g h t=1 . 8 5 ; } i f( c o n t r o l l e r . c e n t e r! =V e c t o r 3 ( 0 , 0 . 9 8 , 0 ) ){ c o n t r o l l e r . c e n t e r=V e c t o r 3 ( 0 , 0 . 9 8 , 0 ) ; } } } v a rh i t:R a y c a s t H i t ; v a rf l o o r R e c t=t r a n s f o r m . T r a n s f o r m D i r e c t i o n ( V e c t o r 3 ( 0 , 1 , 0 ) ) ; i f( P h y s i c s . R a y c a s t ( t r a n s f o r m . p o s i t i o n , f l o o r R e c t , h i t ) ) { i f( h i t . d i s t a n c e> =6 . 5 ) { i s F a l l i n g=t r u e ; } } i f( i s F a l l i n g= =t r u e ) { i f( I n p u t . G e t B u t t o n ( " J u m p " ) ) { i f( j u m p . e n a b l e d= =t r u e )
14/23
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
14/09/13
8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 1 0 0 1 0 1 1 0 2 1 0 3 1 0 4 1 0 5 1 0 6 1 0 7 1 0 8 1 0 9 1 1 0 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 2 0 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 3 0 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 9 1 4 0 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 4 7 1 4 8 1 4 9 1 5 0 1 5 1 1 5 2 1 5 3 1 5 4 1 5 5 1 5 6 1 5 7 1 5 8 1 5 9 1 6 0
f u n c t i o nU p d a t e S m o o t h e d M o v e m e n t D i r e c t i o n ( ) { v a rh=I n p u t . G e t A x i s R a w( " H o r i z o n t a l " ) ; i f( ! c a n C o n t r o l ) h=0 . 0 ; m o v e m e n t . i s M o v i n g=M a t h f . A b s( h )>0 . 1 ; i f( m o v e m e n t . i s M o v i n g ) m o v e m e n t . d i r e c t i o n=V e c t o r 3( h ,0 ,0 ) ; i f( c o n t r o l l e r . i s G r o u n d e d ) { v a rc u r S m o o t h=m o v e m e n t . s p e e d S m o o t h i n g*T i m e . d e l t a T i m e ; v a rt a r g e t S p e e d=M a t h f . M i n( M a t h f . A b s ( h ) ,1 . 0 ) ; i f( i s S n e a k i n g= =f a l s e& &h e a d s U p= =f a l s e ) { i f( I n p u t . G e t B u t t o n( " A c t i o nA " )& &c a n C o n t r o l ) { t a r g e t S p e e d* =m o v e m e n t . r u n S p e e d ; } e l s e { t a r g e t S p e e d* =m o v e m e n t . w a l k S p e e d ; } } e l s e { t a r g e t S p e e d* =m o v e m e n t . w a l k S p e e d ; } m o v e m e n t . s p e e d=M a t h f . L e r p( m o v e m e n t . s p e e d ,t a r g e t S p e e d ,c u r S m o o t h ) ; m o v e m e n t . h a n g T i m e=0 . 0 ;
} e l s e { m o v e m e n t . h a n g T i m e+ =T i m e . d e l t a T i m e ; i f( m o v e m e n t . i s M o v i n g ) m o v e m e n t . i n A i r V e l o c i t y+ =V e c t o r 3( M a t h f . S i g n ( h ) ,0 ,0 )*T i m e . d e l t a T i m e*m o v e m e n t . i n A i r C }
f u n c t i o nS p a w n ( ) { m o v e m e n t . v e r t i c a l S p e e d=0 . 0 ; m o v e m e n t . s p e e d=0 . 0 ; i f( r e s p a w n P o i n t! =n u l l ) { t r a n s f o r m . p o s i t i o n=r e s p a w n P o i n t . p o s i t i o n ; } } f u n c t i o nA p p l y G r a v i t y ( ) { v a rj u m p B u t t o n=I n p u t . G e t B u t t o n( " J u m p " ) ; i f( ! c a n C o n t r o l ) j u m p B u t t o n=f a l s e ; i f( j u m p . j u m p i n g& &! j u m p . r e a c h e d A p e x& &m o v e m e n t . v e r t i c a l S p e e d< =0 . 0 ) { j u m p . r e a c h e d A p e x=t r u e ; } S e n d M e s s a g e( " D i d J u m p R e a c h A p e x " ,S e n d M e s s a g e O p t i o n s . D o n t R e q u i r e R e c e i v e r ) ;
v a re x t r a P o w e r J u m p=j u m p . j u m p i n g& &m o v e m e n t . v e r t i c a l S p e e d>0 . 0& &j u m p B u t t o n& &t r a n s f o r m . p o s i t i f( e x t r a P o w e r J u m p ) r e t u r n ; e l s ei f( c o n t r o l l e r . i s G r o u n d e d ) m o v e m e n t . v e r t i c a l S p e e d=m o v e m e n t . g r a v i t y*T i m e . d e l t a T i m e ; e l s e m o v e m e n t . v e r t i c a l S p e e d=m o v e m e n t . g r a v i t y*T i m e . d e l t a T i m e ;
15/23
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
14/09/13
1 6 1 1 6 2 1 6 3 1 6 4 1 6 5 1 6 6 1 6 7 1 6 8 1 6 9 1 7 0 1 7 1 1 7 2 1 7 3 1 7 4 1 7 5 1 7 6 1 7 7 1 7 8 1 7 9 1 8 0 1 8 1 1 8 2 1 8 3 1 8 4 1 8 5 1 8 6 1 8 7 1 8 8 1 8 9 1 9 0 1 9 1 1 9 2 1 9 3 1 9 4 1 9 5 1 9 6 1 9 7 1 9 8 1 9 9 2 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2 0 6 2 0 7 2 0 8 2 0 9 2 1 0 2 1 1 2 1 2 2 1 3 2 1 4 2 1 5 2 1 6 2 1 7 2 1 8 2 1 9 2 2 0 2 2 1 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 2 7 2 2 8 2 2 9 2 3 0 2 3 1 2 3 2 2 3 3 2 3 4 2 3 5 2 3 6 2 3 7 2 3 8 2 3 9 2 4 0 2 4 1
m o v e m e n t . v e r t i c a l S p e e d=M a t h f . M a x( m o v e m e n t . v e r t i c a l S p e e d ,m o v e m e n t . m a x F a l l S p e e d ) ;
f u n c t i o nA p p l y J u m p i n g ( ) { i f( i s S n e a k i n g! =t r u e& &h e a d s U p! =t r u e ) { i f( j u m p . l a s t T i m e+j u m p . r e p e a t T i m e*1 5>T i m e . t i m e ) r e t u r n ; i f( c o n t r o l l e r . i s G r o u n d e d ) { i f( j u m p . e n a b l e d& &T i m e . t i m e<j u m p . l a s t B u t t o n T i m e+j u m p . t i m e o u t ) { m o v e m e n t . v e r t i c a l S p e e d=C a l c u l a t e J u m p V e r t i c a l S p e e d( j u m p . h e i g h t ) ; S e n d M e s s a g e( " D i d J u m p " ,S e n d M e s s a g e O p t i o n s . D o n t R e q u i r e R e c e i v e r ) ; } }
f u n c t i o nC a l c u l a t e J u m p V e r t i c a l S p e e d ( t a r g e t J u m p H e i g h t:f l o a t ) { r e t u r nM a t h f . S q r t( 2*t a r g e t J u m p H e i g h t*m o v e m e n t . g r a v i t y ) ; } f u n c t i o nD i d J u m p ( ) { j u m p . j u m p i n g=t r u e ; j u m p . r e a c h e d A p e x=f a l s e ; j u m p . l a s t T i m e=T i m e . t i m e ; j u m p . l a s t S t a r t H e i g h t=t r a n s f o r m . p o s i t i o n . y ; j u m p . l a s t B u t t o n T i m e=1 0 ; c a n C o n t r o l=t r u e ; } f u n c t i o nG e t S p e e d ( ) { r e t u r nm o v e m e n t . s p e e d ; } f u n c t i o nG e t V e l o c i t y ( ) { r e t u r nm o v e m e n t . v e l o c i t y ; } f u n c t i o nI s M o v i n g ( ) { r e t u r nm o v e m e n t . i s M o v i n g ; } f u n c t i o nI s J u m p i n g ( ) { r e t u r nj u m p . j u m p i n g ; } f u n c t i o nI s T o u c h i n g C e i l i n g ( ) { r e t u r n( m o v e m e n t . c o l l i s i o n F l a g s&C o l l i s i o n F l a g s . C o l l i d e d A b o v e )! =0 ; } f u n c t i o nG e t D i r e c t i o n ( ) { r e t u r nm o v e m e n t . d i r e c t i o n ; } f u n c t i o nG e t H a n g T i m e ( ) { r e t u r nm o v e m e n t . h a n g T i m e ; } f u n c t i o nR e s e t ( ) { g a m e O b j e c t . t a g=" P l a y e r " ; } f u n c t i o nS e t C o n t r o l l a b l e ( c o n t r o l l a b l e:b o o l e a n ) { c a n C o n t r o l=c o n t r o l l a b l e ; }
16/23
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
14/09/13
E assim temos ambos os scripts que controlam tanto as animaes quando a jogabilidade bsica do personagem como andar, correr, saltar, cair, agachar, se arrastar, etc. O script acima uma forma de fsica controlada e por isso, em certos momentos, envolve muita matemtica que pode ser muito confusa se voc no conhecer ao menos um pouco sobre fsica. Ler alguns livros sobre o assunto sempre muito til. A partir deste ponto, se tudo correu bem, seu personagem deve estar andando, correndo e saltando normalmente.
possvel que voc tenha talvez alguma dificuldade para executar o tutorial, se for o caso, provavelmente voc ainda precisa se ambientar melhor com a interface da Unity e conhecer mais a fundo seus conceitos antes de se arriscar em animar um personagem que nesse caso pode ser uma questo complexa. Se voc teve dificuldades em seguir este tutorial por no ser um passo-a-passo, normal, este tutorial focado em explicar conceitos ao invs de indicar exatamente como algo deve ser feito e por isso h muita coisa no explicada aqui que voc precisa pesquisar por si prprio. Bem, minha parte termina aqui, mas a sua est apenas comeando, se voc estiver mesmo disposto a por em prtica os cdigos exemplificados aqui, no tente apenas copiar e colar, isso definitivamente no ir funcionar. Estude com ateno, procure realmente entender o que est acontecendo em cada linha e no muito alm voc se ver desenvolvendo funes ainda mais poderosas e se tornando cada vez mais seguro e experiente para tentar contedo cada vez mais avanado. Por exemplo, tente implementar voc mesmo as funes que foram o personagem a se manter agachado e crie objetos no cenrio para testar a funcionalidade e ir aos poucos aprimorando sua funo. Garanto que voc vai se divertir tanto que certa hora voc se ver mais jogando seu game do que trabalhando nele! Rsrsrs. Voc pode tambm criar obstculos que explodam e gerem dano no seu personagem, criar uma ragdoll, etc. Crie um script que mantenha o estado do seu personagem, como por exemplo, vidas, barra de energia, etc. Voc pode criar efeitos com partculas e apliclos ao seu spawnPoint indicando visualmente que o personagem aparece naquele ponto, pode criar tambm respawnPoints onde o personagem continuar a partir dal se caso ele morrer, etc.
Enfim, divirta-se com a Unity enquanto aprende e ao mesmo tempo produz. Acredito que isto seja o segredo de qualquer coisa que exige dedicao, faa por diverso e no por obrigao. Boa sorte!
Comentrios (26) Bruno Torres - Parabns! Muito Bom seu Tutorial (Aula de Unity) hehe
Adicionar novo
| 189.31.195.xxx | 07/11/2011 02:15:47
Espero nessas frias de final de ano, poder colocar em prticas algumas coisas como um personagem animado e uma UI simples. Ah, uma coisa seu personagem foi "rigado" com bones tipo do 3ds max ou biped? Posso usar biped ou obrigatoriamente tem quer ser os bones? Valeu. Abrao!
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page= 17/23
14/09/13
Responder
Quanto ao rig, at o momento o Unity suporta somente bones, no suporta automaticamente rigs mais complexos. Est em endamento um sistema semelhante ao Euphoria do GTA IV pela Unity Tech, no caso utilizando Inverse Kinematics, mas por enquanto apenas bones mesmo. Abrao.
Responder
Bruno Torres - Valeu Hum.. Valeu pela resposta, tava modelando um personagem pra testes ento farei com bones mesmo hehe Muito Legal esta notcia nem fazia idia ^^ Muito Obrigado pela resposta.. Aguardo mais tutoriais de Unity se possvel.. Abrao!
Responder
Annimo - Developer
Essa ferramenta timo, pena que para fazer para Android paga..enfim anos luz em frente do bug"XNA".. belo tutorial..
Responder
XNA uma API e uma coleo de ferramentas para facilitar desenvolvimento de jogos, no uma ferramenta de autoria como o Unity. No tem sentido comparar as duas, so duas ferramentas totalmente diferentes e que visam pblicos diferentes. O Unity mais comparvel com UDK, CryEngine, etc. Agora eu acho o preo da verso Android insignificante perto dos outros custos de se fazer um jogo. muito menos que um ms de salrio de um desenvolvedor e voc vai economizar muito mais que um ms com uma ferramenta dessas dependendo do projeto. T+
Responder
Mateus Pires - Preos Voc tem o valor para comprar a licena para o Android?
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
18/23
14/09/13
Responder
Bruno Crivelari Sanches Basta acessar o site e ir na loja: https://store.unity3d.com/shop/ Pelo o que estou vendo, verso Android USS400 T+
Responder
Nick
cara tenho uma pergunta! como fazer uma animao completa? tipo quero que ela tenha todos os movimentos e quero que ela faa coisas sobre humanas tipo voar super fora, super poderes pegar objetos no cho! saco?
Responder
Se quer que o personagem do seu jogo faa essas aes, alm das animaes voc tem que programar esses movimentos.
Responder
Citar
Annimo
| 189.107.12.xxx | 24/04/2012 15:30:12
onde baixa ?
Responder
Responder
Responder
Citar
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
19/23
14/09/13
dalton - triggers
Bom dia Bruno. Uma dvida a respeito de triggers. Eu quero fazer com que um objeto caia prximo ao meu personagem. para isso eu teria que fazer dois triggers? Um faria o objeto cair quando o personagem passar pelo trigger, isso? Abo e parabns pelo blog
Responder
Eu no entendi bem sua dvida. programar gameplay em Unity pode ser feito de vrias e vrias maneiras diferentes. Eu faria o seguinte: Deixaria o objeto em modo kinematic, no RigidBody. Criaria um trigger collider onde o personagem deve passar como vc mesmo mencionou. Assim que o trigger ativado, enviaria uma mensagem para um script no objeto que desativaria o modo kinematic do RigidBody e ele cairia encima ou proximo do personagem. Abrao.
Responder
Gustavo Antunes de Bitencourt - Unity3D com Realidade Aumentada Ola pessoal. Bruno, parabns pelo post.
Voc j implementou um jogo com Unity3D com a tecnologia de Realidade Aumentada? Sabes me informar de que forma melhor eu trabalhar com esse combo(RA + Unity3D) ? Desde j, muito obrigado. Abrao.
Responder
Bruno Xavier
Gustavo, mil desculpas pela resposta tooo atrasada; Eu preciso receber alguma forma de notificao nos posts pois eu no tenho como monitorar o site constantemente. Ento, sobre a sua pergunta: a maneira mais simples de se trabalhar com RA na Unity, em relao ao software, atravs de bibliotecas de terceiros que voc precisaria portar para a Unity voc mesmo provavelmente. Infelizmente eu no sou familar com essa area e nunca tive nenhum contato com essas bibliotecas, mas acredito que devem ser plugins .NET, apenas no sei se existe alguma de cdigo aberto. Boa sorte!
Responder
Gustavo Antunes de Bitencourt Desculpas pela demora em dar o feedback tambm. Valeu pelas dicas e aproveitando para deixar aqui que est disponvel a lib de NYArtoolkit para Unity3D.
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
20/23
14/09/13
Valeu, abrao.
Responder
Fanuel Marinho Ol Bruno, Parabns pelo seu post, muito interessante e bem elaborado. Gosto bastante da Unity3D. Pelo que estava lendo, vi que voc se formou na Full Sail University.
Voc no poderia fazer um post falando mais a respeito dos cursos que voc fez l , o que gostou e coisa e tal??
Abrao
Responder
Bruno Xavier Oi Fanuel. Eu posso te dar duas dicas: O que eu no gostei foi o preo rsrs...
E tambm o fato de que as pessoas por l no gostam muito de estrangeiros, por mais que tentem te convencer que sim. Meu ingls no dos melhores, mas ainda assim a instituio foi bastante compreensiva. Os professores so gente que praticamente se poderia pedir autografos, alm do conhecimento que eles passam e levam a SRIO, isso muito importante, uma das coisas mais valiosas que se pode obter l so os emails desses professores heheh. Existem muitos cursos, apesar de ser um pouco versado em programao eu estudei artes e game design ento eu sinceramente no tenho idia de como so os cursos de programao por l. Minha inteno era trabalhar no mercado de CGI, mas com o tempo as oportunidades que surgiram foram com games e como eu j fazia muitas modificaes nos softwares Autodesk, acabei pegando uns trabalhos envolvendo arte tecnica o que me obrigou a aprender programao mais convecional. No pude ficar na regio por muito tempo e quando voltei, decidi aplicar o que aprendi em jogos para estudios que publicam indie games pois eles aceitam com mais facilidade trabalhos remotos... Mas recomendo! Apenas o preo no agradvel; Fiz tambm alguns cursos especficos na Gnomon e tambm fora de srio. Por experincia, digo que as empresas brasileiras no iro dar muito valor a uma formao destes moldes, mas com as empresas de fora voc consegue muita ateno. Abrao.
Responder
Rfagan Ol!
Uma dvida. Vejo que utiliza abusivamente os recursos de captura de componentes do GameObject dentro de seu update. Pelo que eu conheo de Unity, GetComponent reflection e, apesar de ser um recurso poderoso, muito caro. No seria mais interessante capturar as referncias aos componentes dentro do awake, ao invs de realizar diversas chamadas ao GetComponent?
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
21/23
14/09/13
Responder
Na poca no havia muita noo de optmizao em Unity inclusive por parte dos prprios desenvolvedores da engine. Hoje, como Unity cresceu demais e muita coisa foi modificada sim impraticvel usar GetComponent dentro de loops. Abrao.
Responder
Responder
Joblackplay - directx qual e melhor para comea a desenvolver jogos directx ou unit? ou qual engine em e mais amigavel ?
Responder
ViniGodoy
So coisas completamente diferentes. O DirectX um pipeline grfico, bruto, de baixo nvel. A Unity uma engine, cheia de features prontas e focada em facilidade e agilidade. Se voc quiser fazer uma engine, use DirectX. Se voc quer usar uma engine, v para a Unity.
Responder
Carlos Ol Bruno!
Eu sou iniciante, e gostaria de saber se difcil fazer o personagem, tem que ser feito em software tipo 3dmax. Eu nunca usei esse tipo de software. Existe algum site que a pessoa consiga esses personagens prontos, ou voc recomenda antes de aprender a trabalhar com unit a mexer no 3dmax?
Responder
Quando iniciamos nossa empresa tambem fizemos essa pergunta para nos mesmo... Depois de muito estudo chegamos a uma concluso! Decidimos trabalhar com o Blender! Existem muitos tutoriais e videos-aulas expalhados pela rede, o mesmo digo do Unity3D. Comeamos com base zero de conhecimento em Blender e quase zero em unity...
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page= 22/23
14/09/13
Eu aconselho primeiro da uma estudada no blender para comear a modelar os personagens e cenarios... e depois foca no Unity!O blender uma ferramenta de alto nivel e free...Ela esta juntinho com os melhores softwares de modelagem pagos como o 3dsMax, Maya, etcccs ! Essas duas ferramentas juntas so muito poderosas Valeu... E bom divertimento!
Responder
Citar
Escrever um comentrio
Your Contact Details:
Nom e: E-m ail: Website: no notificar
Grav atar enabled
Comentrio:
Ttulo: UBBCode:
-cor-
-tamanho-
Message:
Security
pontov.com.br/site/index.php/unity/300-visao-geral-do-unity?tmpl=component&print=1&page=
23/23