|
|
|
| | Usando Avatars em XNA |  | | Adicione Avatares aos seus jogos em XNA 3.1! |  | Enviado por Jose Antonio Farias em 14/6/2009 0:00:00
| 
Introdução
Sem dúvida uma das grandes novidades do XNA 3.1 é a possibilidade de usarmos os Avatars do XBox 360 em nossos jogos. O mais incrível é que tudo é extremamente simples e nesse artigo vamos mostrar o básico da manipulação de Avatares.
Primeiro, podemos obter um Avatar (representado pela classe AvatarDescription) a partir de uma instância da classe SignedInGamer (que representa um usuário conectado a Live jogando o jogo), como abaixo:
AvatarDescription avatarDescription = SignedInGamers[0].Avatar = SignedInGamer.SignedInGamers[0].Avatar;
Ou então podemos criar um totalmente novo de forma extremamente simples, como abaixo:
AvatarDescription avatarDescription = AvatarDescription.CreateRandom();
Cada Avatar é desenhado na tela a partir de um conjunto de animações previamente definidas (pode-se também criar animações customizadas). Para definir a animação de um Avatar, precisamos criar uma instância da classe AvatarAnimation, como abaixo:
avatarAnimation = new AvatarAnimationAvatarAnimation (AvatarAnimationPreset.Wave);
Uma olhada na enumeração AvatarAnimationPreset nos revela que há uma série de animações disponíveis, tanto para Avatares masculinos quanto femininos. Podemos saber se um avatar é 'macho' oi 'fêmea' testando o atributo BodyType da classe AvatarDescription, que é do tipo AvatarBodyType, que é uma enumeração com os items 'Male' e 'Female'.
Desenhando
Para desenhar o avatar, precisamos de um renderizador, que é obtido pela classe AvatarRenderer, como abaixo:
AvatarRenderer avatarRenderer = new AvatarRenderer (avatarDescription, true);
O parâmetro booleano no construtor diz para ativarmos um efeito de 'loading' no avatar, caso ele demore a carregar (durante uma transferência pela Live, por exemplo). Então, no método Draw() só precisamos informar a matriz do mundo e da projeção e pronto:
avatarRenderer.World = Matrix.CreateRotationY(MathHelper.ToRadians(180.0f));
avatarRenderer.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), GraphicsDevice.Viewport.AspectRatio, .01f, 200.0f);
avatarRenderer.View = Matrix.CreateLookAt(new Vector3(0, 1, 3), new Vector3(0, 1, 0), Vector3.Up); avatarRenderer.Draw(avatarAnimation.BoneTransforms, avatarAnimation.Expression);
O método Draw() de AvatarRenderer faz todo o trabalho para nós. No método Update() nós fazemos o sincronismo da animação ativa com o tempo do jogo:
avatarAnimation.Update(gameTime.ElapsedGameTime, false);
O parâmetro booleano diz se a animação deve ficar tocando em loop, ou seja, quando a animação terminar ela será re-iniciada automaticamente.
O programa em anexo exibe uma série de recursos dos avatares, podendo tocar algumas animações com os botões. Recomendo também uma olhada nos samples disponíveis no creator's club e neste artigo que explica o que pode ser feito ou não com Avatares. Agora é só pensar nas possibilidades do uso de Avatares em seus jogos.  | Arquivos Anexados|
Sobre o Autor |

jalf |
Jose Antonio Farias
Microsoft Most Valuable Professional, Criador e Administrador do Sharpgames. Programador Profissional nas Linguagens C++ e C# e programador de jogos desde o tk-82. |
|
Clique para avaliar: |
| Comentários
|
" Legal, gostei da dica josé.... há se pra carregar todo modelmesh fosse assim..
Sim.. vou ser teu aluno cara... se passar no vest ne..rsr" | |
Enviado por Jucaduca em 27/2/2010 8:30:26: |
|
|
" Se meus teste estiverem certo, temos que ter uma conta premium no XNA Creatos Club, para poder executar deployer no XBOX." | |
Enviado por Kellyson Victor em 23/6/2009 13:33:11: |
|
|
" Ei, sacanagem :D eu queria ver no Windows :D ... Alias, pra fazer qualquer teste no Xbox é necessário uma conta Premmium ? "XNA Framework components that interact with Games for Windows - LIVE require an XNA Creators Club membership. "" | |
Enviado por Guima em 18/6/2009 13:52:31: |
|
|
" Legal, mas vale dizer que isso só funciona no XBox 360...sem avatars ainda no Windows :(" | |
Enviado por Mopaz em 15/6/2009 6:39:42: |
|
| Adicione seu Comentário
Voltar |
|
 |

|
|
|
|