<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8545328287422013265</id><updated>2024-09-06T00:53:34.524-03:00</updated><category term="Camello XNA"/><category term="XNA"/><category term="Novidade"/><category term="Tutorial"/><category term="2D"/><category term="Dica"/><category term="Jogo"/><category term="Código Aberto"/><category term="Mono.XNA"/><category term="Open Source"/><category term="Boas Vindas"/><category term="C#"/><category term="City Rain"/><category term="Dream-Build-Play"/><category term="Errata"/><category term="Imagine Cup"/><category term="Microsoft"/><category term="Mono"/><category term="MonoGame"/><category term="Mother Gaia Studio"/><category term="Orkut"/><category term="SOFTIMAGE|XSI Mod Tool"/><category term="WindowsPhone"/><category term="XNA Game Studio 3.0"/><category term="XNA Game Studio 3.1"/><category term="XNA Game Studio 4.0"/><category term="XSI Mod Tool"/><title type='text'>Camello XNA</title><subtitle type='html'>Dicas, tutoriais e novidades sobre desenvolvimento de jogos com o XNA Game Studio.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-1070183048856387248</id><published>2014-04-18T19:39:00.000-03:00</published><updated>2014-04-18T19:40:21.448-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Código Aberto"/><category scheme="http://www.blogger.com/atom/ns#" term="Mono.XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="MonoGame"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>XNA Game Studio - O Recomeço</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Faz 4 anos que eu não atualizo o meu blog. E nesse longo tempo fiquei bem afastado do desenvolvimento com o XNA Game Studio.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Essa semana, resolvi dar uma olhada em todos os meus projetos e ajeitar o código deles com o objetivo de colocá-los no GitHub. Ia começar pelos tutoriais aqui do blog pois até hoje recebo muitos e-mails de leitores me pedindo ajuda.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ao tentar configurar meu PC para ajeitar o código dos tutoriais aqui do blog me deparei com uma triste notícia: o XNA foi descontinuado pela Microsoft.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Inicialmente fiquei triste com a descoberta mas depois de investigar um pouco descobri que não há motivos para a tristeza. Um projeto chamado MonoGame está dando continuidade ao framework.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;Lembram do Mono.XNA?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Em outubro de 2008 escrevi um &lt;a href=&quot;http://camelloxna.blogspot.com.br/2008/10/monoxna-o-que.html&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt; sobre uma implementação multi plataforma e open source do XNA framework. Em março de 2011, o projeto foi renomeado para MonoGame e foi movido para o GitHub.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;O objetivo do projeto é permitir que os desenvolvedores que usam o XNA para desenvolver jogos para Xbox 360, Windows e Windows Phone, também consigam portar esses jogos para IOS, Android, Mac OS X, Linux e Windows 8 Metro. O desenvolvimento para PlayStation Mobile, Raspberry PI e PlayStation 4 também está em andamento.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://windowsgamesambassadors.azurewebsites.net/wp-content/uploads/2013/08/monogame.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://windowsgamesambassadors.azurewebsites.net/wp-content/uploads/2013/08/monogame.png&quot; height=&quot;179&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Página do projeto:&amp;nbsp;http://www.monogame.net/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;Um recomeço&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;O que parecia uma notícia ruim acabou se tornando uma notícia, no mínimo, animadora. Com nosso conhecimento em XNA, agora podemos desenvolver jogos que podem ser publicados em diversas plataformas.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Em breve tentarei escrever um tutorial sobre esse novo assunto, ou então portar o tutorial antigo para o MonoGame.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Abraços a todos. Até breve.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/1070183048856387248/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/1070183048856387248' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/1070183048856387248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/1070183048856387248'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2014/04/xna-game-studio-o-recomeco.html' title='XNA Game Studio - O Recomeço'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-9049922422470818673</id><published>2010-04-01T21:32:00.004-03:00</published><updated>2014-04-18T19:17:10.947-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA Game Studio 4.0"/><title type='text'>Novidade - XNA 4.0</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Faz mais de 6 meses que eu não apareço para atualizar o blog.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
O ano de 2010 começou e tivemos diversas boas notícias sobre o desenvolvimento de jogos com o XNA Game Studio.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As que mais me chamaram a atenção foram o lançamento da versão 4.0, e com isso a possibilidade de criar jogos para Windows Phone. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7hWkFo6wfmysy_nv5a5ktpTP2NFhlZtmRD7hhA52SWcgVGgM7V5ia0GLJqFxiExyv6QbPNwk2Zb6WgmTd5HiUZivGCZ5CiCSrOvcvd7EpNMs54ir1I3KYoMdodczx4MxzN9OL-k2Fb0A/s1600/windowsphone.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7hWkFo6wfmysy_nv5a5ktpTP2NFhlZtmRD7hhA52SWcgVGgM7V5ia0GLJqFxiExyv6QbPNwk2Zb6WgmTd5HiUZivGCZ5CiCSrOvcvd7EpNMs54ir1I3KYoMdodczx4MxzN9OL-k2Fb0A/s320/windowsphone.jpg&quot; id=&quot;BLOGGER_PHOTO_ID_5455334072730412130&quot; style=&quot;cursor: pointer; display: block; height: 187px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: justify; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Agora além de conseguirmos fazer jogos para PC, Xbox360 e Zune, também poderemos disponibilizar nossos jogos para qualquer celular ou smatphone que utiliza o sistema operacional da Microsoft. O melhor de tudo: da mesma maneira que fazíamos antes.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No site &lt;a href=&quot;http://creators.xna.com/en-US/article/firstwindowsphonegame&quot;&gt;http://creators.xna.com/en-US/article/firstwindowsphonegame&lt;/a&gt; temos um breve tutorial de como começar a desenvolver jogos para windowsphone.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No site &lt;a href=&quot;http://developer.windowsphone.com/windows-phone-7-series/&quot;&gt;http://developer.windowsphone.com/windows-phone-7-series/&lt;/a&gt; temos alguns exemplos, demos e documentações também sobre o desenvolvimento.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Em breve se for possível farei um tutorial sobre o assunto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Abraços a todos. Até a próxima.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/9049922422470818673/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/9049922422470818673' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/9049922422470818673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/9049922422470818673'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2010/04/novidade-xna-40.html' title='Novidade - XNA 4.0'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7hWkFo6wfmysy_nv5a5ktpTP2NFhlZtmRD7hhA52SWcgVGgM7V5ia0GLJqFxiExyv6QbPNwk2Zb6WgmTd5HiUZivGCZ5CiCSrOvcvd7EpNMs54ir1I3KYoMdodczx4MxzN9OL-k2Fb0A/s72-c/windowsphone.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-4664150921907933061</id><published>2009-08-06T11:00:00.002-03:00</published><updated>2010-02-10T16:34:57.382-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Extra</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000EE;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;Este será o nosso último tutorial da série de desenvolvimento do nosso primeiro jogo 2D. Esse tutorial foi baseado nos vídeos Beginners Guide to 2D Games encontrado no site creators.xna.com.&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Nesta última parte iremos surpreender os jogadores do nosso simples jogo com explosões bem legais a cada destruição.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Salvando as Novas Imagens e Adicionando ao Projeto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Começaremos esta parte do nosso tutorial, adicionando ao nosso projeto as imagens que usaremos para a explosão e a fumaça de nossas explosões. Para isso vamos salvar as imagens abaixo com seus seguintes nomes em nosso PC clicando com o botão direito do mouse.&lt;br /&gt;&lt;br /&gt;explosion:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpIDCVIL3SvpHej3GL42LburjV251uBiPXlsb5YqLuf2DPlA9EP1XnH1-AWpA7I3Q4BEq39TGnz0jLpmoYdLh9EUfS6G96zkdvA0TOk2VL-rwSHzh6Y0G4dxKtEpS6y1Zm7ctIA58CCf8/s1600-h/explosion.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpIDCVIL3SvpHej3GL42LburjV251uBiPXlsb5YqLuf2DPlA9EP1XnH1-AWpA7I3Q4BEq39TGnz0jLpmoYdLh9EUfS6G96zkdvA0TOk2VL-rwSHzh6Y0G4dxKtEpS6y1Zm7ctIA58CCf8/s320/explosion.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366834645974608402&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;smoke:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9npy3AqeVFVLirSmdWB9_UkQxlCq-WUpZQGhTG5dftqF1wOIaiN9L74c-DB5draxdk65o5Xh7RR-2d2Expqn35NvBwznfC3T-w0k5RFWt8By47FEFqkau0Ywqys5_cGueHyxUEtZ62Q/s1600-h/smoke.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9npy3AqeVFVLirSmdWB9_UkQxlCq-WUpZQGhTG5dftqF1wOIaiN9L74c-DB5draxdk65o5Xh7RR-2d2Expqn35NvBwznfC3T-w0k5RFWt8By47FEFqkau0Ywqys5_cGueHyxUEtZ62Q/s320/smoke.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366834650882731458&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora, no Visual C# Express Edition, no Solution Explorer, vamos clicar com o botão direito do mouse na pasta Sprites que está dentro de Content. Agora iremos adicionar as novas imagens assim como fizemos com as outras, clicando em Add-&gt;Existing Item e selecionando as novas imagens no local onde as salvamos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsm5fWrMb2Z32CkgedtH-R63ie8G-linYey-eEVv0OTRm4Kq61gQQ3Z60WsU6mGIJzt2ofG-aXxHNJK_rf0wjBGHWWau4VkZLDlwKV7sj0-Shfsar3DiywK4r_q9Jh2Y-btbclPLRj5sw/s1600-h/img_51.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 210px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsm5fWrMb2Z32CkgedtH-R63ie8G-linYey-eEVv0OTRm4Kq61gQQ3Z60WsU6mGIJzt2ofG-aXxHNJK_rf0wjBGHWWau4VkZLDlwKV7sj0-Shfsar3DiywK4r_q9Jh2Y-btbclPLRj5sw/s320/img_51.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366834653611806050&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Criando o Sistema de Particulas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para fazer as explosões dos aviões inimigos no nosso jogo iremos precisar de um sistema de particulas para que fiquem mais realistas as explosões e a fumaça.&lt;br /&gt;&lt;br /&gt;Assim ainda no solution explorer, vamos criar uma nova classe que será a responsável por cada particula de efeito no nosso jogo, clicando em Belonave-&gt;Add-&gt;New Item-&gt;Class, o nome do arquivo se chamará Particle.cs.&lt;br /&gt;&lt;br /&gt;Essa nossa classe será uma classe pública, assim vamos mudar a declaração dela para public class Particle. E não podemos esquecer também de mudar os using para os do XNA como na figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1olchz_s4ayiHAUf7K1CXGEM_aBa7tlF_lkgnp83fvxM-7YNqQBwILvcvHg89S3eUONMML9xIIzRne-J73YTR2sJqAAss5ogIfVTzt5MaN_dTqQxLkMnopvNPGByoFWBn1tlNBbdWfpU/s1600-h/img_52.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 232px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1olchz_s4ayiHAUf7K1CXGEM_aBa7tlF_lkgnp83fvxM-7YNqQBwILvcvHg89S3eUONMML9xIIzRne-J73YTR2sJqAAss5ogIfVTzt5MaN_dTqQxLkMnopvNPGByoFWBn1tlNBbdWfpU/s320/img_52.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366834657096856130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Nossa partícula terá os seguintes atributos: position; velocity; acceleration; lifetime, por quanto tempo a particula ficará viva; timeSinceStart, quanto tempo já passou desde que ela foi criada; scale; rotation; rotationSpeed, a velocidade da rotação da particula; e também o isActive, que indicará se a partícula ainda está &quot;viva&quot;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ITY5YOP_r_eSnb7AmtGY_X7IpQLuutpr8f79em9-KwHAMFPQ9lFSsjFOf7dKYy5XQnAKERvrDq485WfmjBW_VvEZcW3S1MppL_bUD9OOQUvhdKTDmMMPGlBplsmok-O9o8gNefkXKko/s1600-h/img_53.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 304px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ITY5YOP_r_eSnb7AmtGY_X7IpQLuutpr8f79em9-KwHAMFPQ9lFSsjFOf7dKYy5XQnAKERvrDq485WfmjBW_VvEZcW3S1MppL_bUD9OOQUvhdKTDmMMPGlBplsmok-O9o8gNefkXKko/s320/img_53.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366834658888286226&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Nossa partícula também terá dois métodos, um para inicializa-la e um para atualiza-la. O primeiro irá inicializa-la em uma posição, com uma velocidade e aceleração, um tempo em que ficará viva, sua escala e a velocidade de sua rotação. Daremos também, ainda nesse primeiro método, o tempo desde que foi iniciada a particula como 0.0 já que esse método é o que inicializa nossa particula. Se estivermos atentos iremos perceber que ainda falta inicializarmos a rotação, mas isso faremos em outro momento mais a frente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEHtb1FhaGcJP5Zr4UZPTHGGbQaJNK-cQfETkPQAHqhFfB3x3e-oJULY8KafLFyZBno04dk_JDxnRPlw2ndDadVhQUFcMHdAsnjJ9Dhs0SC9POkGFHGxRY6A0sRiE_kc73F5l0Mfd9wqM/s1600-h/img_54.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 272px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEHtb1FhaGcJP5Zr4UZPTHGGbQaJNK-cQfETkPQAHqhFfB3x3e-oJULY8KafLFyZBno04dk_JDxnRPlw2ndDadVhQUFcMHdAsnjJ9Dhs0SC9POkGFHGxRY6A0sRiE_kc73F5l0Mfd9wqM/s320/img_54.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835119269051202&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Agora trataremos da parte de atualização da nossa particula. O que faremos basicamente é manter os atributos dela atualizados a cada intervalo de tempo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW77jDHOg69m7uui323hcjQEIw2aYzcU4tSy_wOdoDJethhG8NRxyNswWPkbJo0ElOG0SRqVEMbEscadxDntwL-JycwA1wcVGMQ0jTYxik7z3pDfdGdeg6iwjmpGVXY7O5yk4o4M5UGZ8/s1600-h/img_55.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 262px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW77jDHOg69m7uui323hcjQEIw2aYzcU4tSy_wOdoDJethhG8NRxyNswWPkbJo0ElOG0SRqVEMbEscadxDntwL-JycwA1wcVGMQ0jTYxik7z3pDfdGdeg6iwjmpGVXY7O5yk4o4M5UGZ8/s320/img_55.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835124104930450&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora que temos nosso modelo de particula, podemos criar o nosso sistema de particulas, que será responsável por gerenciar todas as particulas do nosso jogo. Assim como fizemos para criar o Particle.cs, vamos fazer o mesmo para criar o ParticleSystem.cs.&lt;br /&gt;&lt;br /&gt;Mas nessa nossa nova classe, não só trocaremos os using, e tornaremos ela pública, como também a tornaremos abstrata e faremos ela herdar da classe DrawableGameComponent. Isso significa que ela irá proporcionar as funcionalidades básicas para criarmos um efeito de partículas. Outras subclasses irão extender os efeitos dessa classe de uma maneira mais customizada.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjw8Q87bIxr_AqPH4bl6KT44KyuakDLyZ7kG_Vl_l5l7AWTeLEQJ_-2sRYao6UNsO-KynA7TNgMQbVHOLzBBCH0t2NleBCfLGw9abBsX0UBsrrxT8KaI0AmWjT-65kHNlTTV6DFCgvuo/s1600-h/img_56.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 148px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjw8Q87bIxr_AqPH4bl6KT44KyuakDLyZ7kG_Vl_l5l7AWTeLEQJ_-2sRYao6UNsO-KynA7TNgMQbVHOLzBBCH0t2NleBCfLGw9abBsX0UBsrrxT8KaI0AmWjT-65kHNlTTV6DFCgvuo/s320/img_56.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835127701361314&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ela terá acesso a diversos atributos de outras classes como do objeto ao qual daremos o efeito de explosão e fumaça. Teremos também um gerador de números randomicos para dar mais realidade ao nosso efeito.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzWEWBlT7UNlIcI2PKohTFzRRAYN4FS08bb12UvvROUPsQReypZTwaQkBQzuWeIjqkSugSD2K5YHeU9GaxhaVGEDZeQ5qm9dhx5JBmsPcSGz4TcbRb3ILUsQh_FBClR25xnhF1jugy_Ok/s1600-h/img_57.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 281px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzWEWBlT7UNlIcI2PKohTFzRRAYN4FS08bb12UvvROUPsQReypZTwaQkBQzuWeIjqkSugSD2K5YHeU9GaxhaVGEDZeQ5qm9dhx5JBmsPcSGz4TcbRb3ILUsQh_FBClR25xnhF1jugy_Ok/s320/img_57.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835131061828418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Outras constantes também serão necessárias pois serão usadas nos sistemas de particulas mas especializados que criaremos a seguir. Continuaremos na linha onde paramos anteriormente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI8ryVnTEzLvhvSvH0QvGrkWEvmOcxUAQOfPFxuw96J1P3gmORBg5_61AzthO3dXf8TOdzskGTHKwU_PdaqV11-idFxhMgt_ii6l1vZ_wAz-PFh79AGw-UYS_Tw-wo9fh9mZ3VEjCuqw4/s1600-h/img_58.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 279px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI8ryVnTEzLvhvSvH0QvGrkWEvmOcxUAQOfPFxuw96J1P3gmORBg5_61AzthO3dXf8TOdzskGTHKwU_PdaqV11-idFxhMgt_ii6l1vZ_wAz-PFh79AGw-UYS_Tw-wo9fh9mZ3VEjCuqw4/s320/img_58.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835135024159874&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora poderemos passar para o construtor da nossa classe. No construtor receberemos o nosso Game, o numero de particulas que esperamos ver na tela a cada momento e o nome da nossa textura.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOS1cpW5NBwITGv5cyn-HBpYzUbJ6NcVBuc4Wa9EHSM3SKnk52sQin_oFPEdMPRdGK1C1grfFBQIW2uWpGlXapQu39n63tgho1rZru3Sf0ruyp-wGBig2AbAUiGt442z772s4Cx5i4QA/s1600-h/img_59.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 160px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOS1cpW5NBwITGv5cyn-HBpYzUbJ6NcVBuc4Wa9EHSM3SKnk52sQin_oFPEdMPRdGK1C1grfFBQIW2uWpGlXapQu39n63tgho1rZru3Sf0ruyp-wGBig2AbAUiGt442z772s4Cx5i4QA/s320/img_59.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835874962577730&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Nossa classe terá também a implementação das funções Initialize, LoadContent, Update e Draw. Mas antes de começarmos a implementá-las, temos que implementar diversos métodos auxiliares para nosso sistema de particulas, ainda continuando abaixo de onde paramos antes.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT-Ue75jiVBmuCUkSLuVeotOdiZwBmCMhDgJbo3aUz3huudyzHf2bA8jVGFqAoORE_EdyKDIleJ17DySZAaDpuqDNzbdn3MWvg4ffdVDCJ4o7cqViuVPbFQB4B3IW7O9ELfLA9XK5RuI/s1600-h/img_60.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT-Ue75jiVBmuCUkSLuVeotOdiZwBmCMhDgJbo3aUz3huudyzHf2bA8jVGFqAoORE_EdyKDIleJ17DySZAaDpuqDNzbdn3MWvg4ffdVDCJ4o7cqViuVPbFQB4B3IW7O9ELfLA9XK5RuI/s320/img_60.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835877629859522&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora abaixo das implementações que acabamos de fazer, vamos implementar os métodos Initialize:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjucG2iqgunjDFJ7xd7RtTvmkQ6eCsHSZeQl7NlWIdcVTOFYlCDCqzg63MZaQuRw-lAWbzHrGRIpZkYj-ytb6voyMI8_yjfchGyDfrME6dVrBgn-2WfpYp_FjbjHIQtx4DyuvKMntIb9Vw/s1600-h/img_61.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 254px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjucG2iqgunjDFJ7xd7RtTvmkQ6eCsHSZeQl7NlWIdcVTOFYlCDCqzg63MZaQuRw-lAWbzHrGRIpZkYj-ytb6voyMI8_yjfchGyDfrME6dVrBgn-2WfpYp_FjbjHIQtx4DyuvKMntIb9Vw/s320/img_61.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835882718283266&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;LoadContent:&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#551A8B;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#551A8B;&quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: none; &quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiE1H2KgPN-2EuRzLxp3IfeJu05fvFzws250DzgUzs8gDwWyPVinT61g1zwKx3I-MmNy0KnEDnG_AscDMFiO16KldgewvabGfZNRz9MzVxlIdSQpM0g34Xc3DDc0j3Xfd_hf_rvXQp8ZU/s1600-h/img_62.JPG&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiE1H2KgPN-2EuRzLxp3IfeJu05fvFzws250DzgUzs8gDwWyPVinT61g1zwKx3I-MmNy0KnEDnG_AscDMFiO16KldgewvabGfZNRz9MzVxlIdSQpM0g34Xc3DDc0j3Xfd_hf_rvXQp8ZU/s320/img_62.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5436685001574054994&quot; style=&quot;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 290px; height: 320px; &quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#551A8B;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#551A8B;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;Update:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdVMNUl1PjX8Me-5XKImUh63p0ucpAS9Pwfwl4QX-z46tDFbH5rDzdQtgz7ZHhrVfyiVt1BqoesiMyeq5HEVMyonjmzyqwmzYvh-zGozj1tshrU4uD6y2IBRnqRHPjToAkJBzRmlMHsw/s1600-h/img_63.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdVMNUl1PjX8Me-5XKImUh63p0ucpAS9Pwfwl4QX-z46tDFbH5rDzdQtgz7ZHhrVfyiVt1BqoesiMyeq5HEVMyonjmzyqwmzYvh-zGozj1tshrU4uD6y2IBRnqRHPjToAkJBzRmlMHsw/s320/img_63.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366835886090792178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;e Draw:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTCSIyFZcmPXiZ_8gtrjAjxQ20dyj4fyPFRBlFJLpcL_203hOKoAfB0Y_ZQKB1H3E4ZQUT7sjUOkRbEjq4ZKZ6q36ACn32HAzJR5XxAhpb43rFQL9CXOjLn5UV2vRYYy1kVWL3yC3roYU/s1600-h/img_63.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTCSIyFZcmPXiZ_8gtrjAjxQ20dyj4fyPFRBlFJLpcL_203hOKoAfB0Y_ZQKB1H3E4ZQUT7sjUOkRbEjq4ZKZ6q36ACn32HAzJR5XxAhpb43rFQL9CXOjLn5UV2vRYYy1kVWL3yC3roYU/s320/img_63.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366842526423962786&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;E temos também que lembrar que deixamos para setar o atributo rotation da classe Particle, o que faremos agora:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1olJNd3OC24ywos6MCaWwJEga1bBsBxpEDvsOfqsD4CQYDN70qI-Mju9_rHHME_hREfPLl905uCOCZL70mnKPJn6PFzAKzUW8EHMJUq0yFRmgARUxdD7I6eEeNwqdQ0hsYHxmWyY4qwI/s1600-h/img_64.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1olJNd3OC24ywos6MCaWwJEga1bBsBxpEDvsOfqsD4CQYDN70qI-Mju9_rHHME_hREfPLl905uCOCZL70mnKPJn6PFzAKzUW8EHMJUq0yFRmgARUxdD7I6eEeNwqdQ0hsYHxmWyY4qwI/s320/img_64.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366842528051863570&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Sistemas de Particulas Customizados&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora que já temos a base do nosso sistema de particulas, podemos começar a trabalhar nos nossos sistemas especializados em explosões e fumaça. Como fizemos para adicionar o Particle.cs e o ParticleSystem.cs, vamos adicionar também mais dois arquivos ao nosso projeto, o ExplosionParticleSystem.cs e o SmokeParticleSystem.cs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqBtrUjfAhyVZG5ra68VA45DPrENmoNGg7GLYHokoJv_qM7lE53FLMG979GYXJ-8LKeYUACVa_volodYf3Xuhyphenhyphent_ZlmxHRrgeCaUzz1u7dW6nlwRa33IVb16oC5XTIlNx7iT6g9379ObI/s1600-h/img_65.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 194px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqBtrUjfAhyVZG5ra68VA45DPrENmoNGg7GLYHokoJv_qM7lE53FLMG979GYXJ-8LKeYUACVa_volodYf3Xuhyphenhyphent_ZlmxHRrgeCaUzz1u7dW6nlwRa33IVb16oC5XTIlNx7iT6g9379ObI/s320/img_65.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366842529847364130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Faremos também as mesmas alterações dos using que fizemos nos outros arquivos e tornaremos estas classes também públicas e as faremos herdar do nosso recém finalizado ParticleSystem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8XX5Vk4SCtfngZaaNkfg-ErGegpN1bwSBRYzfFLx9bgtoWDxpYVDvhLaQGcgIr5gKHUdCncgZoeOw2O5jsOJEoMYIM0skuvZW7R8EhROr_jYgIoY2WTUh39-xKPq1NYH36MBBsD2Awys/s1600-h/img_66.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8XX5Vk4SCtfngZaaNkfg-ErGegpN1bwSBRYzfFLx9bgtoWDxpYVDvhLaQGcgIr5gKHUdCncgZoeOw2O5jsOJEoMYIM0skuvZW7R8EhROr_jYgIoY2WTUh39-xKPq1NYH36MBBsD2Awys/s320/img_66.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366842534514603442&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Devido ao grande trabalho que  tivemos implementando o nosso ParticleSystem, nessas nossas classes especializadas, só precisaremos implementar três funções: a InitializeConstants(), InitializeParticle() e o construtor delas.&lt;br /&gt;&lt;br /&gt;Começaremos pela classe ExplosionParticleSystem:&lt;br /&gt;&lt;br /&gt;Seu construtor:&lt;br /&gt;InitializeConstants:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu6UoH9PG6yfyaWnNgsvhdYp-l5ctvfx8Vz3I5-JBkN5qdockL6XLcx8fWdfZA-xbkh69OUNOAPY0ELj-RqpPqydqYd3rZuIDWR3JByIPe7LXa63gFiQDW-dIYf-Mlc_GtafobrPmr_hE/s1600-h/img_67.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 269px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu6UoH9PG6yfyaWnNgsvhdYp-l5ctvfx8Vz3I5-JBkN5qdockL6XLcx8fWdfZA-xbkh69OUNOAPY0ELj-RqpPqydqYd3rZuIDWR3JByIPe7LXa63gFiQDW-dIYf-Mlc_GtafobrPmr_hE/s320/img_67.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366842539572795026&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;InitializeParticle:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRMnUaMGB0pUr3YX-WCagVEVWfOlJLpa2GWO554hQwn8K1KFdffkWV2rzrbQmlMdKLyEqzs6DD5K95BFT71b0hbWyYwxTMkE6HOfdyXHC6qSeIpT2JGvt6x4mEclEQ359ij_NplJdQ6w0/s1600-h/img_68.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 202px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRMnUaMGB0pUr3YX-WCagVEVWfOlJLpa2GWO554hQwn8K1KFdffkWV2rzrbQmlMdKLyEqzs6DD5K95BFT71b0hbWyYwxTMkE6HOfdyXHC6qSeIpT2JGvt6x4mEclEQ359ij_NplJdQ6w0/s320/img_68.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847115179966994&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora na classe SmokeParticleSystem:&lt;br /&gt;&lt;br /&gt;Seu construtor:&lt;br /&gt;InitializeConstants:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ5B7nyNpruWZz5I3fJdGkPCqNAXBuQDNnH2YY43EU0HsAJO_e_-EWKZ3t93Ww5M9sHOLGGAzLGiRzWOWPGgss5B4DKSIJ7Y3_1aSie1DMn9n61SrSV4rPNQ2WLwfQt4b103zRp2WL1OI/s1600-h/img_69.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ5B7nyNpruWZz5I3fJdGkPCqNAXBuQDNnH2YY43EU0HsAJO_e_-EWKZ3t93Ww5M9sHOLGGAzLGiRzWOWPGgss5B4DKSIJ7Y3_1aSie1DMn9n61SrSV4rPNQ2WLwfQt4b103zRp2WL1OI/s320/img_69.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847120891434178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora, para finalizarmos, devemos ir a nossa classe Game.cs e fazer as seguintes alterações:&lt;br /&gt;&lt;br /&gt;Mais algumas variáveis:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_MIfP_XaPw5liQiKsub5-5lr3vWEgWzlSfXAkHgv_45sXDGKKlHG6hcTrRPkyAhUoqi51by7sMGzWcV-QDa9ibYdHBrivToI53p3VegKRuRq169aZZ3xF88lqhYy4DWkb2Efl-qkmMs0/s1600-h/img_70.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 281px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_MIfP_XaPw5liQiKsub5-5lr3vWEgWzlSfXAkHgv_45sXDGKKlHG6hcTrRPkyAhUoqi51by7sMGzWcV-QDa9ibYdHBrivToI53p3VegKRuRq169aZZ3xF88lqhYy4DWkb2Efl-qkmMs0/s320/img_70.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847125764682706&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Construtor:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXZP4qqdQagpj0XpfUOT_-vkWs6ZyLpc9kAMJg0QYJnlMS5_SFyHLqm7XewNTqQ9PI-xncuC_mSOwlkWFaCoPZTrbCRQaYcWHEn7Y-9RUUDsbfPilyLLptq4lrZpo0rw3I3YjClStHQ-M/s1600-h/img_71.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXZP4qqdQagpj0XpfUOT_-vkWs6ZyLpc9kAMJg0QYJnlMS5_SFyHLqm7XewNTqQ9PI-xncuC_mSOwlkWFaCoPZTrbCRQaYcWHEn7Y-9RUUDsbfPilyLLptq4lrZpo0rw3I3YjClStHQ-M/s320/img_71.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847127898775906&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;UpdateCannonMissiles:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizN5xUZtoRyDyn96-XyWiaGSzElOIhCbBeDXIilaa4DE7s2iJkqPe_-ugHyE6m1wp4txDBbSiyi6byBUksIWp147NPUy9RuYeGSktQzsXdXasMX7HkXvgjBikQSC_9lWsQ59ZpJHLH54o/s1600-h/img_72.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 283px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizN5xUZtoRyDyn96-XyWiaGSzElOIhCbBeDXIilaa4DE7s2iJkqPe_-ugHyE6m1wp4txDBbSiyi6byBUksIWp147NPUy9RuYeGSktQzsXdXasMX7HkXvgjBikQSC_9lWsQ59ZpJHLH54o/s320/img_72.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847132364628066&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Ahh... ainda em Game.cs não podemos esquecer de um último detalhe:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtBK99a0QEHeMq4yV8C99ZzoEJca5xUhgdtExKAyJGe8yI6CDzma4K41Ec2SRlW7hCUs2xGqmFhNqnqdme2YUFe-v9rmOO67bIBR0UKsQTNIpzv44idceGIfez_Z5Y4gnB7_bqIo5Iw1E/s1600-h/img_73.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 245px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtBK99a0QEHeMq4yV8C99ZzoEJca5xUhgdtExKAyJGe8yI6CDzma4K41Ec2SRlW7hCUs2xGqmFhNqnqdme2YUFe-v9rmOO67bIBR0UKsQTNIpzv44idceGIfez_Z5Y4gnB7_bqIo5Iw1E/s320/img_73.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366847645404498082&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Se não nos esquecemos de nenhum detalhe, podemos rodar nosso jogo e veremos explosões e fumaças realistas ao derrubarmos cada aeronave inimiga.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgediz10ABmfA9skd6Jk_M6m6JmXo9C-DdYm0g9jn10QwDx2Ke3n-xHSlR5xqUZXNJGNk65ZKSnSGib_KxK2DCaEjp-J-9MoRHWCcMsSEQLbM4qNLibP2Ie_XUCCrddjsyDGrvYhuVeaPI/s1600-h/img_74.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 249px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgediz10ABmfA9skd6Jk_M6m6JmXo9C-DdYm0g9jn10QwDx2Ke3n-xHSlR5xqUZXNJGNk65ZKSnSGib_KxK2DCaEjp-J-9MoRHWCcMsSEQLbM4qNLibP2Ie_XUCCrddjsyDGrvYhuVeaPI/s320/img_74.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366848483411382818&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta foi a ultima parte do nosso tutorial de como criar um jogo 2D com o XNa Game Studio. Nela conseguimos criar um sistema de particulas e simular explosões e fumaça no nosso jogo... Poderiamos expandir esse sistema para abordar outras formas de particulas como um brilho mágico, neblina, sei lá, depende da sua imaginação.&lt;br /&gt;&lt;br /&gt;Espero que as coisas fiquem bem claras e qualquer dúvida não exitem em entrar em contato comigo, via comentários, via e-mail, etc.&lt;br /&gt;&lt;br /&gt;Sei que ficou bastante &quot;cuspido&quot; esta ultima parte, mas é resultado da minha falta de tempo, por isso estou bem aberto para responder a duvidas sejam quais forem.&lt;br /&gt;&lt;br /&gt;Espero que tenha ajudado e que a maioria tenha gostado.&lt;br /&gt;&lt;br /&gt;Em breve colocarei uma enquete aqui para saber qual será a temática do próximo tutorial.&lt;br /&gt;&lt;br /&gt;Abraços a todos.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/4664150921907933061/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/4664150921907933061' title='14 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/4664150921907933061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/4664150921907933061'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/06/tutorial-nosso-primeiro-jogo-2d-parte.html' title='Tutorial - Nosso Primeiro Jogo 2D - Extra'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpIDCVIL3SvpHej3GL42LburjV251uBiPXlsb5YqLuf2DPlA9EP1XnH1-AWpA7I3Q4BEq39TGnz0jLpmoYdLh9EUfS6G96zkdvA0TOk2VL-rwSHzh6Y0G4dxKtEpS6y1Zm7ctIA58CCf8/s72-c/explosion.png" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-9062348762244204695</id><published>2009-07-01T18:34:00.004-03:00</published><updated>2009-07-01T18:52:14.088-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Kodu Game Lab - O que é?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Neste post falarei um pouco sobre uma novidade. O Kodu Game Lab!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;O Kodu Game Lab&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É uma nova linguagem de programação visual criada especialmente para o desenvolvimento de jogos. Foi criada para ser acessível para crianças e agradar a todos. É um ambiente de programação que permite uma criação rápida usando apenas o joystick. E ainda permite compartilhar seus jogos criados pela Xbox LIVE.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilb54DSilYF3VdyYsAhLyV6wdwezn_bwBL9Fjhp5lJIWZNfWLeZuU427uGX1xvxLW5aBhu504CMPErQHRhmHeVZDu8Z9zKSHAum3XbtDwMmM9ovjI3Vsy2cleWFXD_NxFaKrO06U0x2pk/s1600-h/untitled.bmp&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilb54DSilYF3VdyYsAhLyV6wdwezn_bwBL9Fjhp5lJIWZNfWLeZuU427uGX1xvxLW5aBhu504CMPErQHRhmHeVZDu8Z9zKSHAum3XbtDwMmM9ovjI3Vsy2cleWFXD_NxFaKrO06U0x2pk/s320/untitled.bmp&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5353612380922601890&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Foi desenvolvido pelo Microsoft Research utilizando o XNA Game Studio e custa 400 Microsoft Points no Xbox LIVE Marketplace. Com seu menu baseado em imagens permite a criação de jogos utilizando o joystick do Xbox360. Oferece um gameplay cooperativo de até 4 jogadores simultaneos e até 20 personagens diferentes com diversas abilidades.&lt;br /&gt;&lt;br /&gt;Já encontra-se disponível no &lt;a href=&quot;http://marketplace.xbox.com/en-US/games/media/66acd000-77fe-1000-9115-d8025855024c&quot;&gt;Xbox LIVE Marketplace&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/9062348762244204695/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/9062348762244204695' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/9062348762244204695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/9062348762244204695'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/07/kodu-game-lab-o-que-e.html' title='Kodu Game Lab - O que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilb54DSilYF3VdyYsAhLyV6wdwezn_bwBL9Fjhp5lJIWZNfWLeZuU427uGX1xvxLW5aBhu504CMPErQHRhmHeVZDu8Z9zKSHAum3XbtDwMmM9ovjI3Vsy2cleWFXD_NxFaKrO06U0x2pk/s72-c/untitled.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-5169726874981062996</id><published>2009-06-29T12:21:00.003-03:00</published><updated>2009-07-01T18:54:00.746-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA Game Studio 3.1"/><title type='text'>XNA Game Studio 3.1</title><content type='html'>No dia 11 de junho de 2009 foi lançada a versão 3.1 do XNA Game Studio. Essa é uma versão incremental a versão 3.0 e contém muita coisa nova.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_zfCOUEGgBlrXXgbnv4uiqM8v97pIooEO-FR63rHaGwIoY8kMWnG3EtUKoZ7QnIT_BDCF1oldIixVWoarTWbi1UuXOkgFGlgWsycGeX1vP3rxV9kuWk2YoRw0uYgCSjw58ZNbZmHihqs/s1600-h/untitled.bmp&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_zfCOUEGgBlrXXgbnv4uiqM8v97pIooEO-FR63rHaGwIoY8kMWnG3EtUKoZ7QnIT_BDCF1oldIixVWoarTWbi1UuXOkgFGlgWsycGeX1vP3rxV9kuWk2YoRw0uYgCSjw58ZNbZmHihqs/s320/untitled.bmp&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5353613223128230610&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Agora é possível renderizar e animar avatares para serem usados nos jogos representando jogadores e outros personagens do jogo, permitir a comunicação entre os jogadores mesmo se eles não estiverem jogando na mesma sessão, suporte ao playback de vídeos durante o jogo, também tivemos algumas mudanças na API de áudio, melhorias no Content Pipeline e suporte ao XACT3.&lt;br /&gt;&lt;br /&gt;Os jogos desenvolvidos com a versão 3.1 do XNA Game Studio poderão ser enviados ao Xbox LIVE Community Games em julho por usuários premium.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/5169726874981062996/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/5169726874981062996' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5169726874981062996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5169726874981062996'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/06/xna-game-studio-31.html' title='XNA Game Studio 3.1'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_zfCOUEGgBlrXXgbnv4uiqM8v97pIooEO-FR63rHaGwIoY8kMWnG3EtUKoZ7QnIT_BDCF1oldIixVWoarTWbi1UuXOkgFGlgWsycGeX1vP3rxV9kuWk2YoRw0uYgCSjw58ZNbZmHihqs/s72-c/untitled.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-1518428425121903804</id><published>2009-06-18T10:33:00.018-03:00</published><updated>2009-06-29T11:48:31.484-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2D"/><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Jogo"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 6</title><content type='html'>Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos vídeos Beginners Guide to 2D Games encontrados no site creators.xna.com.&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Esta é a sexta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio. Aqui veremos como manter e atualizar o controle da pontuação do nosso jogo. Mas antes...&lt;br /&gt;&lt;br /&gt;Pesquisando sobre as colisões em jogos 2D, encontrei um método de verificar a colisão por pixel que funciona checando se os pixels de uma imagem intercedem algum pixel de uma outra imagem. Assim podemos tornar nossas colisões mais realistas pois só irão colidir se os pixels das duas imagens entrarem em contato.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Atualizando as Colisões&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No nosso arquivo GameObject.cs vamos adicionar um vetor de cores que chamaremos de textureData e que armazenará a informação dos pixels dos nossos objetos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWNX7jC9sDGZYQxpI_nnZUot4zm3gUXwZluiKSPbWWfTbotliaMNEH1xdsLOStpdQalyw8AWO-YkItph4Ejly1B7OIuUY6c6aD_jUnNdQkSTGwsavw3COuaqDuCbdZxCVJhcBjCwcKKTo/s1600-h/mod_05.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 275px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWNX7jC9sDGZYQxpI_nnZUot4zm3gUXwZluiKSPbWWfTbotliaMNEH1xdsLOStpdQalyw8AWO-YkItph4Ejly1B7OIuUY6c6aD_jUnNdQkSTGwsavw3COuaqDuCbdZxCVJhcBjCwcKKTo/s320/mod_05.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348689894646295794&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;No arquivo Game1.cs, onde carregamos nossos mísseis, e onde carregamos as aeronaves inimigas, vamos carregar também os vetores de textura de cada um deles.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYxV7Z4rPZUrMwsBmvRehCM2QWnv1N0XA9fzLbxBWj1AXwDDseW1fxAdAX-LGybi5KEz-0qMLVKEflfmPrmGNNsRI1E3REiBq0AbEZtgmhEOH4AMwA1-WuIqqtquE0PawAxRLu7n10w_c/s1600-h/mod_06.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 94px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYxV7Z4rPZUrMwsBmvRehCM2QWnv1N0XA9fzLbxBWj1AXwDDseW1fxAdAX-LGybi5KEz-0qMLVKEflfmPrmGNNsRI1E3REiBq0AbEZtgmhEOH4AMwA1-WuIqqtquE0PawAxRLu7n10w_c/s320/mod_06.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348690281472777330&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora que temos os dados das texturas de cada imagem, tanto dos mísseis como das aeronaves inimigas, vamos criar no final do arquivo Game1.cs o método IntersectPixels que receberá os retangulos que envolvem duas imagens e suas informações de textura e retornará verdadeiro ou falso caso essas imagens colidam ou não. Esse método também está disponível no site creators.xna.com.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGVT2u1LPb8CYOyoNBv0_z0R7lz8aJwtIHMOXXSRhzIh-OBa37d35O-owsnRoJPVctyCwGzF1526BSvzOQ_-tN_BA_qgI4pbJBNiLnFIgVx1Ag0a_-OqFyccIyBanQYzyRrB6R0ncnKxs/s1600-h/mod_07.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 286px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGVT2u1LPb8CYOyoNBv0_z0R7lz8aJwtIHMOXXSRhzIh-OBa37d35O-owsnRoJPVctyCwGzF1526BSvzOQ_-tN_BA_qgI4pbJBNiLnFIgVx1Ag0a_-OqFyccIyBanQYzyRrB6R0ncnKxs/s320/mod_07.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348690635593815506&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Por último, na função UpdateCannonMissiles(), no trecho em que testávamos a colisão dos mísseis com as aeronaves inimigas, vamos utilizar o método que acabamos de criar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS004Xc_ji1T6xlwB6h7fZPkBSHFvra4fIYgKPO2PmbHkbZ7Qw7DztVQxVJw833YyzFaimykAh7lQXGcqSvFq4Ut1g0_qyVDqU-6GT59vTYPBIkoKPtUwUh1IiFcZ9pyaxYdLZR1ue5d8/s1600-h/mod_08.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS004Xc_ji1T6xlwB6h7fZPkBSHFvra4fIYgKPO2PmbHkbZ7Qw7DztVQxVJw833YyzFaimykAh7lQXGcqSvFq4Ut1g0_qyVDqU-6GT59vTYPBIkoKPtUwUh1IiFcZ9pyaxYdLZR1ue5d8/s320/mod_08.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348690725940479666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Se não esquecemos de nada e modificamos tudo direito o projeto deve compilar e rodar sem problemas e agora com colisões mais precisas.&lt;br /&gt;&lt;br /&gt;Agora podemos partir para nosso placar. rs.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Criando e Carregando o Arquivo de Definição de Fonte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para criarmos o nosso controle da pontuação do jogo, precisaremos criar um arquivo que descreverá a fonte que usaremos para escrever algo na tela. Assim, no Solution Explorer, vamos criar uma sub pasta dentro da pasta Content. Clicando com o botão direito na pasta Content, no Solution Explorer, Add-&gt;New Folder. Chamaremos essa nova pasta de Fonts.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnK1CoGeco8w72SGtuGIjaNLdiUGsDnHKlqAzsX550NsDzMxFtzKfaaZZJ8jagsSuT2OHcT6JMKeztNPHip1lgJwjf3pdacQxxMDXmHXsD8vHEEtvfb52koqRPeODRsNVd78sFS1XI6hE/s1600-h/img_42.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 304px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnK1CoGeco8w72SGtuGIjaNLdiUGsDnHKlqAzsX550NsDzMxFtzKfaaZZJ8jagsSuT2OHcT6JMKeztNPHip1lgJwjf3pdacQxxMDXmHXsD8vHEEtvfb52koqRPeODRsNVd78sFS1XI6hE/s320/img_42.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348690922618004226&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Após a criação da nossa nova pasta chamada Fonts, iremos clicar com o botão direito nela e Add-&gt; New Item. Aparecerá na tela uma janela para adicionarmos um novo item ao nosso projeto. Selecionaremos adicionar um Sprite Font cujo nome será gameFont.spritefont.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqJXUogAaYdpREGN7Xz6d1iG_cfHjo7y9aKn0WVm2JnJIKKmjl8bPoX6Gk6STk9rzWavtgHn0HTTp0vqpMwFSJ6PNztlnWBGGOaON2bZPG4-DHRXPQ4jZDChjiq1C9foEhU70uvHRNrkM/s1600-h/img_43.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqJXUogAaYdpREGN7Xz6d1iG_cfHjo7y9aKn0WVm2JnJIKKmjl8bPoX6Gk6STk9rzWavtgHn0HTTp0vqpMwFSJ6PNztlnWBGGOaON2bZPG4-DHRXPQ4jZDChjiq1C9foEhU70uvHRNrkM/s320/img_43.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348692635058162946&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Clicando no botão Add veremos o arquivo gameFont.spritefont ser adicionado ao projeto dentro da pasta em que o inserimos no Solution Explorer e uma nova aba aberta exibindo o conteúdo do nosso novo arquivo. Esse arquivo não é descrito em C# mas em XML que é uma linguagem criada para descrever dados. O nosso arquivo XML está organizado de modo que descreve as informações de nossa fonte.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkosulD2gcvms0vEMPubwjFmtvuQ6z1jxfoOwXVTT66x1Jvk1dIVrg7c6VwLw3NC6uAAAljlyLUXgVjI6cOnHu59Atw5RPd3eXRAlDDE6AQAaB6QFzonKqe9HTZnYu-16cgqUWQ836Ifg/s1600-h/img_44.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkosulD2gcvms0vEMPubwjFmtvuQ6z1jxfoOwXVTT66x1Jvk1dIVrg7c6VwLw3NC6uAAAljlyLUXgVjI6cOnHu59Atw5RPd3eXRAlDDE6AQAaB6QFzonKqe9HTZnYu-16cgqUWQ836Ifg/s320/img_44.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348691326194219490&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Faremos algumas alterações nesse arquivo para que fique de acordo com o que desejamos em nosso jogo. Dentro das tags que descrevem o nome da nossa fonte, FontName, iremos colocar o nome da fonte que desejamos utilizar no nosso jogo e que tenhamos no nosso sistema, neste caso usaremos a fonte Arial. Logo abaixo das tags de nome da nossa fonte, temos as tags Size, responsáveis pelo seu tamanho e iremos alterá-la para 18. Feitas essas alterações, podemos salvar nosso arquivo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4Xjhirec8NRNUAbAP6xOu-RNGi-SsAIwVFXeSW4IvRjPeNNnE8DBba_lARFCtA71IIZtfF_R4Q6LlL2igo7ZVQ_vKYBSNcyD7WdA62eT1cfqgNsFTNFtC9kl-BckoQahuoafM62VdNw/s1600-h/img_45.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4Xjhirec8NRNUAbAP6xOu-RNGi-SsAIwVFXeSW4IvRjPeNNnE8DBba_lARFCtA71IIZtfF_R4Q6LlL2igo7ZVQ_vKYBSNcyD7WdA62eT1cfqgNsFTNFtC9kl-BckoQahuoafM62VdNw/s320/img_45.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348691505409320850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora iremos ao arquivo Game1.cs e no início do arquivo, logo depois das declarações de variáveis que fizemos para os inimigos vamos declarar mais algumas. A primeira variável que iremos declarar é um inteiro chamado score para computar os pontos que o jogador fizer, logo após iremos declarar uma variável do tipo SpriteFont chamada font que será a representação da nossa fonte e por último um vetor da posição da tela onde nosso placar será desenhado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAfjfkMVwg3g9c5rI2kv_Hd2YgWvUFBTxQsipvSwU2gaJXQG9toe-WKBc1wTrz3CDk74UyKSBxzp7emMs8zMCtn3bEUmQHi4m4gJT02iNsNRE7-Jh5jcqSrfDkuv7BvRlZ-3tqjQbLi98/s1600-h/img_46.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAfjfkMVwg3g9c5rI2kv_Hd2YgWvUFBTxQsipvSwU2gaJXQG9toe-WKBc1wTrz3CDk74UyKSBxzp7emMs8zMCtn3bEUmQHi4m4gJT02iNsNRE7-Jh5jcqSrfDkuv7BvRlZ-3tqjQbLi98/s320/img_46.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348691643238819538&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Dentro da função LoadContent() iremos carregar com a variável font nossa fonte ao Content Pipeline como fizemos com todas as outras imagens do nosso jogo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhagUDhprhPcEuaQZ0hQmUznEKCxPr5RxOXY8UVPXFMEt8f_4DKwvjH4D77r5jb0TDGdslCB2UAcVUc1Hu7YqvldCHh5Z-_0FFctDpOv7POCvipst5TdipyWICPTzqfnZZgztK0YEukjgg/s1600-h/img_47.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhagUDhprhPcEuaQZ0hQmUznEKCxPr5RxOXY8UVPXFMEt8f_4DKwvjH4D77r5jb0TDGdslCB2UAcVUc1Hu7YqvldCHh5Z-_0FFctDpOv7POCvipst5TdipyWICPTzqfnZZgztK0YEukjgg/s320/img_47.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348692466816672674&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Antes de desenhar nosso placar na tela, vamos verificar como estamos computando as baixas das aeronaves inimigas.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Atualizando a Pontuação a Cada Colisão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No método UpdateCannonBalls() temos um trecho de código que identifica as colisões dos mísseis com as aeronaves inimigas. Dentro da condição que checa essa colisão vamos incrementar a nossa variável score para que ela registre o número de inimigos que derrubamos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc4_6T2P8KyPOyXpQXm3EktH0O-aJyaHLt9bCyN0Bh7AYQslh4fUR41HDZFAwqzQBTNoByZK0EsiOstY2w1U_smP3gXO4iH53hxjfDNnpxp2U2x70S3HWNEjFiSCQiWjUM2U1G7_i_RhY/s1600-h/img_48.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc4_6T2P8KyPOyXpQXm3EktH0O-aJyaHLt9bCyN0Bh7AYQslh4fUR41HDZFAwqzQBTNoByZK0EsiOstY2w1U_smP3gXO4iH53hxjfDNnpxp2U2x70S3HWNEjFiSCQiWjUM2U1G7_i_RhY/s320/img_48.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348691845799168930&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Desenhando o Placar na Tela&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos ao método Draw(). Após o trecho de código onde desenhamos nossos inimigos, iremos utilizar o spriteBatch mais uma vez para desenharmos nosso placar. Mas dessa vez utilizaremos sua função DrawString().&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdNwbEXv49VB2gIvhPLDQI3FQLVCFgBHSwuc6BhuoJY8Kk-jvuAbQ59hCertHxYy8BNxk1fotCBhsHn7sd1vtCsuWrVb1yPflsyRIEzADC-EAZZ6hCmM5AN0adQ-9AJu-mqmgfkmzmV4I/s1600-h/img_49.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 154px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdNwbEXv49VB2gIvhPLDQI3FQLVCFgBHSwuc6BhuoJY8Kk-jvuAbQ59hCertHxYy8BNxk1fotCBhsHn7sd1vtCsuWrVb1yPflsyRIEzADC-EAZZ6hCmM5AN0adQ-9AJu-mqmgfkmzmV4I/s320/img_49.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348692191201279218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Se não nos esquecemos de nenhum detalhe podemos rodar o jogo e teremos nosso placar no canto esquero superior da tela e a cada aeronave que destruimos ele será atualizado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqypUyWwJXJozZOXG57oo8qlT3-vrsjHx1ogqjzblg9oYs3qRhKKWHMMsXznXDspvRoOd8jLVFdKa5VrQt7AFxg7ogsBSbLR0dgBA555uY7wBZ5KUxwUzY6CoxGq5qeBGoEsfas-wRNgY/s1600-h/img_50.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 248px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqypUyWwJXJozZOXG57oo8qlT3-vrsjHx1ogqjzblg9oYs3qRhKKWHMMsXznXDspvRoOd8jLVFdKa5VrQt7AFxg7ogsBSbLR0dgBA555uY7wBZ5KUxwUzY6CoxGq5qeBGoEsfas-wRNgY/s320/img_50.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348694197628612242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Nesta sexta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio vimos como adicionar um placar para a contagem de inimigos que acertamos  durante o jogo.&lt;br /&gt;&lt;br /&gt;Na sétima e última parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio veremos como animar um pouco mais as cenas inserindo explosões realistas a cada colisão.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/1518428425121903804/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/1518428425121903804' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/1518428425121903804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/1518428425121903804'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/06/tutorial-nosso-primeiro-jogo-2d-parte-6.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 6'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWNX7jC9sDGZYQxpI_nnZUot4zm3gUXwZluiKSPbWWfTbotliaMNEH1xdsLOStpdQalyw8AWO-YkItph4Ejly1B7OIuUY6c6aD_jUnNdQkSTGwsavw3COuaqDuCbdZxCVJhcBjCwcKKTo/s72-c/mod_05.JPG" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-857229864696483778</id><published>2009-04-29T14:29:00.012-03:00</published><updated>2009-04-29T17:01:27.205-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 5</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Finalmente, depois de muita espera, o tutorial do nosso primeiro jogo 2D está de volta. Tive alguns problemas com meu PC, que infelizmente &quot;pifou&quot; e não pude continuar postando. Como ainda não estão nos meus planos consertar meu PC, tive que tomar uma atitude quanto a continuidade dos nossos tutoriais... Instalar o Visual C# e o XNA aqui no PC do trabalho! Isso implica em ficar horas a mais &quot;trabalhando&quot;... rs&lt;br /&gt;&lt;br /&gt;Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos vídeos Beginner&#39;s Guide 2D encontrados no site creators.xna.com.&lt;br /&gt;&lt;br /&gt;Esta é a quinta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio. Aqui veremos como calcular a colisão dos mísseis com as aeronaves inimigas e destrui-las. Também veremos como criar e atualizar nossa pontuação.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Detectando a Colisão entre os Mísseis e as Aeronaves&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Atualmente no nosso jogo, quando um míssil cruza com uma aeronave inimiga nada acontece, cada um desses objetos continua seu trajeto como se nada tivesse acontecido. Não é esse efeito que desejamos durante o jogo. Gostariamos que quando o míssil encontrasse a aeronave inimiga, ambos desaparecessem indicando a colisão. Para isso, vamos ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt;. Nele verificamos, para cada míssil, se o mesmo ainda está &quot;vivo&quot;. Se estiver, apenas o &quot;matamos&quot; caso esteja fora da tela, que é a checagem mais básica que podemos fazer. Para checarmos se o míssil encontra a aeronave inimiga faremos uma checagem um pouco parecida. Assim, logo depois do final do escopo da checagem do caso do míssil ainda estar dentro da tela, criaremos um retângulo que é do tamanho da textura do nosso míssil, e que a cada loop do nosso jogo estará iniciado de acordo com a posição do míssil.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPDciHzUB0Ugty0zY-sccMVldyPolT4x6kJ0TgkaxhewQhJup-ZW4re6Vkin81m86wGAYNSIS7c-6_m7rUS7j8sLKJqX-5qZDnkbZpHQMCCzCJjK3OxwbMzBPgzP7sl6Y3MWLZWb4racI/s1600-h/img_39.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 178px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPDciHzUB0Ugty0zY-sccMVldyPolT4x6kJ0TgkaxhewQhJup-ZW4re6Vkin81m86wGAYNSIS7c-6_m7rUS7j8sLKJqX-5qZDnkbZpHQMCCzCJjK3OxwbMzBPgzP7sl6Y3MWLZWb4racI/s320/img_39.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330178053759505394&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora teremos que criar outro retângulo, que compararemos com esse, para saber se eles colidem ou não. Criaremos retângulos ao redor das aeronaves inimigas, que são os objetos com os quais desejamos identificar colisões. Ainda dentro do método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt;, logo em seguida do trecho que acabamos de escrever, faremos um loop em que, para cada aeronave inimiga, criaremos um retângulo. Testaremos também se há interseção entre esses dois retângulos e, se houver, &quot;mataremos&quot; tanto o míssil quanto a aeronave.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRlr9O2pTblNUKBdPwPMMqefe-MFAYKPnKkTDJ-vZwQJ-IeoJfoHGFvvhMxyMpq1F-CfZp7zQfKW8G066I8Lzml8RP9uMalLyIJN2wtZ3pgH_TLKkGpbNEcIn6h9SVZY1_GVPEixQ8tgU/s1600-h/img_40.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 181px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRlr9O2pTblNUKBdPwPMMqefe-MFAYKPnKkTDJ-vZwQJ-IeoJfoHGFvvhMxyMpq1F-CfZp7zQfKW8G066I8Lzml8RP9uMalLyIJN2wtZ3pgH_TLKkGpbNEcIn6h9SVZY1_GVPEixQ8tgU/s320/img_40.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330182367663400786&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Para conseguirmo visualizar melhor as colisões, vamos alterar o valor das variáveis &lt;span style=&quot;font-weight: bold;&quot;&gt;MaxCannonMissiles&lt;/span&gt; e &lt;span style=&quot;font-weight: bold;&quot;&gt;MaxEnemyPlanes&lt;/span&gt; para 3. Esse modo de verificar colisões através de retângulos é o jeito mais simples de verificarmos colisões mas não é muito bom, pois a forma de nossos objetos não são retangulares o que causa algumas detecções mesmo sem haverem colisões. Se não nos esquecemos de nenhum detalhe podemos rodar nosso jogo e teremos os mísseis colidindo com as aeronaves.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-WjeWp2FJfZOYUrmDSxu9bVjp5WT3Rt2Rt1Es09Jz62GgVAtmc0irQ85vvCZv4OAbEqA_i7QTZ5bEVErRK023IgPE-yH_psFTANcSFXxnlK1dUVjqlZNHl_FJ_sOuum9lnLyiyVbUIRM/s1600-h/img_41.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 248px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-WjeWp2FJfZOYUrmDSxu9bVjp5WT3Rt2Rt1Es09Jz62GgVAtmc0irQ85vvCZv4OAbEqA_i7QTZ5bEVErRK023IgPE-yH_psFTANcSFXxnlK1dUVjqlZNHl_FJ_sOuum9lnLyiyVbUIRM/s320/img_41.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330184916924136210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesta quinta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio vimos como detectar as colisões dos mísseis de nosso Belonave com as aeronaves dos inimigos.&lt;br /&gt;&lt;br /&gt;Deixarei para uma sexta parte do nosso tutorial como manter e atualizar a pontuação do nosso jogo e nesse finalzinho me focarei em algumas alterações que devemos fazer para melhorar a experiencia do jogo, principalmente com relação a esse recém introduzido sistema de colisões.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Alterações&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como pudemos perceber, nosso sistema de colisões está muito falho. Muito desse problema se deve ao seguinte fato: Utilizamos uma imagem grande para as aeronaves e a reduzimos no momento em que a desenhamos. Com isso, ao gerarmos o retangulo com as dimensões da aeronave, o fazemos baseado nas dimensões da imagem grande, o que causa grande erro nas nossas detecções de colisão. A alternativa mais simples que temos para esse caso é diminuir a imagem das aeronaves inimigas que adicionamos ao projeto com o nome de &lt;span style=&quot;font-weight: bold;&quot;&gt;EnemyOne.png&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqIhKsQOSdnj_YKER43Hbs1ZaOGSooe7o1MnBtTYoNeOiCXhQoOz8AKQgtMK8Fkk08M1CDuYv7IA5TrkdDzUCYmiJFgdJsmq9wDRtS5ZmodGZoRoynBhX8EC4v2peVuxScbNeca8YA8uE/s1600-h/enemyOne.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 181px; height: 48px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqIhKsQOSdnj_YKER43Hbs1ZaOGSooe7o1MnBtTYoNeOiCXhQoOz8AKQgtMK8Fkk08M1CDuYv7IA5TrkdDzUCYmiJFgdJsmq9wDRtS5ZmodGZoRoynBhX8EC4v2peVuxScbNeca8YA8uE/s320/enemyOne.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330201264997475874&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ao baixarmos a imagem acima, temos que adiciona-la no projeto substituindo a que estavamos usando. Primeiramente podemos excluir do projeto a imagem da aeronave que já estamos usando. Faremos isso clicando com o botão direito do mouse em cima da imagem que está em &lt;span style=&quot;font-weight: bold;&quot;&gt;Content-&gt;Sprites&lt;/span&gt; no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQUzVeTgUM-3aEBaOkdTp9H7a6hzOirzIySNrOkZMfUTB5fSPtLj-I7YpM7hWo9MPyv3ObBUDJ4vHu_QNQbdmF1PMQxh1cTj8SqibN42rx3TqHRfs4lmnyqb_x6W2v5uQKwPj6cdz0gW8/s1600-h/mod01.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 201px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQUzVeTgUM-3aEBaOkdTp9H7a6hzOirzIySNrOkZMfUTB5fSPtLj-I7YpM7hWo9MPyv3ObBUDJ4vHu_QNQbdmF1PMQxh1cTj8SqibN42rx3TqHRfs4lmnyqb_x6W2v5uQKwPj6cdz0gW8/s320/mod01.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330201692350546354&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Agora podemos clicar com o botão direito na pasta &lt;span style=&quot;font-weight: bold;&quot;&gt;Sprites&lt;/span&gt; e selecionar &lt;span style=&quot;font-weight: bold;&quot;&gt;Add-&gt;Existing Item...&lt;/span&gt;, onde procuraremos e adicionaremos a nova imagem reduzida da aeronave.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBT_2G65tVoAET4cE5pbNNBkbYUZ2z0MIwswIdsDZbDInWzS2HocdmYhcwqOQy3AuCDc4JndLnmHvXWW7VlAgMPXSX-jH5TAtkeZQ3pAZ3RA4vSCMhAxiI2QTtNbKW_obBY9QSb28-R9w/s1600-h/mod02.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 255px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBT_2G65tVoAET4cE5pbNNBkbYUZ2z0MIwswIdsDZbDInWzS2HocdmYhcwqOQy3AuCDc4JndLnmHvXWW7VlAgMPXSX-jH5TAtkeZQ3pAZ3RA4vSCMhAxiI2QTtNbKW_obBY9QSb28-R9w/s320/mod02.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330202613119346178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Também teremos que fazer uma alteração no código do nosso jogo 2D. Onde desenhavamos a aeronave como sendo 65% da imagem original, podemos desenha-la sendo 100% da nova imagem redimensionada. Assim passaremos para a função &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw&lt;/span&gt; do &lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch&lt;/span&gt; 1.0f que é a escala que desejamos desenhar nossa aeronave.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE2rVcW2xUtF1S4DUj_jnthrPncIHNC_tU8rx0K4K4H1d_t1TFAreeIlamwc1HEINWmzYB77QmcGt3_vbnYW8OhyphenhyphenFwO4ruQkYx3wr0xTeqSjtJln4kPbyo54Um1ET-BjJ0o6Iw81UMm2Q/s1600-h/mod03.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 266px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE2rVcW2xUtF1S4DUj_jnthrPncIHNC_tU8rx0K4K4H1d_t1TFAreeIlamwc1HEINWmzYB77QmcGt3_vbnYW8OhyphenhyphenFwO4ruQkYx3wr0xTeqSjtJln4kPbyo54Um1ET-BjJ0o6Iw81UMm2Q/s320/mod03.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330203818423715634&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Com essas alterações, se não nos esquecemos de nenhum detalhe podemos rodar nosso jogo e teremos as imagens no tamanho que estavam antes, mas a detecção de colisões teve uma notável melhora, pois agora estamos desenhando retângulos do tamanho das imagens que estamos desenhando.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzfqSoNjdKl5zNG1JJqNT-sEc1l38KY-CMuTAJQ_fmYGSJT62mhcDxmI3vH7fEXywBcY7XOWuc_av3Hik1B7DXfC2gTqg8iPFalvg6NnLlQb0jzP069RZ-mnJE9W16sZGtKAZnh0xYOCE/s1600-h/mod04.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 248px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzfqSoNjdKl5zNG1JJqNT-sEc1l38KY-CMuTAJQ_fmYGSJT62mhcDxmI3vH7fEXywBcY7XOWuc_av3Hik1B7DXfC2gTqg8iPFalvg6NnLlQb0jzP069RZ-mnJE9W16sZGtKAZnh0xYOCE/s320/mod04.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330204462254009234&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Finalização&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na sexta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio iremos descobrir como mantemos e atualizamos o controle da pontuação do nosso jogo.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/857229864696483778/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/857229864696483778' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/857229864696483778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/857229864696483778'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/04/tutorial-nosso-primeiro-jogo-2d-parte-5.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 5'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPDciHzUB0Ugty0zY-sccMVldyPolT4x6kJ0TgkaxhewQhJup-ZW4re6Vkin81m86wGAYNSIS7c-6_m7rUS7j8sLKJqX-5qZDnkbZpHQMCCzCJjK3OxwbMzBPgzP7sl6Y3MWLZWb4racI/s72-c/img_39.JPG" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-8704625874096816095</id><published>2009-03-31T11:44:00.007-03:00</published><updated>2009-03-31T12:26:31.591-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Dream-Build-Play"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Dream-Build-Play - O que é?</title><content type='html'>&quot;&lt;span style=&quot;font-style: italic;&quot;&gt;Construa o jogo dos seus sonhos e dispute com outros desenvolvedores de jogos do mundo todo!&lt;/span&gt;&quot;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;O Dream-Build-Play&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mais uma grande competição anual de desenvolvimento de jogos utilizando o XNA Game Studio para desenvolver jogos para o Xbox360. Ao se inscrever, cada equipe ganha uma assinatura trial do Creators Club Online de 12 meses.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dreambuildplay.com/&quot;&gt;- Dream-Build-Play Website&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Os participantes concorrem a prêmios num total de 75 mil dólares e uma das dez melhores equipes ganhará a oportunidade de um contrato de publicação na rede Xbox LIVE.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSIrgkztvPVUwUxqWyqtqOmMbmkZNC5QjHG69qRw2y55J7AfeK_Mu6oobm4vKMmPxBRxJBc_VWyqDIx-rnyYQx7ehMWCJz8tdlyqG5WWSQn7TvDN1bA25zQekHMdGWWWNLpg7wTZgc4o/s1600-h/DreamBuildPlay.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 55px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSIrgkztvPVUwUxqWyqtqOmMbmkZNC5QjHG69qRw2y55J7AfeK_Mu6oobm4vKMmPxBRxJBc_VWyqDIx-rnyYQx7ehMWCJz8tdlyqG5WWSQn7TvDN1bA25zQekHMdGWWWNLpg7wTZgc4o/s320/DreamBuildPlay.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5319372391915902546&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Em 2008 houveram mais de 7800 membros da comunidade participando da competição e mais de 350 jogos completos de diversos países do mundo. O Dream-Build-Play 2009 terá início no dia 6 de abril de 2009.&lt;br /&gt;&lt;br /&gt;Dois dos vencedores do Dream-Build-Play 2008, juntos, receberam mais de 70 mil dólares em prêmios além de estarem entre os jogos mais vendidos no Xbox LIVE Community Games Channel.&lt;br /&gt;&lt;br /&gt;As equipes vencedoras da competição em 2008 foram o Team GAMBIT com o jogo &quot;&lt;a href=&quot;http://marketplace.xbox.com/en-US/games/media/66acd000-77fe-1000-9115-d8025855014d/&quot;&gt;CarneyVale: Showtime&lt;/a&gt;&quot; e o Mommy&#39;s Best Games com o jogo &quot;&lt;a href=&quot;http://marketplace.xbox.com/en-US/games/media/66acd000-77fe-1000-9115-d80258550102/&quot;&gt;Weapon of Choice&lt;/a&gt;&quot;.&lt;br /&gt;&lt;br /&gt;Os trailers dos vencedores de 2008:&lt;br /&gt;&lt;br /&gt;CarneyVale: Showtime&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/eHrhUpAjIYw&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/eHrhUpAjIYw&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Weapon of Choice&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/dNaxdG2m60w&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/dNaxdG2m60w&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Boa sorte a todos!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/8704625874096816095/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/8704625874096816095' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8704625874096816095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8704625874096816095'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/03/dream-build-play-o-que-e.html' title='Dream-Build-Play - O que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSIrgkztvPVUwUxqWyqtqOmMbmkZNC5QjHG69qRw2y55J7AfeK_Mu6oobm4vKMmPxBRxJBc_VWyqDIx-rnyYQx7ehMWCJz8tdlyqG5WWSQn7TvDN1bA25zQekHMdGWWWNLpg7wTZgc4o/s72-c/DreamBuildPlay.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-4720081212442802472</id><published>2009-02-18T11:01:00.005-03:00</published><updated>2009-02-18T11:20:56.253-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Resultado do Concurso de Mini-Games</title><content type='html'>O concurso de mini-games da Revista oficial do Xbox360 no Brasil recebeu diversos jogos e foi um sucesso.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyXa4B8iS2-XpdjSFEQjscpTZlxQFdACC0YK01xsH8IAweD0tNkub3paZBFA8yZt-B9TokkfvRmmWHjnOIPmw5aDxchby65_kEVG0mtkRfB4X17DC4oMlABDvT7f65Cu9MAsSNRUciOZE/s1600-h/concurso_mini_games.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyXa4B8iS2-XpdjSFEQjscpTZlxQFdACC0YK01xsH8IAweD0tNkub3paZBFA8yZt-B9TokkfvRmmWHjnOIPmw5aDxchby65_kEVG0mtkRfB4X17DC4oMlABDvT7f65Cu9MAsSNRUciOZE/s320/concurso_mini_games.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5304142103220188882&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Cada jogo foi avaliado por representantes do Sharpgames, da Abragames, da ROX e da Microsoft Brasil de acordo com os critérios de inovação, qualidade final e diversão.&lt;br /&gt;&lt;br /&gt;Abaixo os jogos vencedores e os links para seus downloads.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;- &lt;span style=&quot;font-weight: bold;&quot;&gt;Primeiro Lugar&lt;/span&gt; - &lt;a href=&quot;http://www.sharpgames.net/JogosDownloads/Downloads/tabid/62/selectmoduleid/416/ArticleID/1609/reftab/60/Default.aspx&quot;&gt;Mikura&lt;/a&gt;, de Rafael Valle Barradas e Luciano José Firmino Jr.&lt;br /&gt;- &lt;span style=&quot;font-weight: bold;&quot;&gt;Segundo Lugar&lt;/span&gt; - Paraquedismo, de Diego Cordeiro Barboza&lt;br /&gt;- &lt;span style=&quot;font-weight: bold;&quot;&gt;Terceiro Lugar&lt;/span&gt; - &lt;a href=&quot;http://www.sharpgames.net/JogosDownloads/Downloads/tabid/62/selectmoduleid/416/ArticleID/1610/reftab/60/Default.aspx&quot;&gt;Steam Pong&lt;/a&gt;, de Aldeir Arcanjo, Fábio Bombonato e Patryck Pabll&lt;br /&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/4720081212442802472/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/4720081212442802472' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/4720081212442802472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/4720081212442802472'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/02/resultado-do-concurso-de-mini-games.html' title='Resultado do Concurso de Mini-Games'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyXa4B8iS2-XpdjSFEQjscpTZlxQFdACC0YK01xsH8IAweD0tNkub3paZBFA8yZt-B9TokkfvRmmWHjnOIPmw5aDxchby65_kEVG0mtkRfB4X17DC4oMlABDvT7f65Cu9MAsSNRUciOZE/s72-c/concurso_mini_games.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-2007911339453445073</id><published>2009-01-21T20:16:00.004-02:00</published><updated>2009-01-21T20:28:36.218-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Dica"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>XNA Challenge Brasil - Anteriores</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Com as inscrições para o 3° XNA Challenge Brasil quase chegando ao fim, vou postar uma matéria da página do evento sobre as edições anteriores e seus vencedores. Espero que possa empolgar os interessados em participar.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.xnachallenge.com.br/EdAnteriores.aspx&quot;&gt;http://www.xnachallenge.com.br/EdAnteriores.aspx&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;font-style: italic; text-align: justify;&quot;&gt;Edições Anteriores&lt;/h2&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;   &lt;!--div style=&quot;text-align: center; margin-top: 50px;&quot;&gt;    &lt;img src=&quot;images/img_area_construcao.jpg&quot; alt=&quot;Em construção&quot; /&gt;   &lt;/div--&gt;          &lt;/div&gt;&lt;h3 style=&quot;font-style: italic; text-align: justify;&quot;&gt;Ganhador do 1º XNA Challenge – André Furtado&lt;/h3&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;        &lt;/div&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot; class=&quot;endAnt-img&quot;&gt;     &lt;input name=&quot;ctl00$CP_Main$ibGanhador1&quot; id=&quot;ctl00_CP_Main_ibGanhador1&quot; src=&quot;http://www.xnachallenge.com.br/Library/Images/ganhador_1.jpg&quot; alt=&quot;André Furtado, ganhador do 1º XNA Challenge&quot; style=&quot;border-width: 0px;&quot; type=&quot;image&quot;&gt;     &lt;div class=&quot;edAnt-ampliar&quot;&gt;Clique na imagem para ampliar&lt;/div&gt;    &lt;/div&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;        &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;O Microsoft XNA Challenge Brasil 2007 foi uma das oportunidades mais interessantes de minha trajetória profissional. Quando me inscrevi na competição, nunca havia escrito uma única linha sequer de código XNA, e decidi participar da competição assim mesmo para, na pior das hipóteses, aprender um pouco mais sobre a tecnologia. No fim das contas, o XNA me fascinou.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;     &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Utilizo-o até hoje em meu doutorado e estou considerando a equipe do XNA como um possível próximo destino para meu trabalho aqui na sede da Microsoft, em Redmond/EUA.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Na Engenharia de Software, costuma-se dizer que devemos buscar automatizar as tarefas mais rotineiras e de baixo-nível para que, ao criar um novo software, seja possível economizar tempo e investir nosso cérebro naquilo em que os humanos são realmente melhores do que as máquinas: a criatividade. Vivi isso na prática com o XNA: a facilidade de se criar um jogo completo, ou estender um já existente, foi tão grande que eu realmente pude me aventurar a fazer algo nunca antes feito: integrar reconhecimento de voz com um jogo XNA. O resultado foi o Space War Mission Commando, um jogo em que você não apenas controla sua nave com o joystick mas também dá ordens a um esquadrão aliado através de um microfone qualquer plugado no computador.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;O primeiro lugar na competição foi uma grande satisfação, especialmente pela excelente qualidade dos projetos concorrentes. Como prêmio, realizei um sonho antigo: viajar a bordo de um cruzeiro pelo Caribe. Tal evento uniu o útil ao agradável (ou seria o agradável ao agradável?): palestras sobre games intercaladas com banhos de mar nas praias do Caribe! Nos bastidores do evento, conheci um dos Program Managers da equipe do XNA da Microsoft, e fui convidado para participar do Desafio XNA 4x4 da Game Developers Conference (GDC), em São Francisco/EUA, em que fui incumbido da missão de criar um jogo XNA completo, do zero, em apenas quatro dias, programado em um cercado em um dos pavilhões principais do evento. Algo como um “Big Brother da Programação de Jogos”. Ao final, a missão foi bem sucedida e ampliei ainda mais os meus contatos e meu conhecimento sobre a tecnologia.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;        &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Assista ao vídeo abaixo e veja o jogo desenvolvido&lt;/p&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/_8G3MAD9rn0&amp;amp;hl=pt-br&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/_8G3MAD9rn0&amp;amp;hl=pt-br&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;font-style: italic; text-align: justify;&quot;&gt;Equipe Ganhadora do 2º XNA Challenge&lt;/h3&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;        &lt;/div&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot; class=&quot;endAnt-img&quot;&gt;     &lt;input name=&quot;ctl00$CP_Main$ibGanhador2&quot; id=&quot;ctl00_CP_Main_ibGanhador2&quot; src=&quot;http://www.xnachallenge.com.br/Library/Images/ganhador_2.jpg&quot; alt=&quot;Equipe ganhadora do 2º XNA Challenge&quot; style=&quot;border-width: 0px;&quot; type=&quot;image&quot;&gt;     &lt;div class=&quot;edAnt-ampliar&quot;&gt;&lt;a href=&quot;http://www.xnachallenge.com.br/EdAnteriores.aspx#&quot;&gt;Clique na imagem para ampliar&lt;/a&gt;&lt;/div&gt;    &lt;/div&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;            &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Participar do II XNA Challenge foi uma grande experiência em vários aspectos. O aprendizado na criação do jogo é maior do que muitos podem pensar. O desafio está presente desde os primeiros momentos, quando a idéia está nascendo, até os minutos finais, quando se está programando aquelas últimas linhas de código. O desafio é também trabalhar em equipe, organizar bem as tarefas, é correr contra o tempo.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Participar de um XNA Challenge já é, na pior das hipóteses, aprender muito sobre criação de games, programação, sobre gerenciamento de projetos, trabalho em equipe... que são justamente as coisas que nos farão ser bons profissionais no futuro. E lógico, é se divertir um pouco, afinal, estamos fazendo games!&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;E junto a isso, a Microsoft oferece ótimos prêmios e a oportunidade de tornar você e o seu projeto conhecido por muita gente!&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;E quanto a minha viagem para o Microsoft Academic Days, bem, isso foi uma outra experiência demais. Eu pouco havia saído do meu estado natal, de repente o meu trabalho(e da minha equipe, claro) me coloca nos Estados Unidos em um cruzeiro com uma conferência de games, e ainda deu pra conhecer o México!&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;&quot;Galera, pra mim, resolver participar de um XNA Challenge foi uma bela de uma idéia!&quot;&lt;br /&gt;  &lt;strong&gt;Vítor Antonioli&lt;/strong&gt;, integrante da equipe ganhadora do 2º XNA Challenge.&lt;/p&gt;&lt;div style=&quot;font-style: italic; text-align: justify;&quot;&gt;    &lt;/div&gt;&lt;p style=&quot;font-style: italic; text-align: justify;&quot;&gt;Assista ao vídeo abaixo e veja o jogo desenvolvido&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Ej7PgKe9Itk&amp;amp;hl=pt-br&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/Ej7PgKe9Itk&amp;amp;hl=pt-br&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Estarei torcendo para que algum de nossos leitores tenha sucesso nessa competição!&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Sorte a todos!&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/2007911339453445073/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/2007911339453445073' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2007911339453445073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2007911339453445073'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2009/01/xna-challenge-brasil-anteriores.html' title='XNA Challenge Brasil - Anteriores'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-5960790398268654192</id><published>2008-12-16T11:34:00.003-02:00</published><updated>2008-12-16T11:40:17.008-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>3º XNA Challenge Brasil</title><content type='html'>Foram prorrogadas as inscrições para o terceiro XNA Challenge Brasil.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3YFUbKd8rkRPDfO_bUPJqie7ygjLtbhHZv7yjlcIuc3Kl30xS046kPYC8qDRcTal_J3ZyIQYfBgGSEa8zfZAXUUasM-akACDUiBX7Q9K75L1q5xKI35WbiDHNmqnOMCzBOV8t35qCwwk/s1600-h/top_logo.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 68px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3YFUbKd8rkRPDfO_bUPJqie7ygjLtbhHZv7yjlcIuc3Kl30xS046kPYC8qDRcTal_J3ZyIQYfBgGSEa8zfZAXUUasM-akACDUiBX7Q9K75L1q5xKI35WbiDHNmqnOMCzBOV8t35qCwwk/s320/top_logo.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5280381734510933826&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora as inscrições podem ser feitas até o dia 31 de janeiro de 2009.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.xnachallenge.com.br/&quot;&gt;Mais informações&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/5960790398268654192/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/5960790398268654192' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5960790398268654192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5960790398268654192'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/12/3-xna-challenge-brasil.html' title='3º XNA Challenge Brasil'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3YFUbKd8rkRPDfO_bUPJqie7ygjLtbhHZv7yjlcIuc3Kl30xS046kPYC8qDRcTal_J3ZyIQYfBgGSEa8zfZAXUUasM-akACDUiBX7Q9K75L1q5xKI35WbiDHNmqnOMCzBOV8t35qCwwk/s72-c/top_logo.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-5153874434770747068</id><published>2008-12-03T20:21:00.007-02:00</published><updated>2008-12-03T20:54:38.528-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Dica"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Dúvida - Xbox Live Community Games</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;As principais dúvidas que surgiram entre nossos leitores nas ultimas semanas foi quais países podem vender seus jogos no Xbox Live Community Games e quando será possivel, nós, do Brasil, Uruguai e Portugal, vender nossos jogos também. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Desenvolvedores de quais países poderão vender seus jogos no Xbox Live Community Games?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Em seu lançamento&lt;span style=&quot;font-weight: bold;&quot;&gt;, &lt;/span&gt;somente usuários premium do creators club dos seguintes países podiam vender seus jogos pelo Xbox Live Community Games:&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Estados Unidos(claro! rs)&lt;/li&gt;&lt;li&gt;Canadá&lt;/li&gt;&lt;li&gt;Reino Unido&lt;/li&gt;&lt;li&gt;França&lt;/li&gt;&lt;li&gt;Itália&lt;/li&gt;&lt;li&gt;Suécia&lt;/li&gt;&lt;li&gt;Noruega&lt;/li&gt;&lt;li&gt;Dinamarca&lt;/li&gt;&lt;li&gt;Irlanda&lt;/li&gt;&lt;li&gt;Espanha&lt;/li&gt;&lt;li&gt;Netherlands&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy_P2oE-lh2BmOXrLw7JmBfTz-qDGJsXHhZ2bPdxMmaTniG7kr8_HSJl64Lp98t7brtSpZbJCfjKDeWhinFvQ2ZZ1phzM_BjiT7QXZvWdmQdBw-1V5TcF5lTjexbBcR5kC3sSe7RneLm0/s1600-h/xboxlivecmmgames.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 115px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy_P2oE-lh2BmOXrLw7JmBfTz-qDGJsXHhZ2bPdxMmaTniG7kr8_HSJl64Lp98t7brtSpZbJCfjKDeWhinFvQ2ZZ1phzM_BjiT7QXZvWdmQdBw-1V5TcF5lTjexbBcR5kC3sSe7RneLm0/s320/xboxlivecmmgames.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5275696179368875602&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;E nós do Brasil, Portugal, Uruguai...?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Prometeram ir expandindo o suporte e aos poquinhos irem possibilitando criadores de outros países a também vender seus jogos via o Community Games.&lt;br /&gt;&lt;br /&gt;Em menos de 1 mês de seu lançamento já trouxeram essa realidade a usuários premium do creators club de mais três países:&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Singapura&lt;/li&gt;&lt;li&gt;Australia&lt;/li&gt;&lt;li&gt;Nova Zelândia&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Provavelmente, muito em breve poderemos &quot;ganhar a vida&quot; vendendo nossos jogos feitos com o XNA Game Studio no Xbox Live Community Games.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/5153874434770747068/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/5153874434770747068' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5153874434770747068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/5153874434770747068'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/12/dvida-xbox-live-community-games.html' title='Dúvida - Xbox Live Community Games'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy_P2oE-lh2BmOXrLw7JmBfTz-qDGJsXHhZ2bPdxMmaTniG7kr8_HSJl64Lp98t7brtSpZbJCfjKDeWhinFvQ2ZZ1phzM_BjiT7QXZvWdmQdBw-1V5TcF5lTjexbBcR5kC3sSe7RneLm0/s72-c/xboxlivecmmgames.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-3892337704285491616</id><published>2008-12-03T19:54:00.005-02:00</published><updated>2008-12-03T20:59:33.002-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Concurso de Mini-Games</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Foram prorrogadas as inscrições para o primeiro concurso de mini-games da revista oficial do Xbox360 no Brasil.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhntQHqvAezuIvewbWRUP-OgXk1w_SSItYLJSC-Fl-sFbBQ5Op2fTdSzOHU69i1aJ59JPsgMgknaTfkwoHVoR31TIzIIAgBPrNxWroUHv7aBKytH_5wpYd-WAu86YIny8CBZ2bLW5XQ3N8/s1600-h/concurso_mini_games.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhntQHqvAezuIvewbWRUP-OgXk1w_SSItYLJSC-Fl-sFbBQ5Op2fTdSzOHU69i1aJ59JPsgMgknaTfkwoHVoR31TIzIIAgBPrNxWroUHv7aBKytH_5wpYd-WAu86YIny8CBZ2bLW5XQ3N8/s320/concurso_mini_games.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5275686609009188162&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Agora as inscrições podem ser feitas até o dia 15 de janeiro de 2009. Alteração realizada para possibilitar a participação de diversos estudantes que entram de férias, agora, no final do ano.&lt;br /&gt;&lt;br /&gt;Alguns dos prêmios também foram divulgados:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1o lugar&lt;/span&gt;: Visual Studio 2008, Controller do Xbox360 sem fio, assinatura da revista Xbox360 e o livro &quot;Beggining XNA 2.0 Game Programming - From Novice To Professional&quot;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2o lugar:&lt;/span&gt; Jogo do Xbox360, Webcam e o livro &quot;Beggining XNA 2.0 Game Programming - From Novice To Professional&quot;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;3o lugar:&lt;/span&gt; Jogo do Xbox360&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mais informações e o regulamento completo em: &lt;a href=&quot;http://www.sharpgames.net/concursoROX/&quot;&gt;http://www.sharpgames.net/concursoROX/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/3892337704285491616/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/3892337704285491616' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3892337704285491616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3892337704285491616'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/12/concurso-de-mini-games.html' title='Concurso de Mini-Games'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhntQHqvAezuIvewbWRUP-OgXk1w_SSItYLJSC-Fl-sFbBQ5Op2fTdSzOHU69i1aJ59JPsgMgknaTfkwoHVoR31TIzIIAgBPrNxWroUHv7aBKytH_5wpYd-WAu86YIny8CBZ2bLW5XQ3N8/s72-c/concurso_mini_games.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-2016572487827183195</id><published>2008-11-18T15:14:00.004-02:00</published><updated>2008-12-03T20:53:19.615-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Errata"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Errata - Nosso Primeiro Jogo 2D - Parte 4</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Algumas imagens da Parte 4 do Nosso Primeiro Jogo 2D estavam erradas mas já foram consertadas.&lt;br /&gt;&lt;br /&gt;Gostaria de agradecer ao José Roberto e ao Gilton pelo alerta do erro que passou despercebido. Acabei consertando o meu projeto mas esquecendo de atualizar as imagens do blog.&lt;br /&gt;&lt;br /&gt;Agora tudo já está em seu devido lugar. As imagens que encontravam-se erradas eram as img_35.jpg e img_36.jpg. Em ambas faltava a exclamação que negava a condicional, ou seja, se os aviões &lt;span style=&quot;font-weight: bold;&quot;&gt;não&lt;/span&gt; estivessem no retangulo que representa a tela eles deveriam ser considerados &quot;mortos&quot;.&lt;br /&gt;&lt;br /&gt;Aqui abaixo também estão as imagens corrigidas:&lt;br /&gt;&lt;br /&gt;img_35&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieNHkleVlU75DlHcNf-NIMz0QFpOcni_ZexNmJeHXyizzG-x3jbwW_etQ9rFOXMin6Qgi0ZBmo2TTgTreZX-nwErc1RREfLsVqeF0ko5VwxaURDudJWqQyH3vlLbQYgQmPyY1egZptpTA/s1600-h/img_35.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 156px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieNHkleVlU75DlHcNf-NIMz0QFpOcni_ZexNmJeHXyizzG-x3jbwW_etQ9rFOXMin6Qgi0ZBmo2TTgTreZX-nwErc1RREfLsVqeF0ko5VwxaURDudJWqQyH3vlLbQYgQmPyY1egZptpTA/s320/img_35.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5270052697250141682&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;img_36&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDxIDfS_WLBsu6XcXPprE_yu3tc2EvVlPhUmTbgtJajNq4qh8zffhit3QFEMgmGireOF33p9lKD_q3T2IZ1_NaxMZf3FmX2BVpxXW7UNZpWjjCxk3gyNgA_5C1i8WM3F8Ieb5h7GCUayw/s1600-h/img_36.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 262px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDxIDfS_WLBsu6XcXPprE_yu3tc2EvVlPhUmTbgtJajNq4qh8zffhit3QFEMgmGireOF33p9lKD_q3T2IZ1_NaxMZf3FmX2BVpxXW7UNZpWjjCxk3gyNgA_5C1i8WM3F8Ieb5h7GCUayw/s320/img_36.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5270052812758198946&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Gostaria de pedir desculpas a todos que acompanham o blog e meus tutoriais pelo ocorrido.&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Leo Camello&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/2016572487827183195/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/2016572487827183195' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2016572487827183195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2016572487827183195'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/11/errata-nosso-primeiro-jogo-2d-parte-4.html' title='Errata - Nosso Primeiro Jogo 2D - Parte 4'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieNHkleVlU75DlHcNf-NIMz0QFpOcni_ZexNmJeHXyizzG-x3jbwW_etQ9rFOXMin6Qgi0ZBmo2TTgTreZX-nwErc1RREfLsVqeF0ko5VwxaURDudJWqQyH3vlLbQYgQmPyY1egZptpTA/s72-c/img_35.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-3319355914445038459</id><published>2008-11-18T10:51:00.004-02:00</published><updated>2008-12-03T20:57:17.420-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Concurso de Mini-Games</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;A revista oficial do Xbox360 no Brasil está lançando seu primeiro concurso de mini-games com o apoio da SharpGames e da Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz2l4srotaIjmH1rD6TRnS7-TwpTwYj26PI802187dL7OJvuCYEA7wXXKjLBZdrZ01Nqi4KRzCslE_XWFcZoK7crgnbj8Ea5t260aMwZUywhcTLXDRymUXZp-QYDv8tyqQxp9kGItPJFA/s1600-h/concurso_mini_games.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz2l4srotaIjmH1rD6TRnS7-TwpTwYj26PI802187dL7OJvuCYEA7wXXKjLBZdrZ01Nqi4KRzCslE_XWFcZoK7crgnbj8Ea5t260aMwZUywhcTLXDRymUXZp-QYDv8tyqQxp9kGItPJFA/s320/concurso_mini_games.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5269980497314041666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;O objetivo do concurso é criar um mini-game com no máximo 100 linhas de código utilizando o XNA Game Studio que deve ser submetido ao site do concurso até o dia 30 de novembro de 2008.&lt;br /&gt;&lt;br /&gt;A divulgação dos vencedores será feita na Revista Oficial do Xbox360 em janeiro de 2009.&lt;br /&gt;&lt;br /&gt;Mais informações e o regulamento completo em &lt;a href=&quot;http://www.sharpgames.net/concursoROX/&quot;&gt;http://www.sharpgames.net/concursoROX/&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/3319355914445038459/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/3319355914445038459' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3319355914445038459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3319355914445038459'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/11/concurso-de-mini-games.html' title='Concurso de Mini-Games'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz2l4srotaIjmH1rD6TRnS7-TwpTwYj26PI802187dL7OJvuCYEA7wXXKjLBZdrZ01Nqi4KRzCslE_XWFcZoK7crgnbj8Ea5t260aMwZUywhcTLXDRymUXZp-QYDv8tyqQxp9kGItPJFA/s72-c/concurso_mini_games.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-3416064876967622924</id><published>2008-11-12T12:24:00.004-02:00</published><updated>2008-11-12T13:07:01.745-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><title type='text'>Xbox LIVE Community Games - O que é?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Neste post farei uma breve introdução ao que é o Xbox LIVE Community Games.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Xbox LIVE Community Games&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora, os jogos que fizermos, podem ser jogados por milhões de jogadores no Xbox LIVE e ainda podemos receber em dinheiro por isso.&lt;br /&gt;A partir do dia 19 de novembro de 2008, jogos feitos com o XNA Game Studio, após serem revisados e aprovados, podem ser vendidos via Xbox LIVE.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEByjUaeOMMpULxf8zwKRb77ZSa3Zronp_M3afc2JHYmPEwIpjJ2J0-0WYbWS4XrQA4NgQkqVTzETvZqc_AW39CQ6SjcftOF3IRBEU_ZZF2gLiC4Cl8MzUCKMnltoau5vNX3uGV-NWdJY/s1600-h/xboxlivecmmgames.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 115px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEByjUaeOMMpULxf8zwKRb77ZSa3Zronp_M3afc2JHYmPEwIpjJ2J0-0WYbWS4XrQA4NgQkqVTzETvZqc_AW39CQ6SjcftOF3IRBEU_ZZF2gLiC4Cl8MzUCKMnltoau5vNX3uGV-NWdJY/s320/xboxlivecmmgames.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5267781019532075858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Como isso Funciona?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sendo um usuário Premuim do XNA Creators Club, será possível submeter qualquer jogo completo de Xbox360 que você criar no XNA Game Studio a comunidade do Creators Club para revisão. Outros usuários Premium irão avaliar seu jogo para certificar de que ele é seguro de jogar. Se tudo correr bem e seu jogo for aprovado, você poderá definir um preço para ele entre 200 e 800 pontos que as pessoas pagarão para baixar seu jogo no Xbox LIVE Marketplace.&lt;br /&gt;&lt;br /&gt;Dessa maneira você pode receber em dinheiro até 70% da areecadação do seu próprio jogo e dependendo do sucesso dele ainda poderá aparecer em evidencia no Xbox360 e em propriedades online da Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/3416064876967622924/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/3416064876967622924' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3416064876967622924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3416064876967622924'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/11/xbox-live-community-games-o-que.html' title='Xbox LIVE Community Games - O que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEByjUaeOMMpULxf8zwKRb77ZSa3Zronp_M3afc2JHYmPEwIpjJ2J0-0WYbWS4XrQA4NgQkqVTzETvZqc_AW39CQ6SjcftOF3IRBEU_ZZF2gLiC4Cl8MzUCKMnltoau5vNX3uGV-NWdJY/s72-c/xboxlivecmmgames.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-7271673892909893730</id><published>2008-11-06T15:06:00.013-02:00</published><updated>2008-11-18T15:02:44.541-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 4</title><content type='html'>Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos videos Begginers Guide 2D encontrados no site creators.xna.com.&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Esta é a quarta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio. Aqui veremos como criar as aeronaves inimigas para que apareçam em posições randomicas do canto direito da tela.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Adicionando e Inicializando as Variáveis Relacionadas as Aeronaves&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora vamos então começar a trabalhar para colocarmos os inimigos no nosso jogo. No arquivo &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt;, na classe &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1&lt;/span&gt;, abaixo de onde declaramos as variáveis &lt;span style=&quot;font-weight: bold;&quot;&gt;previousgamepadstate&lt;/span&gt; e &lt;span style=&quot;font-weight: bold;&quot;&gt;previouskeyboardstate&lt;/span&gt; iremos declarar mais uma série de variáveis ligadas as aeronaves inimigas. Assim como fizemos com os mísseis, os inimigos também terão um número máximo e um array, mas além disso teremos as velocidades mínima e máxima possiveis a uma aeronave inimiga, e a altura mínima e máxima onde é possível um inimigo aparecer. Teremos também uma variável que gerará um valor randomico para nós sempre que precisarmos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJnklo_bMiobu_Ru2UcM7s1t85d33onV414I80mHJfjLeqSrtOtL6EE7TDympZDiow5rOJReLpt9a_CSl9uMT2ovCe4DyickUsO2sqaQSzdM34zFDcuchR69ny-1N88z0FbggGmbHT3sA/s1600-h/img_32.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 190px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJnklo_bMiobu_Ru2UcM7s1t85d33onV414I80mHJfjLeqSrtOtL6EE7TDympZDiow5rOJReLpt9a_CSl9uMT2ovCe4DyickUsO2sqaQSzdM34zFDcuchR69ny-1N88z0FbggGmbHT3sA/s320/img_32.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265595850726270066&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Assim como fizemos com os mísseis, temos que inicializar nosso array de inimigos. Vamos então ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;LoadContent()&lt;/span&gt; e abaixo do&lt;span style=&quot;font-weight: bold;&quot;&gt; for&lt;/span&gt; onde inicializamos nosso array de mísseis vamos instanciar nosso array de inimigos e inicializar cada posição desse array com o uso de um loop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTbGRG_ghIJSWfEDUjuP1GVppEfh29keHMPIV9kkoFES3BViiWEJCofp5QcecmCBaGltEnC21AXjqtG2yxW1j3cuxwStOM8iKj_22dLze2cUzEYtarQw40xiktlpk8JAeGdOMMmz6baFs/s1600-h/img_33.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTbGRG_ghIJSWfEDUjuP1GVppEfh29keHMPIV9kkoFES3BViiWEJCofp5QcecmCBaGltEnC21AXjqtG2yxW1j3cuxwStOM8iKj_22dLze2cUzEYtarQw40xiktlpk8JAeGdOMMmz6baFs/s320/img_33.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265596082948796978&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;Atualizando as Aeronaves Inimigas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois de inicializar nossos inimigos vamos então ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;Update()&lt;/span&gt; e abaixo da chamada ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt; vamos fazer outra chamada, só que agora ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateEnemyPlanes()&lt;/span&gt;. Como fizemos no caso dos mísseis, esse método ainda não existe e teremos que implementa-lo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwPJ2Vz_4-_oDkuxArIb2Xir9wZa1ifvGdi70-Ds3xZX_-rDxnXQjxxXkW5MxTPyTBXz_GXQb9lzMocIMfnqXjXTfEQR04Kvrx4wXDRobOuGkLBMz1aml44DGwh64HPzDaUz2bFEZ62Fo/s1600-h/img_34.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 75px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwPJ2Vz_4-_oDkuxArIb2Xir9wZa1ifvGdi70-Ds3xZX_-rDxnXQjxxXkW5MxTPyTBXz_GXQb9lzMocIMfnqXjXTfEQR04Kvrx4wXDRobOuGkLBMz1aml44DGwh64HPzDaUz2bFEZ62Fo/s320/img_34.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265596787203912642&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Para criar o nosso método vamos ao final do método &lt;span style=&quot;font-weight: bold;&quot;&gt;Update() &lt;/span&gt;e depois da chave que termina esse método vamos implementar o nosso método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateEnemyPlanes()&lt;/span&gt;. Esse método irá &quot;matar&quot; as aeronaves inimigas assim que elas forem saindo da tela para que novas aeronaves possam ser desenhadas na tela.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmdwXmEQv3oHlrzNQipmE45V70zpxU3cgm5CvkSUdxHOMeNWGbH41ga9DPVvAqKPFelHo1dfjNFJVW0jc-so9OIVwFgHTTM2QG4DgKe7F6vWZ0sTQYYU-i8VlZ_S9OzIx3oT9ZBAZ0CA/s1600-h/img_35.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 156px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmdwXmEQv3oHlrzNQipmE45V70zpxU3cgm5CvkSUdxHOMeNWGbH41ga9DPVvAqKPFelHo1dfjNFJVW0jc-so9OIVwFgHTTM2QG4DgKe7F6vWZ0sTQYYU-i8VlZ_S9OzIx3oT9ZBAZ0CA/s320/img_35.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5270042816166357186&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Ainda estamos considerando apenas o caso de a aeronave inimiga &quot;morrer&quot; por sair da tela para redesenha-las. Assim ainda no método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateEnemyPlanes()&lt;/span&gt; utilizaremos um bloco &lt;span style=&quot;font-weight: bold;&quot;&gt;else&lt;/span&gt; logo após o bloco&lt;span style=&quot;font-weight: bold;&quot;&gt; if&lt;/span&gt; em que checamos se o inimigo está &quot;vivo&quot;. Nesse bloco tornaremos o inimigo vivo de novo e faremos ele nascer em uma nova posição aleatória e com uma nova velocidade aleatória.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbzcTslocNvnoUro6xfthOwa04lmiSOEkcK8GkglkhvRikat_5JhDPXqBZxl-h9FlW_E5Z4x13jw3OhKyPZaE4sa4YFRcx5SwAXTXg1JUAOpfA_95NaPE057o2VWF4XdL1eeSdWv2irNU/s1600-h/img_36.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 262px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbzcTslocNvnoUro6xfthOwa04lmiSOEkcK8GkglkhvRikat_5JhDPXqBZxl-h9FlW_E5Z4x13jw3OhKyPZaE4sa4YFRcx5SwAXTXg1JUAOpfA_95NaPE057o2VWF4XdL1eeSdWv2irNU/s320/img_36.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5270043675180422178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;Desenhando e Alterando o Tamanho dos Inimigos na Tela&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora já podemos desenhar as aeronaves inimigas na tela. Usaremos um overload do método &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw&lt;/span&gt; do &lt;span style=&quot;font-weight: bold;&quot;&gt;SpriteBatch&lt;/span&gt; que nos possibilide alterar a escala da nossa Sprite visto que se desenhassemos a imagem original as aeronaves ficariam muito maiores que o resto dos objetos do jogo e não ficaria tão legal o visual do nosso jogo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjXEvjFMUBobRZJfaZer1NgVDstWnvncpMiAl2OYIRXPqKNiq6vZBtaRKwcKxB-kRxdPqSkd7cK4oaarSSbT_UCp8nZOxisUeUqDZyM3ATBd5qwyvG3EB594kbYN1C89duknSUCuAl5fU/s1600-h/img_37.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 90px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjXEvjFMUBobRZJfaZer1NgVDstWnvncpMiAl2OYIRXPqKNiq6vZBtaRKwcKxB-kRxdPqSkd7cK4oaarSSbT_UCp8nZOxisUeUqDZyM3ATBd5qwyvG3EB594kbYN1C89duknSUCuAl5fU/s320/img_37.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265601543087940866&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Se não nos esquecemos de nenhum detalhe podemos rodar nosso jogo e teremos aeronaves se movimentando da direita para a esquerda a alturas e velocidades aleatórias.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0dNdo0ZtpktA1qRBuP94LuC5SCcVCfvcXh1osjq50pXeYYzkilOl1PKrM0LukvZ6veqD5PArbAvz7aofoVVjJZXp50qREL4lMBWzQ4aMfCnegsvveiEJL8P1D_-imhuaqiQCaHWsf0LE/s1600-h/img_38.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0dNdo0ZtpktA1qRBuP94LuC5SCcVCfvcXh1osjq50pXeYYzkilOl1PKrM0LukvZ6veqD5PArbAvz7aofoVVjJZXp50qREL4lMBWzQ4aMfCnegsvveiEJL8P1D_-imhuaqiQCaHWsf0LE/s320/img_38.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265601872100872994&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;Resumo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesta quarta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio vimos como criar e desenhar as aeronaves inimigas na tela em posições e com velocidades aleatórias e também mudando seu tamanho ao desenha-las.&lt;br /&gt;&lt;br /&gt;Na quinta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio veremos a  destruição das aeronaves inimigas devido colisão dos nossos mísseis com as mesmas e também como manter e visualizar a pontuação em nosso jogo.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/7271673892909893730/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/7271673892909893730' title='13 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7271673892909893730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7271673892909893730'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/11/tutorial-nosso-primeiro-jogo-2d-parte-4.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 4'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJnklo_bMiobu_Ru2UcM7s1t85d33onV414I80mHJfjLeqSrtOtL6EE7TDympZDiow5rOJReLpt9a_CSl9uMT2ovCe4DyickUsO2sqaQSzdM34zFDcuchR69ny-1N88z0FbggGmbHT3sA/s72-c/img_32.jpg" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-7688383240314696584</id><published>2008-11-03T22:53:00.007-02:00</published><updated>2008-11-03T23:33:57.735-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA Game Studio 3.0"/><title type='text'>Novidade - XNA Game Studio 3.0</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Já está disponível para download a versão 3.0 do XNA Game Studio.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdbvjqWx_N34wdmsnTiQHd8SP6PyT4HE-TWgAtB8h5UAF4bM7FsXhOiwlsm7D1H3JKOT89KX1vgirKigwh_MMpl189vvNytNV-GhSQpcf0FJVbOWhGsmFp1Ga_C7hujuU_BYMQHOttfio/s1600-h/xna3.0.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 199px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdbvjqWx_N34wdmsnTiQHd8SP6PyT4HE-TWgAtB8h5UAF4bM7FsXhOiwlsm7D1H3JKOT89KX1vgirKigwh_MMpl189vvNytNV-GhSQpcf0FJVbOWhGsmFp1Ga_C7hujuU_BYMQHOttfio/s320/xna3.0.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5264609377086577842&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;- &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyId=7D70D6ED-1EDD-4852-9883-9A33C0AD8FEE&amp;amp;displaylang=en&quot;&gt;XNA Game Studio 3.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Essa nova versão traz diversas novas funcionalidades que continuam facilitando o desenvolvimento de jogos para PC(Windows), Xbox360 e agora também a possibilidade de desenvolver para o Microsoft Zune.&lt;br /&gt;&lt;br /&gt;Outro aspecto que chama bastante atenção e que foi lançado junto a essa nova versão é a distribuição dos jogos por meio do &lt;a href=&quot;http://creators.xna.com/en-US/XboxLIVECommunityGames&quot;&gt;Xbox Live Community Games&lt;/a&gt; no Xbox360 o que transforma em realidade a possibilidade de os usuários do Xbox Live verem, comprarem e jogarem jogos que você criou, desde que você seja um membro Premium do XNA Creators Club.&lt;br /&gt;&lt;br /&gt;Algumas novidades bem interessantes nessa versão 3.0 do XNA Game Studio:&lt;br /&gt;&lt;br /&gt;  - Experimente antes de comprar: Agora pode-se criar um modo trial no jogo que criamos, o que possibilita aos jogadores experimentarem nosso jogo antes de realizar a compra.&lt;br /&gt;&lt;br /&gt;  - Convidar amigos: Podemos colocar nos jogos multiplayer do Xbox Live que criarmos uma opção para que os jogadores convidem, de dentro do jogo, seus amigos para jogarem juntos.&lt;br /&gt;&lt;br /&gt;  - Integração com o Visual Studio: A versão 3.0 do XNA Game Studio tem suporte ao C# 3.0, LINQ e a maioria das versões do Visual Studio 2008 o que facilita ainda mais a vida do desenvolvedor.&lt;br /&gt;&lt;br /&gt;As principais diferenças entre a versão 2.0 e a versão 3.0 do XNA Game Studio podem ser encontradas &lt;a href=&quot;http://creators.xna.com/en-US/article/xna3.0whatsnew&quot;&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O XNA Game Studio 3.0 é requesito para a subimissão de jogos para o Xbox Live Community Games.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/7688383240314696584/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/7688383240314696584' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7688383240314696584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7688383240314696584'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/11/novidade-xna-game-studio-30.html' title='Novidade - XNA Game Studio 3.0'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdbvjqWx_N34wdmsnTiQHd8SP6PyT4HE-TWgAtB8h5UAF4bM7FsXhOiwlsm7D1H3JKOT89KX1vgirKigwh_MMpl189vvNytNV-GhSQpcf0FJVbOWhGsmFp1Ga_C7hujuU_BYMQHOttfio/s72-c/xna3.0.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-2405040466411780438</id><published>2008-10-28T16:15:00.001-02:00</published><updated>2008-11-03T23:37:22.698-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2D"/><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Jogo"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 3</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos videos &lt;span style=&quot;font-weight: bold;&quot;&gt;Begginers Guide 2D&lt;/span&gt; encontrados no site &lt;span style=&quot;font-weight: bold;&quot;&gt;creators.xna.com&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Esta é a terceira parte do nosso tutorial de &lt;span&gt;como criar um jogo 2D com o XNA Game Studio.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;Aqui veremos como criar e desenhar os mísseis que o canhão do nosso navio irá disparar para acertar as aeronaves inimigas. Veremos também o conceito de array, como declarar uma constante e alguns tipos de loop que a linguagem C# nos oferece.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Adicionando e Inicializando Mais Algumas Variáveis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para a criação dos mísseis que o nosso canhão irá disparar contra as aeronaves inimigas teremos que adicionar novas variáveis a nossa classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject, &lt;/span&gt;no arquivo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.cs. &lt;/span&gt;Se esse arquivo não estiver aberto, dê um duplo clique nele no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer.&lt;/span&gt; Uma das variáveis que iremos adicionar é do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Vector2&lt;/span&gt; e a chamaremos de &lt;span style=&quot;font-weight: bold;&quot;&gt;velocity&lt;/span&gt;, ela tem o objetivo de armazenar a velocidade do deslocamento do míssil disparado. A segunda variável que iremos adicionar será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;bool&lt;/span&gt; e a chamaremos de &lt;span style=&quot;font-weight: bold;&quot;&gt;alive&lt;/span&gt;, sua função é identificar se o missil ainda está &quot;vivo&quot;, ou seja, se ele ainda pode ser vusualizado em nossa tela.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;file:///C:/Documents%20and%20Settings/Leocamello/Desktop/XNA%20GAME%20STUDIO/Blogger/Belonave/Tutorial/img_20.jpg&quot; alt=&quot;&quot; /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwMmAsxsapLu6TmXdLE8pOF5JoDp4SswjORsdNKBJWBW3lSRtOpe2EfN507wR6JJPXfe62C1b0NNBrS4zKP2x9Isnk2YX2vdxDIredscg5r2KOHJUPbMSKj3HTpglpHB5yGzjdquD49LY/s1600-h/img_20.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwMmAsxsapLu6TmXdLE8pOF5JoDp4SswjORsdNKBJWBW3lSRtOpe2EfN507wR6JJPXfe62C1b0NNBrS4zKP2x9Isnk2YX2vdxDIredscg5r2KOHJUPbMSKj3HTpglpHB5yGzjdquD49LY/s320/img_20.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255719158526197698&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Como fizemos com nossas outras variáveis, vamos inicializa-las no construtor da nossa classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.&lt;/span&gt; Logo abaixo da inicialização da nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;center&lt;/span&gt;, vamos inicializar nossas variáveis &lt;span style=&quot;font-weight: bold;&quot;&gt;velocity &lt;/span&gt;e depois a nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;alive.&lt;/span&gt; Como tanto o missil como o canhão são objetos do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject&lt;/span&gt; devemos ter o cuidado de inicializar as variáveis com valores &quot;neutros&quot; que não causem nenhum efeito indesejável no jogo e podemos muda-las mais adiante, fora da classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject,&lt;/span&gt; pelo objeto a que pertence. Iremos inicializar a nossa  variável &lt;span style=&quot;font-weight: bold;&quot;&gt;velocity &lt;/span&gt;como um vetor &lt;span style=&quot;font-weight: bold;&quot;&gt;Zero&lt;/span&gt; e nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;alive&lt;/span&gt; com o valor &lt;span style=&quot;font-weight: bold;&quot;&gt;false.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUO0y1SMN0JpsFaJd-LW8ENtl7-bIJsKVsrmhqcaBJH5QlEanTc834PtHUZMvE9pdP5KaLyBMU-or1IKfDgtingcHSFqiZdRYdMPczH-J1jUYbINKwB57uiJxnY9hov0u8ayGTFdJeDJM/s1600-h/img_21.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUO0y1SMN0JpsFaJd-LW8ENtl7-bIJsKVsrmhqcaBJH5QlEanTc834PtHUZMvE9pdP5KaLyBMU-or1IKfDgtingcHSFqiZdRYdMPczH-J1jUYbINKwB57uiJxnY9hov0u8ayGTFdJeDJM/s320/img_21.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255721043225546418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Instanciando e Carregando Nossos Mísseis&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Agora poderemos voltar ao nosso arquivo &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt; e declarar na classe &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1&lt;/span&gt;, uma constante do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;int &lt;/span&gt;e de nome &lt;span style=&quot;font-weight: bold;&quot;&gt;maxCannonMissiles&lt;/span&gt;, que indicará o número máximo de mísseis que poderão aparecer na tela ao mesmo tempo, e um array &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject[]&lt;/span&gt; de nome &lt;span style=&quot;font-weight: bold;&quot;&gt;cannonMissiles&lt;/span&gt;, que conterá nossos mísseis. Ao declararmos uma constante usamos antes de seu tipo a palavra reservada &lt;span style=&quot;font-weight: bold;&quot;&gt;const&lt;/span&gt; que caso por engano tentemos mudar o valor dessa constante durante a codificação do nosso jogo nos proporcionará erros. O tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject[] &lt;/span&gt;indica um array que nada mais é do que um conjunto de elementos do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject&lt;/span&gt; organizados de forma sequencial e que podem ser acessados por um indice.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijNB7yav9LeP1KcmUhyphenhyphenzmXX-BoiXfYrJCCLD2JOszY1lbkvZ70wO8dKXkk9yMnomOynrH_Cofg7H0pbPMQzGzQWMCxkFJgFm2w5nFHcPh4pXQWK-LFrHdmsJ-gNOT-Gokog5IJ4rSKfyc/s1600-h/img_22.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijNB7yav9LeP1KcmUhyphenhyphenzmXX-BoiXfYrJCCLD2JOszY1lbkvZ70wO8dKXkk9yMnomOynrH_Cofg7H0pbPMQzGzQWMCxkFJgFm2w5nFHcPh4pXQWK-LFrHdmsJ-gNOT-Gokog5IJ4rSKfyc/s320/img_22.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255724471534753218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Depois disso vamos até o método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void LoadContent()&lt;/span&gt; e abaixo de onde inicializamos a posição do nosso canhão vamos instanciar nosso array de mísseis. Esse array terá tamanho &lt;span style=&quot;font-weight: bold;&quot;&gt;maxCannonMissiles&lt;/span&gt;. Logo abaixo inicializaremos cada missil utilizando um loop para percorrer o array do início ao fim. Para aqueles que não conhecem, o loop &lt;span style=&quot;font-weight: bold;&quot;&gt;for(,,) &lt;/span&gt;funciona da seguinte forma. Fornecemos a ele um inteiro que usaremos como contador que geralmente é o &lt;span style=&quot;font-weight: bold;&quot;&gt;i&lt;/span&gt;, depois ele compara o contador com uma condição, que no nosso caso o loop vai acontecer enquanto &lt;span style=&quot;font-weight: bold;&quot;&gt;i&lt;/span&gt; for menor que o tamanho do nosso array, e em seguida realizamos um incremento ou decremento do contador, no nosso caso o incrementamos fazendo &lt;span style=&quot;font-weight: bold;&quot;&gt;i++. &lt;/span&gt;Quando a condição se torna falsa, no nosso caso quando &lt;span style=&quot;font-weight: bold;&quot;&gt;i&lt;/span&gt; for maior ou igual ao tamanho do array o loop é quebrado. Dentro do nosso &lt;span style=&quot;font-weight: bold;&quot;&gt;for&lt;/span&gt; vamos inicializando cada elemento do array pelo seu indice &lt;span style=&quot;font-weight: bold;&quot;&gt;cannonMissiles[i]&lt;/span&gt; sabendo que o &lt;span style=&quot;font-weight: bold;&quot;&gt;i&lt;/span&gt; vai variando de 0 até o tamanho do nosso array.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtexDIwgnKmdXvBFiOQje6BofMcRYxryL2VueFFNwlvjXBg-GjttmJy3682duK0j101atjAy-dvnGHD1Y6UAWNrD39L01SZ127fuZSzTPQ12CIyncWiw5HJ4uYv0RrHBMb61XeiaUjiog/s1600-h/img_23.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtexDIwgnKmdXvBFiOQje6BofMcRYxryL2VueFFNwlvjXBg-GjttmJy3682duK0j101atjAy-dvnGHD1Y6UAWNrD39L01SZ127fuZSzTPQ12CIyncWiw5HJ4uYv0RrHBMb61XeiaUjiog/s320/img_23.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255727752865760114&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Atualizando Misseis, Tratando Entradas e Disparos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Tendo instanciado e inicializado nosso array e nossos misseis podemos ir ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Update(GameTime gameTime) &lt;/span&gt;e dentro dele chamaremos o método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles() &lt;/span&gt;logo abaixo do trecho de código onde limitamos a rotação do nosso canhão e acima do &lt;span style=&quot;font-weight: bold;&quot;&gt; base.Update(gameTime).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw61KeZMMLB8jJ38vMAxsJ1rUM_lnAxBrmXmXX6F2xvKi0T0cpjWhYMsb6fyO0WxT_uNeDOawe0FQb-teGVcRPZg8wgeHjBwXB0RAUivk4re1Tk3TY9ZukPselkce6lgMeLMf5Ooh4_9k/s1600-h/img_24.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw61KeZMMLB8jJ38vMAxsJ1rUM_lnAxBrmXmXX6F2xvKi0T0cpjWhYMsb6fyO0WxT_uNeDOawe0FQb-teGVcRPZg8wgeHjBwXB0RAUivk4re1Tk3TY9ZukPselkce6lgMeLMf5Ooh4_9k/s320/img_24.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255729528748990738&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;O método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt; ainda não existe e nós iremos implementá-lo. Nele faremos a atualização da posição de nossos mísseis. Então, no final do método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Update(GameTime gameTime)&lt;/span&gt;, abaixo da chave que indica seu fim, iremos implementar nosso método. Utilizaremos o loop &lt;span style=&quot;font-weight: bold;&quot;&gt;foreach() &lt;/span&gt;que percorre todos os elementos do nosso array sem necessitarmos de um contador. A diferença entre ele e o loop &lt;span style=&quot;font-weight: bold;&quot;&gt;for(,,) &lt;/span&gt;é que o &lt;span style=&quot;font-weight: bold;&quot;&gt;foreach() &lt;/span&gt;incondicionalmente percorre o array do início ao fim e no &lt;span style=&quot;font-weight: bold;&quot;&gt;for(,,) &lt;/span&gt;podemos estabelecer uma condição de parada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmI25l4KMbG6ZAyo7XJQJhSfwLL1gqDqkIXAmb3Rbhu5f_q9Z-EUZJDtzleXioRU0AKLEI8btTcblgZe1q_lqfdzwUvHLYCcmV6QSD3tEiB53elH2MnOhmmSF181ad5-B6jqIpjCdF3B4/s1600-h/img_25.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmI25l4KMbG6ZAyo7XJQJhSfwLL1gqDqkIXAmb3Rbhu5f_q9Z-EUZJDtzleXioRU0AKLEI8btTcblgZe1q_lqfdzwUvHLYCcmV6QSD3tEiB53elH2MnOhmmSF181ad5-B6jqIpjCdF3B4/s320/img_25.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255731802267368786&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Temos que criar também o método que irá disparar nossos mísseis. Para isso necessitamos de mais duas variáveis na classe &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1&lt;/span&gt; e iremos declara-las logo abaixo de onde declaramos nosso array &lt;span style=&quot;font-weight: bold;&quot;&gt;cannonMissiles. &lt;/span&gt;Essas variáveis que iremos declarar são do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;GamePadState &lt;/span&gt;e &lt;span style=&quot;font-weight: bold;&quot;&gt;KeyboardState&lt;/span&gt; e usaremos elas para guardar o ultimo estado em que o controle do xbox360 ou o teclado se encontravam a cada quadro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXef26X6irWHbEzXmVcOhyF0tE23KSBM-9aS8xyPXOlPBaE9njrG1uDEaiCfNH7rutJItsFQjiGMkLf27WfWCHz7fraF-r2fo3v9F95OCjY8sllgc1K9t6PUGIxhXcxnalrfZBe_T2IvI/s1600-h/img_26.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXef26X6irWHbEzXmVcOhyF0tE23KSBM-9aS8xyPXOlPBaE9njrG1uDEaiCfNH7rutJItsFQjiGMkLf27WfWCHz7fraF-r2fo3v9F95OCjY8sllgc1K9t6PUGIxhXcxnalrfZBe_T2IvI/s320/img_26.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255733047153610338&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Podemos voltar ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Update(GameTime gameTime)&lt;/span&gt; e logo abaixo de onde limitamos a rotação do canhão e acima do método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles() &lt;/span&gt;vamos checar se o jogador pressionou o botão A do controle do xbox360 ou a barra de espaço do teclado. Para que fique mais interessante, vamos impedir que hajam disparos continuos caso o jogador mantenha pressionado qualquer um desses botões checando se o estado anterior do botão A do controle do xbox360 ou a barra de espaço era &quot;não pressionado&quot;. Caso ele pressione qualquer um desses botões de disparo chamaremos a função &lt;span style=&quot;font-weight: bold;&quot;&gt;FireCannonMissile() &lt;/span&gt;que realizará o disparo do missil. Devemos também ao final de tudo atualizar o valor das nossas variáveis de estado do controle e do teclado para que funcionem corretamente a cada quadro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6QPMLUsbddmsqZjCf5uhIASxl5OzUc3LhQ3Xvq6xEfZ-t1E3Nl79O6DvVxmEe1EMUlaFVdCBRhvWEowkYirsNmKMSoTDrdfDsFRkCiStdZXMNdPv5EM17HtG3woWME03iC38dbhqZr0s/s1600-h/img_27.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6QPMLUsbddmsqZjCf5uhIASxl5OzUc3LhQ3Xvq6xEfZ-t1E3Nl79O6DvVxmEe1EMUlaFVdCBRhvWEowkYirsNmKMSoTDrdfDsFRkCiStdZXMNdPv5EM17HtG3woWME03iC38dbhqZr0s/s320/img_27.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255736079167011922&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Vamos agora implementar nosso método &lt;span style=&quot;font-weight: bold;&quot;&gt;FireCannonMissile()&lt;/span&gt; logo abaixo do fim do método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Update(GameTime gameTime)  &lt;/span&gt;e acima do método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles().&lt;/span&gt; Ele verifica se os misseis do nosso array ainda estão na tela, caso algum não esteja podemos disparar outo missil. Assim ele define a posição inicial do missil como sendo a posição do canhão, a rotação da imagem do míssil como sendo a mesma rotação da imagem do canhão (por isso fizemos as duas imagens no mesmo sentido), e a velocidade junto a direção que o missil será atirado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3eIerD9ZA5VDyPesTqAjIDLZqLGIw_ZHbgpfFKQ9xrP5smtZa_TbAOsKTmIYpW5nK5PS1FMszK1BflE-2PBfWdmJkCxyxQyql4XZ1-rzjJFO0iame4dHsld9dL-vIKXNMLExoiN70dQ/s1600-h/img_28.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3eIerD9ZA5VDyPesTqAjIDLZqLGIw_ZHbgpfFKQ9xrP5smtZa_TbAOsKTmIYpW5nK5PS1FMszK1BflE-2PBfWdmJkCxyxQyql4XZ1-rzjJFO0iame4dHsld9dL-vIKXNMLExoiN70dQ/s320/img_28.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255738752863722578&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Temos que fazer uma atualização no método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt; para que possamos &quot;matar&quot; os mísseis que estiverem fora da nossa tela. Logo abaixo de onde atualizamos a posição do nosso missil no método &lt;span style=&quot;font-weight: bold;&quot;&gt;UpdateCannonMissiles()&lt;/span&gt; vamos checar se o missil ainda está na tela, o que é uma tarefa bem simples por termos o nosso &lt;span style=&quot;font-weight: bold;&quot;&gt;viewportRect.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNxEUBe7W8R2WI7N_0ONuEMFEAonnuo3WJSnZSwlrIdDRPUZs5PaRyVYqbyydoO9N-A-hYxg5pLooWzaqO_pjvAbIEkBRg0wZWmuFvKz1_c8KB2va0r5T_ouIj_gaR6HSGl2WZ4Y1OdI/s1600-h/img_29.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNxEUBe7W8R2WI7N_0ONuEMFEAonnuo3WJSnZSwlrIdDRPUZs5PaRyVYqbyydoO9N-A-hYxg5pLooWzaqO_pjvAbIEkBRg0wZWmuFvKz1_c8KB2va0r5T_ouIj_gaR6HSGl2WZ4Y1OdI/s320/img_29.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255739874806761490&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Desenhando os Mísseis na Tela&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Para finalizarmos temos que desenhar os nossos misseis na tela. Assim no método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Draw(GameTime gameTime), &lt;/span&gt;para termos os misseis desenhados antes do canhão e dar a impressão que eles estão saindo de dentro do canhão temos também que colocar o código para desenha-los antes do código para desenhar o canhão. Então usaremos um loop para desenhar cada missil do nosso array na tela.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZGlo2Hh2zCdfyUPx4cGnvQn5xuJBIO7ypiMJcpaJq-yGKWB2Z6h1rVYHkwecm9-UJT-lT2Puh6XGITK7Dk216FWFz085IeaT00MuRPE92k1JuQh22ryd4BQcN15ydGKdlHRsdunJwTe8/s1600-h/img_30.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZGlo2Hh2zCdfyUPx4cGnvQn5xuJBIO7ypiMJcpaJq-yGKWB2Z6h1rVYHkwecm9-UJT-lT2Puh6XGITK7Dk216FWFz085IeaT00MuRPE92k1JuQh22ryd4BQcN15ydGKdlHRsdunJwTe8/s320/img_30.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255741417123590274&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Se não nos esquecemos de nenhum detalhe e não cometemos nenhum erro podemos rodar nosso jogo e já ver nosso canhão atirando os misseis ao pressionarmos a barra de espaço do teclado ou o botão A do controle do xbox360.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQtbIC7ynPzTylNai8Wg2q1_rbC2dZdyso85poLA1kOTFg0eIdNpz9TXETwhs13KMgdRI1OnflwY0HxS3J41crVes9vSlV0asXzKTMPu5DapxJbUjJVoUhhnJcGfZHiJuumUKCG_8FKSs/s1600-h/img_31.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQtbIC7ynPzTylNai8Wg2q1_rbC2dZdyso85poLA1kOTFg0eIdNpz9TXETwhs13KMgdRI1OnflwY0HxS3J41crVes9vSlV0asXzKTMPu5DapxJbUjJVoUhhnJcGfZHiJuumUKCG_8FKSs/s320/img_31.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255741893672213698&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesta terceira parte do nosso tutorial de &lt;span&gt;como criar um jogo 2D com o XNA Game Studio&lt;/span&gt; vimos como criar e desenhar os mísseis que o canhão do nosso navio irá disparar para acertar as aeronaves inimigas. Vimos o conceito de array, como declarar uma constante e alguns tipos de loop que a linguagem C# nos oferece.&lt;br /&gt;&lt;br /&gt;Na quarta parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio veremos como criar as aeronaves inimigas para que apareçam de posições randomicas do canto direito da tela.&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/2405040466411780438/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/2405040466411780438' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2405040466411780438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/2405040466411780438'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/tutorial-nosso-primeiro-jogo-2d-parte-3.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 3'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwMmAsxsapLu6TmXdLE8pOF5JoDp4SswjORsdNKBJWBW3lSRtOpe2EfN507wR6JJPXfe62C1b0NNBrS4zKP2x9Isnk2YX2vdxDIredscg5r2KOHJUPbMSKj3HTpglpHB5yGzjdquD49LY/s72-c/img_20.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-3684884407968314245</id><published>2008-10-21T02:20:00.000-02:00</published><updated>2008-10-28T16:57:02.881-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2D"/><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Jogo"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 2</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos videos &lt;span style=&quot;font-weight: bold;&quot;&gt;Begginers Guide 2D&lt;/span&gt; encontrados no site &lt;span style=&quot;font-weight: bold;&quot;&gt;creators.xna.com&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Esta é a segunda parte do nosso tutorial de &lt;span&gt;como criar um jogo 2D com o XNA Game Studio.&lt;/span&gt;&lt;span&gt; Aqui veremos como criar uma nova classe para representar os outros objetos do nosso jogo. Com essa classe iremos carregar o canhão do navio no nosso projeto. Iremos também desenha-lo na tela e faze-lo girar com os comandos do teclado ou de um controle do xbox360.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Criando e Modificando a Classe GameObject&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Vamos criar uma nova classe que representará os objetos do nosso jogo. Vamos clicar com o botão direito do mouse no nó que representa nosso projeto, o &lt;span style=&quot;font-weight: bold;&quot;&gt;Belonave&lt;/span&gt; no &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer,&lt;/span&gt;&lt;/span&gt;&lt;span&gt;  clicando em &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Add-&gt;New Item..., &lt;/span&gt;&lt;/span&gt;selecionaremos o &lt;span style=&quot;font-weight: bold;&quot;&gt;Template: Class&lt;/span&gt; na janela que aparece, daremos o &lt;span style=&quot;font-weight: bold;&quot;&gt;Name: GameObject.cs &lt;/span&gt;e clicamos em &lt;span style=&quot;font-weight: bold;&quot;&gt;Add.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnd3r5DjsQ2JG_Ob5LHqoUlxeSs5HT-HrKbrEXW5ZdTHfa7fktsQkvKswWHpO0k5HuVBFTo1IB8nvRhqnl5AAaywzF9bM2IUUOpwje7o7879_pAxKixFtfAG5KxK_XU_B-QWNoieCFxp0/s1600-h/img_12.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnd3r5DjsQ2JG_Ob5LHqoUlxeSs5HT-HrKbrEXW5ZdTHfa7fktsQkvKswWHpO0k5HuVBFTo1IB8nvRhqnl5AAaywzF9bM2IUUOpwje7o7879_pAxKixFtfAG5KxK_XU_B-QWNoieCFxp0/s320/img_12.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255394201877341186&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Vemos que o XNA Game Studio criou para nós um arquivo praticamente vazio chamado &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.cs&lt;/span&gt;. Voltaremos então ao arquivo &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt; e bem no começo do arquivo temos os &lt;span style=&quot;font-weight: bold;&quot;&gt;using&lt;/span&gt;. Iremos copiar todos os &lt;span style=&quot;font-weight: bold;&quot;&gt;using&lt;/span&gt; de &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt; e coloca-los no lugar dos &lt;span style=&quot;font-weight: bold;&quot;&gt;using &lt;/span&gt;que foram criados no &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.cs&lt;/span&gt;. Como cada objeto que criaremos em nosso jogo tem sua própria imagem, posição, rotação e centro, nós criaremos em nossa classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject&lt;/span&gt; essas variáveis. A variável que representa a imagem do objeto será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Texture2D&lt;/span&gt; e seu nome &lt;span style=&quot;font-weight: bold;&quot;&gt;sprite, &lt;/span&gt;a que representa a posição do nosso objeto será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Vector2&lt;/span&gt; e seu nome &lt;span style=&quot;font-weight: bold;&quot;&gt;position&lt;/span&gt;, assim a que representa a rotação do objeto será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;float&lt;/span&gt; e seu nome &lt;span style=&quot;font-weight: bold;&quot;&gt;rotation&lt;/span&gt; e a que representa o centro da imagem é do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Vector2&lt;/span&gt; e seu nome &lt;span style=&quot;font-weight: bold;&quot;&gt;center.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBTL88F2vFuQ-6OdZkB7pqN8h6dCuaBLzBkq-Bh57WTvPoOg00FZEfpW8aNxtFEh9IQ5wrofm5WOmRcNjQ_RlAx3nU_H35qaI2XxagQJFkHpDADVfJEdeL-vhyphenhyphens3OZXs7Fc6FIjsFIhqc/s1600-h/img_13.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBTL88F2vFuQ-6OdZkB7pqN8h6dCuaBLzBkq-Bh57WTvPoOg00FZEfpW8aNxtFEh9IQ5wrofm5WOmRcNjQ_RlAx3nU_H35qaI2XxagQJFkHpDADVfJEdeL-vhyphenhyphens3OZXs7Fc6FIjsFIhqc/s320/img_13.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255396125927045058&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Em seguida vamos declarar o construtor da nossa classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.&lt;/span&gt; O construtor é o método que chamamos ao criarmos um novo objeto. Em geral esse método inicializa tudo o que for necessário para a utilização do objeto. No caso do nosso construtor da classe &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject, &lt;/span&gt;além de inicializarmos todos os seus parametros, ele irá receber uma &lt;span style=&quot;font-weight: bold;&quot;&gt;Texture2D&lt;/span&gt; que será a imagem do objeto que desejamos desenhar na tela. Iniciaremos a posição como sendo zero, a rotação como sendo zero, atribuiremos a imagem que recebemos a nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;sprite&lt;/span&gt; e calcularemos o centro tendo esse as coordenadas metade da largura da imagem em X e metade da altura da imagem em Y.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ7DhVypbc7XrBa1W2LqhTPmM5u_EcopBsvlWul42J7bSqbyJ8Rx7D2pdeG6A9NRjSe9FM-CtEk4w2KtFTs_qf5yccVSCPRr3TPd0jMp-BK9LRWbv0-5YVKAH7FBozR6vrpZEumfsIR5o/s1600-h/img_14.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ7DhVypbc7XrBa1W2LqhTPmM5u_EcopBsvlWul42J7bSqbyJ8Rx7D2pdeG6A9NRjSe9FM-CtEk4w2KtFTs_qf5yccVSCPRr3TPd0jMp-BK9LRWbv0-5YVKAH7FBozR6vrpZEumfsIR5o/s320/img_14.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255397774782720466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Instanciando, Carregando e Desenhando o shipCannon&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Agora vamos voltar ao &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs.&lt;/span&gt; Logo abaixo de onde declaramos a &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture &lt;/span&gt;e o &lt;span style=&quot;font-weight: bold;&quot;&gt;viewportRect&lt;/span&gt; vamos declarar nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;shipCannon&lt;/span&gt;, que será o canhão do nosso navio, e é do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipj0MiHj3SFXYWmBbDsk10PnlULV8q4Dy-qdUWl9-IhXAJTzvG04U3P9nfSLZsIPw50yBBzqpYfd8R0cfBJkF2dz4PkHydgx98lqx0XxN3URUQGT9Hxybu_WrwCB8ei1TR1jwQvBvTzHA/s1600-h/img_15.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipj0MiHj3SFXYWmBbDsk10PnlULV8q4Dy-qdUWl9-IhXAJTzvG04U3P9nfSLZsIPw50yBBzqpYfd8R0cfBJkF2dz4PkHydgx98lqx0XxN3URUQGT9Hxybu_WrwCB8ei1TR1jwQvBvTzHA/s320/img_15.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255398533212014194&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Iremos inicializa-lo para podermos desenha-lo na tela do nosso jogo. No método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void LoadContent(),&lt;/span&gt; logo abaixo do  &lt;span style=&quot;font-weight: bold;&quot;&gt;Load&lt;&gt;() &lt;/span&gt;que fizemos para o &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture&lt;/span&gt; vamos instanciar o &lt;span style=&quot;font-weight: bold;&quot;&gt;shipCannon&lt;/span&gt; como um novo &lt;span style=&quot;font-weight: bold;&quot;&gt;GameObject&lt;/span&gt; que recebe um &lt;span style=&quot;font-weight: bold;&quot;&gt;Load&lt;&gt;()&lt;/span&gt; da imagem do &lt;span style=&quot;font-weight: bold;&quot;&gt;shipCannon&lt;/span&gt; e logo após isso vamos inicializar a posição do nosso canhão para posiciona-lo junto ao nosso navio desenhado no &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXJsA5e-rmD7Iad3yDel6jmfFrWqEqcaSzqJg452lZquLBJF4O4ik1Mvqx_nxKC-mQchSJwDT_bcTkdiqJM2obP1YM-Rb-aEniZE3kXHlZh4MUStIS3dW1oQicRwLg5zChwMa-el6bQ40/s1600-h/img_16.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXJsA5e-rmD7Iad3yDel6jmfFrWqEqcaSzqJg452lZquLBJF4O4ik1Mvqx_nxKC-mQchSJwDT_bcTkdiqJM2obP1YM-Rb-aEniZE3kXHlZh4MUStIS3dW1oQicRwLg5zChwMa-el6bQ40/s320/img_16.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255401243051436514&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Vamos ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Update(GameTime gameTime)&lt;/span&gt; do &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt;, adicionaremos o código necessário para rotacionar o nosso canhão e assim podermos mirar nos nossos inimigos. Como vimos no nosso primeiro tutorial o método &lt;span style=&quot;font-weight: bold;&quot;&gt;Update(GameTime gameTime)&lt;/span&gt; é o responsável por atualizar nosso jogo a cada quadro, é nele que codificamos todas as alterações de lógica que queremos fazer em cada objeto do jogo. Vamos adicionar primeiramente o código pare entrada do controle do &lt;span style=&quot;font-weight: bold;&quot;&gt;xbox360&lt;/span&gt; e após o código para entrada do &lt;span style=&quot;font-weight: bold;&quot;&gt;teclado&lt;/span&gt;. Esses códigos farão nosso canhão rodar tendo seu centro como eixo. No caso do controle do &lt;span style=&quot;font-weight: bold;&quot;&gt;xbox360&lt;/span&gt;, a rotação ocorre de acordo com a variação da &lt;span style=&quot;font-weight: bold;&quot;&gt;alavanca&lt;/span&gt; para a &lt;span style=&quot;font-weight: bold;&quot;&gt;esquerda&lt;/span&gt; e para a &lt;span style=&quot;font-weight: bold;&quot;&gt;direita&lt;/span&gt;. No caso do &lt;span style=&quot;font-weight: bold;&quot;&gt;teclado&lt;/span&gt; ocorre quando as teclas da &lt;span style=&quot;font-weight: bold;&quot;&gt;direita&lt;/span&gt; ou da &lt;span style=&quot;font-weight: bold;&quot;&gt;esquerda&lt;/span&gt; forem pressionadas. O código &lt;span style=&quot;font-weight: bold;&quot;&gt;#if !xbox&lt;/span&gt; e &lt;span style=&quot;font-weight: bold;&quot;&gt;#endif&lt;/span&gt; faz com que o trecho de código entre eles seja compilado em caso de atender a condição que no caso é ser diferente de xbox. O método &lt;span style=&quot;font-weight: bold;&quot;&gt;Clamp()&lt;/span&gt; do &lt;span style=&quot;font-weight: bold;&quot;&gt;MathHelper&lt;/span&gt; serve para limitarmos a rotação do nosso canhão.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1_8RSn82SWKykuYf1oOnXNonqF7KKPqPS1kjwOGgQrbclfPKfULyrwKRukdovYP0AYMIZ4aFeDF-IVCjfTBSRhr6Ddi9DUpTqxTyJvS6RxXCIs2TS33ZgCH9Hr4v_lexwAWNhKqtnT0w/s1600-h/img_17.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1_8RSn82SWKykuYf1oOnXNonqF7KKPqPS1kjwOGgQrbclfPKfULyrwKRukdovYP0AYMIZ4aFeDF-IVCjfTBSRhr6Ddi9DUpTqxTyJvS6RxXCIs2TS33ZgCH9Hr4v_lexwAWNhKqtnT0w/s320/img_17.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255404962075401666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Para desenharmos o canhão de nosso navio na tela, vamos ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Draw(GameTime gameTime) &lt;/span&gt;mas não usaremos o mesmo &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw()&lt;/span&gt; do &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;  que usamos para o &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture, &lt;/span&gt;usaremos um overload do método que aceita outros argumentos. A versão que usaremos nesse caso recebe a imagem, a posição, o retangulo que é um argumento opicional, a cor, a rotação, a origem da rotação, a escala, efeitos e a profundidade.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw3q4-V0PYYyT3ULuotU3-spM58tsJCSeYyMh7a6KGvyUh1f0fM1THu8gEDrtj0t0iYv54etoHR7dqKuUJQIwUZRU6DBr9wQxWTsgYrTCj_TydeNq28tc38grof_8bqpt5nIqvpHBL5aM/s1600-h/img_18.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw3q4-V0PYYyT3ULuotU3-spM58tsJCSeYyMh7a6KGvyUh1f0fM1THu8gEDrtj0t0iYv54etoHR7dqKuUJQIwUZRU6DBr9wQxWTsgYrTCj_TydeNq28tc38grof_8bqpt5nIqvpHBL5aM/s320/img_18.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255406188577530642&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Se não nos esquecemos de nada e nem cometemos nenhum erro podemos rodar nossa aplicação. Veremos o nosso navio já com seu canhão e esse atende as entradas do teclado e do controle do xbox360.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aR_yQgJu1f3o_aPGterXCUcD1Kkvw69LuYJeXP8Fv3xczQYvV8j5GZnpPoLDdm6h8l-3wNv7g9ADk0XoLlLcR1FWeyT2Zv7UEmBv251f5Gi7zzvkl7lfyP_R6xPD7gLlVafTplbhEpE/s1600-h/img_19.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aR_yQgJu1f3o_aPGterXCUcD1Kkvw69LuYJeXP8Fv3xczQYvV8j5GZnpPoLDdm6h8l-3wNv7g9ADk0XoLlLcR1FWeyT2Zv7UEmBv251f5Gi7zzvkl7lfyP_R6xPD7gLlVafTplbhEpE/s320/img_19.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255406948702461858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesta a segunda parte do nosso tutorial de &lt;span&gt;como criar um jogo 2D com o XNA Game Studio&lt;/span&gt;&lt;span&gt; vimos como criar uma nova classe para representar os outros objetos do nosso jogo. Instanciamos essa classe e carregamos o canhão do navio no nosso projeto. Também o desenhamos na tela e o fizemos girar com os comandos do teclado ou de um controle do xbox360.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na terceira parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio veremos como criar e desenhar os mísseis que o canhão do nosso navio irá disparar para acertar as aeronaves inimigas. Veremos também o conceito de array, como declarar uma constante e alguns tipos de loop que a linguagem C# nos oferece.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/3684884407968314245/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/3684884407968314245' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3684884407968314245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3684884407968314245'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/tutorial-nosso-primeiro-jogo-2d-parte-2.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 2'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnd3r5DjsQ2JG_Ob5LHqoUlxeSs5HT-HrKbrEXW5ZdTHfa7fktsQkvKswWHpO0k5HuVBFTo1IB8nvRhqnl5AAaywzF9bM2IUUOpwje7o7879_pAxKixFtfAG5KxK_XU_B-QWNoieCFxp0/s72-c/img_12.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-3639078453964233766</id><published>2008-10-17T16:17:00.005-03:00</published><updated>2008-10-17T21:00:36.013-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>XNA Challenge Brasil - O que é?</title><content type='html'>Neste post falarei um pouquinho sobre o XNA Challenge Brasil.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;O XNA Challenge Brasil&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É o maior concurso brasileiro de desenvolvimento de jogos para PCs e XBOXs utilizando a plataforma XNA Game Studio. Organizado pela Microsoft, incentiva estudantes, professores e entusiastas a criarem jogos com o XNA Game Studio abordando determinados temas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg_UlAXTKzDT1jLbN1OSSYkVf5dczedNDdomb5V3SHM39tOQ_KqaXpbxUPn5_sGzRFHOQwyAIttObsWyNr1Fhfe0FlMbNn3uyy9mm22wVW8u28GQ5yiQMdS951tNDk4D1VclDMNaLWQ1Y/s1600-h/xnachallengebrasil.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg_UlAXTKzDT1jLbN1OSSYkVf5dczedNDdomb5V3SHM39tOQ_KqaXpbxUPn5_sGzRFHOQwyAIttObsWyNr1Fhfe0FlMbNn3uyy9mm22wVW8u28GQ5yiQMdS951tNDk4D1VclDMNaLWQ1Y/s320/xnachallengebrasil.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5258274209512819234&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Atualmente este concurso encontra-se em sua terceira edição e as inscrições para esta edição estão abertas.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://www.xnachallenge.com.br/default.aspx&quot;&gt;3° XNA Challenge Brasil&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A temática desse ano é &quot;Resolver os problemas mais difíceis do Mundo&quot; que são baseados nos desafios identificados pela ONU:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pobreza&lt;/li&gt;&lt;li&gt;Saúde Materna&lt;/li&gt;&lt;li&gt;Desenvolvimento Colaborativo&lt;/li&gt;&lt;li&gt;Educação&lt;/li&gt;&lt;li&gt;Igualdade entre Gêneros&lt;/li&gt;&lt;li&gt;Aids e outras Enfermidades&lt;/li&gt;&lt;li&gt;Mortalidade Infantil&lt;/li&gt;&lt;li&gt;Sustentabilidade&lt;/li&gt;&lt;/ul&gt;Ao participar do XNA Challenge Brasil, a equipe também poderá participar do Imagine Cup 2009 na categoria Desenvolvimento de Jogos, com o mesmo projeto pois o tema é o mesmo e os critérios de classificação são similares.&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;O Concurso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O XNA Challenge Brasil é dividido em três etapas.&lt;br /&gt;&lt;br /&gt;A primeira etapa é classificatória onde 10 equipes serão selecionadas para as semifinais. O prazo de submissão do jogo será até o dia 15/12/08 as 23:59.&lt;br /&gt;&lt;br /&gt;A segunda etapa é a fase semi final onde 5 equipes serão selecionadas para a final. Essas equipes devem submeter um resumo da implementação do jogo, demo do jogo no formato, video do jogo e o código-fonte do jogo até o dia 26/01/09 as 23:59.&lt;br /&gt;&lt;br /&gt;A terceira etapa é a fase final do concurso. Nela, as 5 equipes finalistas deverão apresentar seus jogos pessoalmente para a comissão julgadora. Deverão também enviar no dia da apresentação final um resumo descritivo da implementação, o jogo final e o codigo-fonte do mesmo, alé de uma apresentação em powerpoint.&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;A Premiação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Haverá premiação para os três primeiros lugares e para um escolhido do juri popular. O escolhido pelo juri popular será escolhido pela platéia no dia da apresentação dos cinco finalistas e receberá um kit com um controle do Xbox360 sem fio e um jogo Microsoft para PC para cada participante da equipe. O terceiro lugar recebe um kit contendo Lifechat VX 3000 e um jogo Microsoft para PC para cada participante da equipe. O segundo lugar da competição recebe um kit contendo mouse SideWinder e    Lifechat VX 3000 para cada integrante da da equipe. O prêmio para a equipe que vencer o XNA Game Challenge é uma viagem internacional para um representante da equipe conhecer a sede da Microsoft em Seattle e um Xbox para cada outro integrante.</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/3639078453964233766/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/3639078453964233766' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3639078453964233766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/3639078453964233766'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/xna-challenge-brasil-o-que.html' title='XNA Challenge Brasil - O que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg_UlAXTKzDT1jLbN1OSSYkVf5dczedNDdomb5V3SHM39tOQ_KqaXpbxUPn5_sGzRFHOQwyAIttObsWyNr1Fhfe0FlMbNn3uyy9mm22wVW8u28GQ5yiQMdS951tNDk4D1VclDMNaLWQ1Y/s72-c/xnachallengebrasil.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-8991586449981931132</id><published>2008-10-14T01:48:00.001-03:00</published><updated>2008-10-17T12:59:55.779-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2D"/><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Jogo"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nosso Primeiro Jogo 2D - Parte 1</title><content type='html'>Neste tutorial veremos, passo a passo, como criar um jogo 2D simples. Este tutorial foi baseado nos videos &lt;span style=&quot;font-weight: bold;&quot;&gt;Begginers Guide 2D&lt;/span&gt; encontrados no site &lt;span style=&quot;font-weight: bold;&quot;&gt;creators.xna.com&lt;/span&gt;.&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Esta é a primeira parte do nosso tutorial de &lt;span&gt;como criar um jogo 2D com o XNA Game Studio. Aqui vamos rever&lt;/span&gt;&lt;span&gt; como criar um novo projeto e como adicionar imagens ao nosso projeto. Vamos ver também como carregar e desenhar na tela uma imagem de fundo no nosso jogo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No nosso jogo teremos basicamente um navio, seus mísseis e aviões. O objetivo do jogo é, controlando o canhão do navio, conseguir acertar o maior número de aviões que passarem voando na tela.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Criando um Novo Projeto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Primeiramente vamos começar criando um novo projeto. No &lt;span style=&quot;font-weight: bold;&quot;&gt;Visual C# 2005 Express Edition&lt;/span&gt; vamos no menu &lt;span style=&quot;font-weight: bold;&quot;&gt;File-&gt;New Project...&lt;/span&gt;, ou apenas &lt;span style=&quot;font-weight: bold;&quot;&gt;Ctrl+Shift+N&lt;/span&gt;. Selecionaremos como &lt;span style=&quot;font-weight: bold;&quot;&gt;Project Type: XNA Game Studio 2.0&lt;/span&gt; e como &lt;span style=&quot;font-weight: bold;&quot;&gt;Template: Windows Game&lt;/span&gt;. O &lt;span style=&quot;font-weight: bold;&quot;&gt;Name&lt;/span&gt; do projeto eu chamei de &lt;span style=&quot;font-weight: bold;&quot;&gt;Belonave&lt;/span&gt; e procurando na &lt;span style=&quot;font-weight: bold;&quot;&gt;Wikipédia&lt;/span&gt; temos a seguinte definição: &quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;Belonave&lt;/span&gt; é a designação de qualquer tipo de embarcação, fluvial ou marítima, para utilização em combate.&quot;, o que tem muito a ver com nosso jogo. Também selecionaremos o &lt;span style=&quot;font-weight: bold;&quot;&gt;Location&lt;/span&gt; que acharmos melhor para armazenarmos nosso projeto em nosso PC. Em &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution&lt;/span&gt; escolheremos a opção &lt;span style=&quot;font-weight: bold;&quot;&gt;Create a new Solution&lt;/span&gt;, deixaremos a opção &lt;span style=&quot;font-weight: bold;&quot;&gt;Create directory for solution&lt;/span&gt; marcada e clicaremos em &lt;span style=&quot;font-weight: bold;&quot;&gt;OK&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbTUvXkM1WWq2Lfhyphenhyphenn98tUzeD9dgTBWyM5AuChb1o5DG3ACST1_GqiCh7BJs2t6XBBgnPvzeSM9XnjAKBlsoT3vYenz3F2niXr4baO3qQpzbVVqelXjR19mHpzR5ARcohuzS1g-fU_1RY/s1600-h/img_01.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbTUvXkM1WWq2Lfhyphenhyphenn98tUzeD9dgTBWyM5AuChb1o5DG3ACST1_GqiCh7BJs2t6XBBgnPvzeSM9XnjAKBlsoT3vYenz3F2niXr4baO3qQpzbVVqelXjR19mHpzR5ARcohuzS1g-fU_1RY/s320/img_01.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255370098123632738&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Salvando as Imagens e Adicionando ao Projeto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora que criamos nosso novo projeto, já podemos ver no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer&lt;/span&gt; os arquivos que o compõem. Ainda não modificaremos nenhum arquivo. Antes vamos baixar e adicionar ao projeto as imagens que usaremos em nosso jogo. Clique em cada imagem abaixo e, com o botão direito do mouse, salve elas em seu PC com os seguintes nomes:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture&lt;/span&gt;:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDZbFslyJO4OMMFe4R6fpDFErC__CFDw10h6oo1UBW_8e3d7_zy5q_zSxIvHYNu2T7JPxQk2EhYrsGqHPeoB6OjOx5UqDhHTuqr8XSUD2nTV4q8YX1pb1oKUs4kRFIMMEKavoiuovrbyA/s1600-h/backgroundTexture.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDZbFslyJO4OMMFe4R6fpDFErC__CFDw10h6oo1UBW_8e3d7_zy5q_zSxIvHYNu2T7JPxQk2EhYrsGqHPeoB6OjOx5UqDhHTuqr8XSUD2nTV4q8YX1pb1oKUs4kRFIMMEKavoiuovrbyA/s320/backgroundTexture.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255371179399846418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;shipCannon&lt;/span&gt;:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAfgKB7OQhh4Ayhb1MerxXcJ9vxyRy45RNPy1jYNx2BaO4fSgBTpwO4wzMbwu1-iVXj5YyA1lEqjbhrbZshjn3JqOGHk6O1JJsMBGPAKlkGvQEqLxhadu6nZvawfVZQZAUYO42p3xK5V4/s1600-h/shipCannon.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAfgKB7OQhh4Ayhb1MerxXcJ9vxyRy45RNPy1jYNx2BaO4fSgBTpwO4wzMbwu1-iVXj5YyA1lEqjbhrbZshjn3JqOGHk6O1JJsMBGPAKlkGvQEqLxhadu6nZvawfVZQZAUYO42p3xK5V4/s320/shipCannon.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255371426858420466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;cannonMissile&lt;/span&gt;:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZl6rX1t0k1QI31O8xxZ76Whz-ZIBYEPGyJ9J9kXq6B5DQwDpHoOeL7Cp8U0FBs5pXBS1dZ86vyVJQ24NG0xQu-kcT0496rbgLk9ChBb5BXSPTBKSd-Cfb_xPMmaQpjMW_jsBtS_K9uik/s1600-h/cannonMissile.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZl6rX1t0k1QI31O8xxZ76Whz-ZIBYEPGyJ9J9kXq6B5DQwDpHoOeL7Cp8U0FBs5pXBS1dZ86vyVJQ24NG0xQu-kcT0496rbgLk9ChBb5BXSPTBKSd-Cfb_xPMmaQpjMW_jsBtS_K9uik/s320/cannonMissile.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255371658719547218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;enemyPlane&lt;/span&gt;:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgykSNy-ZlX5ousK10yquasdVi0IOS0Ge1AWQba2JBUFdzoI8qrFEEt7U5cCmmmMoGV4uqAIZmeAJw7LB-he0CI8T9-AdkwoPawDQjo5a1ld5t1tywughwPf-ecYHk1kQFmqToZv8RwGgM/s1600-h/enemyOne.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgykSNy-ZlX5ousK10yquasdVi0IOS0Ge1AWQba2JBUFdzoI8qrFEEt7U5cCmmmMoGV4uqAIZmeAJw7LB-he0CI8T9-AdkwoPawDQjo5a1ld5t1tywughwPf-ecYHk1kQFmqToZv8RwGgM/s320/enemyOne.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255371975218832674&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para organizarmos melhor nossas imagens, após telas salvo em nosso PC, vamos voltar ao &lt;span style=&quot;font-weight: bold;&quot;&gt;Visual C# 2005 Express Edition&lt;/span&gt; e vamos clicar com o botão direito do mouse em &lt;span style=&quot;font-weight: bold;&quot;&gt;Content&lt;/span&gt;, no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;Add-&gt;New Folder&lt;/span&gt; e nomearems essa nova pasta como &lt;span style=&quot;font-weight: bold;&quot;&gt;Sprites&lt;/span&gt;. Mais uma vez na &lt;span style=&quot;font-weight: bold;&quot;&gt;Wikipédia&lt;/span&gt; encontramos a seguinte definição: &quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sprite&lt;/span&gt; é um objeto gráfico bi ou tridimensional que se move numa tela sem deixar traços de sua passagem.&quot;. Nessa pasta ficarão armazenadas todas as imagens que usaremos em nosso projeto.&lt;br /&gt;Clicando com o botão direito do mouse na pasta recém criada, no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer&lt;/span&gt; dentro de &lt;span style=&quot;font-weight: bold;&quot;&gt;Content&lt;/span&gt;, &lt;span style=&quot;font-weight: bold;&quot;&gt;Add-&gt;Existing Item&lt;/span&gt; e vamos ao local onde salvamos nossas imagens. Selecionaremos e adicionaremos cada uma delas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBTCA8jooYN_Pj_9O8jY849m5v8R89XeCFNYTE1vQMI0tQNfitke_CJm_1uaEhUZU4N-BuCeD2xRNqO0M_kINrS8COJGd1HrJrNpVa7yN4ZMOfPDKr3xAiyC2Ea-KYGcA-S46u8AegylQ/s1600-h/img_06.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBTCA8jooYN_Pj_9O8jY849m5v8R89XeCFNYTE1vQMI0tQNfitke_CJm_1uaEhUZU4N-BuCeD2xRNqO0M_kINrS8COJGd1HrJrNpVa7yN4ZMOfPDKr3xAiyC2Ea-KYGcA-S46u8AegylQ/s320/img_06.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255761320159006290&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Carregando e Desenhando a Imagem de Fundo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois que já tivermos todas as imagens adicionadas ao projeto na pasta&lt;span style=&quot;font-weight: bold;&quot;&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;Sprites &lt;/span&gt;&lt;/span&gt;vamos começar a modificar nosso código. Caso ainda não esteja aberto, abriremos o arquivo &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1.cs&lt;/span&gt;  clicando duas vezes nele no &lt;span style=&quot;font-weight: bold;&quot;&gt;Solution Explorer&lt;/span&gt;. Com o arquivo aberto, procuraremos a classe &lt;span style=&quot;font-weight: bold;&quot;&gt;Game1 &lt;/span&gt;dentro dele. Abaixo de &lt;span style=&quot;font-weight: bold;&quot;&gt;GraphicsDeviceManager graphics; &lt;/span&gt;iremos declarar a variável que será responsável pela imagem de fundo do nosso jogo. Essa variável será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Texture2D&lt;/span&gt; e se chamará &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture.&lt;/span&gt; Abaixo de nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture&lt;/span&gt; vamos declarar outra variável, que será responsável por definir a área máxima que um objeto poderá ter. Esta será do tipo &lt;span style=&quot;font-weight: bold;&quot;&gt;Rectangle&lt;/span&gt; e a chamaremos de &lt;span style=&quot;font-weight: bold;&quot;&gt;viewportRect.&lt;/span&gt; Essas variáveis que acabamos de declarar ficaram acima do &lt;span style=&quot;font-weight: bold;&quot;&gt;SpriteBatch spriteBatch; &lt;/span&gt;que é uma classe do &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA framework&lt;/span&gt; que utilizaremos para desenhar todas as imagens que usamos nesse tutorial.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6pAfWw88Q5R-CNxop4xzUyGo-wvwCpn9R5ppy7iGbue9a4fzEwCHu9_RU3Zu9bTwsOurKKLXJvPFElqhOkovghWR-OH9HldjeuJZf4Q2gM4qNLMKbtXeGFSmq7Lb8LJYlWOnYc_U2ctM/s1600-h/img_07.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6pAfWw88Q5R-CNxop4xzUyGo-wvwCpn9R5ppy7iGbue9a4fzEwCHu9_RU3Zu9bTwsOurKKLXJvPFElqhOkovghWR-OH9HldjeuJZf4Q2gM4qNLMKbtXeGFSmq7Lb8LJYlWOnYc_U2ctM/s320/img_07.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255379230504258130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Para carregarmos nossa imagem de fundo no nosso jogo, vamos ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void LoadContent() &lt;/span&gt;que como vimos em nosso primeiro tutorial, é um método que é chamado quando o jogo inicia e ele carrega todas as imagens que precisamos durante o jogo. Logo abaixo de &lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch = new SpriteBatch(GraphicsDevice); &lt;/span&gt;vamos carregar nossa imagem de fundo na nossa variável &lt;span style=&quot;font-weight: bold;&quot;&gt;backgroundTexture. &lt;/span&gt;Para isso vamos usar o método &lt;span style=&quot;font-weight: bold;&quot;&gt;Load&lt;&gt;() &lt;/span&gt;da classe &lt;span style=&quot;font-weight: bold;&quot;&gt;Content Manager.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9vgPfLRaNqtpJd-4Y1gmMaVySDIQBeYLjBKJBHhEnZdr6Oukn-sE333Bl6JDbvB4D_ND3cPOtniKYgolsByG08ZRtvWM7OLhqJIT0VDJibFwJ3aRlBpeQAq1z8XrvT-IRMJ_r5ug3EE/s1600-h/img_08.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9vgPfLRaNqtpJd-4Y1gmMaVySDIQBeYLjBKJBHhEnZdr6Oukn-sE333Bl6JDbvB4D_ND3cPOtniKYgolsByG08ZRtvWM7OLhqJIT0VDJibFwJ3aRlBpeQAq1z8XrvT-IRMJ_r5ug3EE/s320/img_08.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255380434009574498&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Ainda no método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void LoadContent()&lt;/span&gt;, abaixo da atribuição que acabamos de fazer para carregar nossa imagem de fundo, vamos instanciar nosso &lt;span style=&quot;font-weight: bold;&quot;&gt;viewportRect&lt;/span&gt; atribuindo a ele as nossas medidas da tela começando em (0, 0) e termonando em (width, height) da Viewport.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIWPJaedqlG-hJadJLGo_H1-MYYqbqcCpUb0Y5dY_IA1OnMi4folif_qKXLyChvqirwKWNoN_17y5dncTMBdS-2uwpHD9Vnttf9ZVPIXHsh0Mzv9dQ10AyD8wWfrD5GeIOH09rNojqJg8/s1600-h/img_09.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIWPJaedqlG-hJadJLGo_H1-MYYqbqcCpUb0Y5dY_IA1OnMi4folif_qKXLyChvqirwKWNoN_17y5dncTMBdS-2uwpHD9Vnttf9ZVPIXHsh0Mzv9dQ10AyD8wWfrD5GeIOH09rNojqJg8/s320/img_09.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255382305849337922&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Agora que a carregamos, desenharemos a nossa imagem de fundo na tela. Para isso usaremos a classe &lt;span style=&quot;font-weight: bold;&quot;&gt;SpriteBatch spriteBatch; &lt;/span&gt;e nosso &lt;span style=&quot;font-weight: bold;&quot;&gt;Rectangle viewportRect;&lt;/span&gt; que acabamos de inicializar. Vamos então ao método &lt;span style=&quot;font-weight: bold;&quot;&gt;protected override void Draw(GameTime gameTime). &lt;/span&gt;Como vimos no nosso primeiro tutorial o método &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw() &lt;/span&gt;é o responsável por redesenhar a tela a cada quadro. É nele que a tela é limpa e que desenhamos cada objeto que desejamos que apareça no nosso jogo. Abaixo do &lt;span style=&quot;font-weight: bold;&quot;&gt;graphics.GraphicsDevice.Clear(Color.CornflowerBlue); &lt;/span&gt;vamos acrescentar o bloco que nos permite desenhar na tela.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Iniciamos com o método &lt;span style=&quot;font-weight: bold;&quot;&gt;Begin() &lt;/span&gt;do &lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch,&lt;/span&gt; desenhamos com o método &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw() &lt;/span&gt;do &lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch &lt;/span&gt;e ao terminarmos finalizamos com o método &lt;span style=&quot;font-weight: bold;&quot;&gt;End() &lt;/span&gt;do &lt;span style=&quot;font-weight: bold;&quot;&gt;spriteBatch. &lt;/span&gt;No método &lt;span style=&quot;font-weight: bold;&quot;&gt;Begin() &lt;/span&gt;podemos passar como parametro o &lt;span style=&quot;font-weight: bold;&quot;&gt;SpriteBlendMode.AlphaBlend &lt;/span&gt;que nos permite desenhar imagens com transparencia. No método &lt;span style=&quot;font-weight: bold;&quot;&gt;Draw() &lt;/span&gt;iremos passar como parametros nossa textura, um retangulo que especifica onde a sprite será desenhada, e uma cor que por default estamos usando o branco. O método &lt;span style=&quot;font-weight: bold;&quot;&gt;End() &lt;/span&gt;não recebe parametros.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjacc_E9Z_72ULkK2F_0vqQI_rpbXlO-Cnrsy58VzjbI7mvK_3IESzh7VoMXs7M2eHwe_-mqttRfINhA5vul0YQ9AdKHKSUzrrA5i0tDOzvRVShlfZ8ooFNScYPKU_yjTxiMOp2uHHFnoA/s1600-h/img_10.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjacc_E9Z_72ULkK2F_0vqQI_rpbXlO-Cnrsy58VzjbI7mvK_3IESzh7VoMXs7M2eHwe_-mqttRfINhA5vul0YQ9AdKHKSUzrrA5i0tDOzvRVShlfZ8ooFNScYPKU_yjTxiMOp2uHHFnoA/s320/img_10.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255385756833718050&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Se não tivermos esquecido de nada, podemos rodar nossa aplicação sem erros e conseguiremos ver a janela do nosso jogo já com a nossa imagem de fundo no lugar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju9VZk_guiJ6C4g0SYXQl_V4BNC6JDhipaoLtQUXcVG-4fGX3hMDbB3OaFmBVBS7VKdVgqfyENV9HWuC5jo35D6cPoLAA6YOU7IxUNFOmZhcDrEEKWvLzqNqu4f7O07lZmngdL_eRXvNU/s1600-h/img_11.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju9VZk_guiJ6C4g0SYXQl_V4BNC6JDhipaoLtQUXcVG-4fGX3hMDbB3OaFmBVBS7VKdVgqfyENV9HWuC5jo35D6cPoLAA6YOU7IxUNFOmZhcDrEEKWvLzqNqu4f7O07lZmngdL_eRXvNU/s320/img_11.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255386153851945330&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Nesta primeira parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio revimos como criar um novo projeto e como adicionar imagens ao nosso projeto. Vimos como carregar e desenhar na tela uma imagem de fundo no nosso jogo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Na segunda parte do nosso tutorial de como criar um jogo 2D com o XNA Game Studio veremos como criar uma nova classe para representar os outros objetos do nosso jogo. Com essa classe iremos carregar o canhão do navio no nosso projeto. Iremos também desenha-lo na tela e faze-lo girar com os comandos do teclado ou de um controle do xbox360.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/8991586449981931132/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/8991586449981931132' title='14 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8991586449981931132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8991586449981931132'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/tutorial-nosso-primeiro-jogo-2d-parte-1.html' title='Tutorial - Nosso Primeiro Jogo 2D - Parte 1'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbTUvXkM1WWq2Lfhyphenhyphenn98tUzeD9dgTBWyM5AuChb1o5DG3ACST1_GqiCh7BJs2t6XBBgnPvzeSM9XnjAKBlsoT3vYenz3F2niXr4baO3qQpzbVVqelXjR19mHpzR5ARcohuzS1g-fU_1RY/s72-c/img_01.jpg" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-7007411207134313627</id><published>2008-10-11T14:37:00.007-03:00</published><updated>2008-10-11T16:54:56.733-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="City Rain"/><category scheme="http://www.blogger.com/atom/ns#" term="Imagine Cup"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Mother Gaia Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Imagine Cup - O que é?</title><content type='html'>Neste post falarei um pouquinho de uma das maiores competições de desenvolvimento de jogos com o XNA Game Studio.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;A Imagine Cup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É uma competição anual patrocinada e organizada pela Microsoft. Ela une jovens interessados em tecnologia ao redor do mundo com o objetivo de resolver alguns desafios. Ela tem diversas categorias e uma delas é a de desenvolvimento de jogos.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://imaginecup.com/default.aspx&quot;&gt;Imagine Cup Website&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Essa competição foi iniciada em 2002 e tem aumentado rapidamente no número de competidores. Em 2008 houveram 210.000 inscritos de mais de 100 países para competir em uma das nove categorias da competição.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2EmZqJGJ9hOdXvogwLd5jttfuTgCoXTPjq6PTZ9Uvt49rYdoIZ8W8niEBo5Jf5qrNnnJmY_en_TDtxViddnBWDRI5Rb-JTI_khpoOA8qIQB4bBqdhhOT1VewFdBuQPQ16TdHMuKKqufo/s1600-h/icpromo.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2EmZqJGJ9hOdXvogwLd5jttfuTgCoXTPjq6PTZ9Uvt49rYdoIZ8W8niEBo5Jf5qrNnnJmY_en_TDtxViddnBWDRI5Rb-JTI_khpoOA8qIQB4bBqdhhOT1VewFdBuQPQ16TdHMuKKqufo/s320/icpromo.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255983375333930738&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;A Categoria Desenvolvimento de Jogos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nessa categoria a equipe competidora deve inventar um jogo usando o XNA Game Studio e o Visual Studio. A cada ano mudam os temas que os jogos devem ilustrar. Para 2009 o tema é &quot;Imagine um mundo onde a tecnologia ajude a resolver os problemas mais dificeis que enfrentamos hoje.&quot;&lt;br /&gt;&lt;br /&gt;Em 2008 o tema foi Sustentabilidade Ambiental e a equipe vencedora foi brasileira. A equipe Mother Gaia Studio venceu a final do Imagine Cup que ocorreu em Paris com seu jogo City Rain.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEYbKF70ZdARJdBBkVGJ4AptvVutAE5wNAXuBd8LQ4Vsry9K7zznEAVeHtU_tZiiFfObE3XHhWouZ-U6-hOigPbVPSeW69qdGX0kJJEkYs-RHdUHjwJOkVvGb4uixApPrN60b5UEcrs7g/s1600-h/cityrain.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEYbKF70ZdARJdBBkVGJ4AptvVutAE5wNAXuBd8LQ4Vsry9K7zznEAVeHtU_tZiiFfObE3XHhWouZ-U6-hOigPbVPSeW69qdGX0kJJEkYs-RHdUHjwJOkVvGb4uixApPrN60b5UEcrs7g/s320/cityrain.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255983998687530290&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;City Rain é um jogo de pixel art 2D isométrico que mistura um puzzle criativo com um simulador de planejamento urbano focado na ecologia e na sustentabilidade ambiental. No jogo você é o prefeito de uma cidade que deve decidir qual é a melhor maneira de construir uma cidade lucrativa e também ambientalmente sustentavel.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;A Competição&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Imagine Cup acontece em três etapas sendo a primeira qualificatória, a segunda as semi finais e a terceira as finais. Em 2009 as finais ocorrerão no Egito. Na primeira etapa as equipes criam e enviam o material de seu jogo que deve consistir basicamente em um demo jogável com pelo menos uma fase implementada que consiga passar a jogabilidade do jogo, a descrição do jogo e as instruções. Na segunda etapa a equipe deve submeter o jogo completo e um sumário do jogo. E na terceira etapa cada equipe terá 30 minutos para apresentar seu jogo a uma banca que irá julga-lo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglMluIUFsp15yMdPXOnj64Ng2VHuTEGhAvmVBIvo6n8Vr7vhSBep6eUWIT_rVBaoYyFU6MVo4Bpu3RsmavXz4l6wKEd05TljN1sEMWczCOdLX1TT90Abm-UBFHKUEm_Gr5fFg2mwrPlCo/s1600-h/IC09_Logo_standard.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglMluIUFsp15yMdPXOnj64Ng2VHuTEGhAvmVBIvo6n8Vr7vhSBep6eUWIT_rVBaoYyFU6MVo4Bpu3RsmavXz4l6wKEd05TljN1sEMWczCOdLX1TT90Abm-UBFHKUEm_Gr5fFg2mwrPlCo/s320/IC09_Logo_standard.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5255985740861218914&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;A Premiação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Os premios para os semifinalistas é um Premium Membership de 12 meses no Creators Club para cada integrante da equipe. Caso a sua equipe vá para a final ela ganha uma viagem para a cidade onde será realizada a final incluindo passagens, estadia e alimentação. A equipe que vencer a final ainda leva 25 mil dolares para serem divididos igualmente entre os integrantes da equipe, e um pacote com livros e um voucher para Certificação da Microsoft. A equipe na segunda posição recebe 10 mil dolares e a que fica em terceiro 5 mil dlares.&lt;br /&gt;&lt;br /&gt;Eu já me empolguei de participar, e você?</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/7007411207134313627/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/7007411207134313627' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7007411207134313627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/7007411207134313627'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/imagine-cup-o-que.html' title='Imagine Cup - O que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2EmZqJGJ9hOdXvogwLd5jttfuTgCoXTPjq6PTZ9Uvt49rYdoIZ8W8niEBo5Jf5qrNnnJmY_en_TDtxViddnBWDRI5Rb-JTI_khpoOA8qIQB4bBqdhhOT1VewFdBuQPQ16TdHMuKKqufo/s72-c/icpromo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-8499286261011575575</id><published>2008-10-08T15:34:00.001-03:00</published><updated>2008-10-08T17:28:30.262-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Tutorial - Nossa Primeira Aplicação - Extra</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Hoje estou postando aqui no blog uma parte extra do nosso tutorial Nossa Primeira Aplicação. Recebi alguns pedidos e algumas perguntas de como tratamos entradas do teclado e do controller do XBOX360. Nesse post mostrarei como trata-las fazendo nosso aviãozinho voar mais alto ou mais baixo, ou seja, daremos uma movimentação vertical a ele além da movimentação horizontal que ele já possui. Em seguida faremos com que ele não saia da tela nos limites superiores e inferiores.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Abriremos novamente o Visual C# 2005 Express Edition e o nosso projeto, ou pela &lt;span style=&quot;font-weight: bold;&quot;&gt;Start Page em Recent Projects&lt;/span&gt;, ou em &lt;span style=&quot;font-weight: bold;&quot;&gt;File-&gt;Open Project...&lt;/span&gt; se sabemos onde salvamos nosso projeto.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Voltamos a ter nosso &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Game1.cs&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; aberto. Caso o &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Game1.cs&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; não esteja aberto é só dar um duplo clique em &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Game1.cs&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; no &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Solution Explorer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:130%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Movimentando de Acordo com o Input&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Com o XNA Game Studio podemos ter diversos inputs diferentes, seja ele o controller do XBOX360, o teclado do PC ou até mesmo os botões do Zune. Aqui, por enquanto, cobriremos somente as duas primeiras entradas, o teclado e o controller. Caso você não tenha um controller do XBOX360 em casa, não será possivel testar se o código que você fez para o controller funciona corretamente, caso tenha é só conectar o controller do seu XBOX360 em uma porta USB do seu PC e testar o código que escreveremos aqui.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Vamos ao método Update() da nossa classe Game1 pois é nesse método que quando pressionada a tecla Up ou Down do teclado ou do Dpad do nosso controller atualizaremos a posição do nosso avião. Como ainda lembramos do nosso sistema de coordenadas da tela, sabemos que ao pressionarmos o botão Down do teclado ou do Dpad temos que incrementar de um valor o Y da posição do nosso avião e ao pressionarmos o botão Up do teclado ou do Dpad temos que decrementar de um valor o Y da posição do nosso avião.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe-0wn6TBnoEE9m-oyM9nvWdiy1wWh0yEztQt_K9lbr5OjOvKETttsS0NN1P4xqfvcZyi2k6lujSZ8fUORCyly9hmN32yG0fX8fD2eIT_rD-8JKTn5jJcx6qYEYIArZ26A7V-T2BUNgZg/s1600-h/meuprojeto_update_position_up_down.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe-0wn6TBnoEE9m-oyM9nvWdiy1wWh0yEztQt_K9lbr5OjOvKETttsS0NN1P4xqfvcZyi2k6lujSZ8fUORCyly9hmN32yG0fX8fD2eIT_rD-8JKTn5jJcx6qYEYIArZ26A7V-T2BUNgZg/s320/meuprojeto_update_position_up_down.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254865430596702690&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Devemos inserir o código no método Update() acima das modificações que haviamos feito anteriormente. Assim fazemos o teste com o if onde nossa condição é se o estado do teclado ou do Dpad tiver pressionado os botões Down ou Up fazemos planePosition.Y += ou -= 2.5f.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se rodarmos nossa aplicação e pressionarmos o Down ou o Up veremos que o avião se move para baixo ou para cima ainda respeitando os limites laterais da nossa tela mas ultrapassando seus limites superiores e inferiores. Como corrigir isso?&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Respeitando os Limites da Tela&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma das opções é fazermos uma checagem da posição do aviãozinho com relação ao limite superior ou inferior da tela.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9tn_7hZeWlRKNkqYZSAIjljsx5aHRtT6o9f5UDtArJvePx4Gk-TF7W9q4pcFr6hlm_Y3p6EsgskBjTQ8n4dXdR-jhxhD2krxri5NeBp1ZAxoKIapVLvxIr_SUYPXddxJ3w1XvG4kaa7U/s1600-h/meuprojeto_update_position_up_down_limits.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9tn_7hZeWlRKNkqYZSAIjljsx5aHRtT6o9f5UDtArJvePx4Gk-TF7W9q4pcFr6hlm_Y3p6EsgskBjTQ8n4dXdR-jhxhD2krxri5NeBp1ZAxoKIapVLvxIr_SUYPXddxJ3w1XvG4kaa7U/s320/meuprojeto_update_position_up_down_limits.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254869539304803618&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Se sua posição em Y for maior ou menor do que os limites da tela em Y igualaremos sua posição em Y ao limite em Y da tela.&lt;br /&gt;&lt;br /&gt;Talvez, para ficar mais interessante, fosse legal darmos uma pequena rotação na nossa imagem no sentido horário caso esteja descendo e no sentido anti-horário caso esteja subindo.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Rotacionando nossa Imagem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para realizarmos essa rotação precisaremos de uma outra variável na nossa classe. Iremos declarar a nossa variável do tipo float, planeRotation, junto com as outras variáveis da nossa classe. Não iremos inicializá-la ainda.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm2DrSt6V0s3dpRl9tOVY7ZYMmckqYT9YQFk0BoVaFi5qsZs_CkJ8gf1H2kVKbhw_WGUmyLkkQ21QvWozEQ-wGT68JEYIG_6weTHLdvGo1aE_vkCvot4Mk0oCu5EoLg94_HcyIC5EQzdk/s1600-h/meuprojeto_planeRotation.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm2DrSt6V0s3dpRl9tOVY7ZYMmckqYT9YQFk0BoVaFi5qsZs_CkJ8gf1H2kVKbhw_WGUmyLkkQ21QvWozEQ-wGT68JEYIG_6weTHLdvGo1aE_vkCvot4Mk0oCu5EoLg94_HcyIC5EQzdk/s320/meuprojeto_planeRotation.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254872566792078850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Essa variável receberá um valor em radianos da anlgulação que queremos que a nossa imagem gire.&lt;br /&gt;&lt;br /&gt;Agora novamente no início do método Update() iremos inicializar nossa variável planeRotation com o valor 0.0f, para que a cada loop se não pressionarmos Down ou Up nossa imagem seja desenhada da maneira original.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp6viffpHHKJxqagE0fSeVBRYkkOlWh-HyqERVQUfYWjPCfW0I17ExmK-fMjLYOhpucYSYTeT5PTpeS-SpnKhC-V81W-4UUb1BXcP5pexhiDHvog8xyi2aTkU1Mir9Fh925AhkYvcR3eY/s1600-h/meuprojeto_update_rotation.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp6viffpHHKJxqagE0fSeVBRYkkOlWh-HyqERVQUfYWjPCfW0I17ExmK-fMjLYOhpucYSYTeT5PTpeS-SpnKhC-V81W-4UUb1BXcP5pexhiDHvog8xyi2aTkU1Mir9Fh925AhkYvcR3eY/s320/meuprojeto_update_rotation.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254874085424158786&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;E dentro de cada bloco em que checarmos se pressionamos Down ou Up do teclado ou do Dpad do controller iremos atribuir uma angulação de acordo com o movimento que estamos fazendo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzMal1Bp7wmgjdmLa4ZYk-tf-LhfuQEyct2p_6lVVMt75ICq_fFJYYsnIOgn0zo5Aq94wK1CT0GsfDTw5fjKyKAN4GYaL52k9ZY97JsRA0Zo99Ez9H3yJJDxi1VWmO8J5Z3nEujN7HkSY/s1600-h/meuprojeto_update_rotation_up_down.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzMal1Bp7wmgjdmLa4ZYk-tf-LhfuQEyct2p_6lVVMt75ICq_fFJYYsnIOgn0zo5Aq94wK1CT0GsfDTw5fjKyKAN4GYaL52k9ZY97JsRA0Zo99Ez9H3yJJDxi1VWmO8J5Z3nEujN7HkSY/s320/meuprojeto_update_rotation_up_down.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254877120138540082&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ainda temos que passar para o spriteBatch essa atualização na rotação que fizemos da nossa imagem para que ele possa desenha-la levando em consideração essas modificações. Então no método Draw():&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiorAs2SxvQoMO5C6XtADL-xHUQfN-nfaENUY15fNahAUwv9RjPhbLmxrRjFsyfZSxwafI4kku9AxP_Xyg_YnjmHj6lkdpLc2Mm5XSMvgPhWGwsRISJsH87SBK3J3sfeb7lDMOgjxUoL4o/s1600-h/meuprojeto_draw_rotation.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiorAs2SxvQoMO5C6XtADL-xHUQfN-nfaENUY15fNahAUwv9RjPhbLmxrRjFsyfZSxwafI4kku9AxP_Xyg_YnjmHj6lkdpLc2Mm5XSMvgPhWGwsRISJsH87SBK3J3sfeb7lDMOgjxUoL4o/s320/meuprojeto_draw_rotation.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254877857429536706&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Agora está quase tudo ok. Se rodarmos e mexermos um pouquinho veremos o porque nossa aplicação ainda não está 100%.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmH8C5ODLPhZeLvhwS1S3AS5bUbWpRtsMsvMfrLIdyLbSOlI-1vbZbwttqUpPvt0UtdPf3fj1OJWK-m1yn4eGIh87YBJA_5rgeNvsE2EXZ6h6XVZUuRBWv6bnSd4Q7fXyWXZ6CgkT8Ds0/s1600-h/meuprojeto_flip_draw_rotation.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmH8C5ODLPhZeLvhwS1S3AS5bUbWpRtsMsvMfrLIdyLbSOlI-1vbZbwttqUpPvt0UtdPf3fj1OJWK-m1yn4eGIh87YBJA_5rgeNvsE2EXZ6h6XVZUuRBWv6bnSd4Q7fXyWXZ6CgkT8Ds0/s320/meuprojeto_flip_draw_rotation.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254879234086320850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ao vermos essa imagem até parece que está tudo bem com nossa aplicação, se algum de vocês já tiver rodado sua aplicação verá que não está tudo bem pois a imagem a esquerda mostra a posição do aviãozinho subindo após sua imagem estar flipada e a da direita mostra ele descendo após sua imagem estar flipada, deveria ser o contrário!&lt;br /&gt;&lt;br /&gt;Corrigiremos isso invertendo a rotação caso a imagem estaja flipada, ou seja, ao desenharmos, quando fazemos o check se a imagem está flipada, antes iremos fazer com que o nosso planeRotation = -planeRotation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2ZY6UaDmj3tIIA40bnolRowJB_xmOr-H0AR0XnRH4HU1sEkcbNOkU9Wnrctp08_M73_u6P6nA-1BtFY-E50mChLd9SESUmTowPcDFm2iof12mGm8UNaEH_IzA0spwRqWe_3Grf-3cSko/s1600-h/meuprojeto_flip_draw_rotation_inverted.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2ZY6UaDmj3tIIA40bnolRowJB_xmOr-H0AR0XnRH4HU1sEkcbNOkU9Wnrctp08_M73_u6P6nA-1BtFY-E50mChLd9SESUmTowPcDFm2iof12mGm8UNaEH_IzA0spwRqWe_3Grf-3cSko/s320/meuprojeto_flip_draw_rotation_inverted.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254880557344768210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Agora tudo estará rodando como desejamos. Podemos rodar e ver os resultados.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Resumo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesta parte extra do nosso tutorial Nossa Primeira Aplicação vimos como tratar a entrada do teclado e tembém uma entrada vinda do controller do XBOX360. Vimos também um pouquinho de como rotacionamos uma imagem que estamos desenhando na tela além de masi alguma pratica com blocos condicionais.&lt;br /&gt;&lt;br /&gt;Espero que gostem e que estejam conseguindo fazer coisas interessantes a partir das noções que foram dadas aqui nesse primeiro tutorial que nos dá uma visão bem básica do XNA Game Studio e de aplicações 2D utilizando essa ferramenta.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/8499286261011575575/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/8499286261011575575' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8499286261011575575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/8499286261011575575'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/tutorial-nossa-primeira-aplicao-extra.html' title='Tutorial - Nossa Primeira Aplicação - Extra'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe-0wn6TBnoEE9m-oyM9nvWdiy1wWh0yEztQt_K9lbr5OjOvKETttsS0NN1P4xqfvcZyi2k6lujSZ8fUORCyly9hmN32yG0fX8fD2eIT_rD-8JKTn5jJcx6qYEYIArZ26A7V-T2BUNgZg/s72-c/meuprojeto_update_position_up_down.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8545328287422013265.post-554774931610465415</id><published>2008-10-08T11:02:00.000-03:00</published><updated>2008-10-08T12:47:30.761-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Camello XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="Dica"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidade"/><category scheme="http://www.blogger.com/atom/ns#" term="SOFTIMAGE|XSI Mod Tool"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><category scheme="http://www.blogger.com/atom/ns#" term="XSI Mod Tool"/><title type='text'>XSI Mod Tool - O Que é?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Neste post estaremos falando um pouco sobre a&lt;span style=&quot;font-weight: bold;&quot;&gt; SOFTIMAGE|XSI Mod Tool&lt;/span&gt;, mais uma vez uma sugestão muito interessante de conteúdo vindo da nossa comunidade no &lt;span style=&quot;font-weight: bold;&quot;&gt;Orkut&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;A XSI Mod Tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É uma aplicação gráfica 3D da &lt;span style=&quot;font-weight: bold;&quot;&gt;SOFTIMAGE&lt;/span&gt; onde podemos desenvolver conteúdo para nossos jogos e para mods de jogos. Traz as mesmas ferramentas de modelagem e animação 3D do &lt;span style=&quot;font-weight: bold;&quot;&gt;XSI 6&lt;/span&gt;, que é a ferramenta usada pelos profissionais no mercado para criar o conteúdo gráfico dos jogos AAA como &lt;span style=&quot;font-weight: bold;&quot;&gt;Half Life 2&lt;/span&gt;. A grande vantagem do &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt; é que além de sua qualidade ela é grátis.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQX9HdI7VUfNhCS8cHR1eS6hPJUpzyoBOewk7a3koI1FCy9ZkUEDTqoVfOu-C57oXri48QJBOBzK4Q_ZZ9lNDpCZKschLrynDLehso360xsjilTtYosCaf0JFvqAAqnDq-Eftf-WOCBBc/s1600-h/mod_tool_logo.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQX9HdI7VUfNhCS8cHR1eS6hPJUpzyoBOewk7a3koI1FCy9ZkUEDTqoVfOu-C57oXri48QJBOBzK4Q_ZZ9lNDpCZKschLrynDLehso360xsjilTtYosCaf0JFvqAAqnDq-Eftf-WOCBBc/s320/mod_tool_logo.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254789890106669202&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;A &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt; é uma ferramenta muito interessante para nós que desenvolvemos jogos usando o &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA Game Studio&lt;/span&gt; pois nos fornece total integração com o framework através de um plug-in. Assim o conteúdo criado é exportado facilmente para os nossos projetos e usados no nosso código da mesma maneira que usamos imagens.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Como começar?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para começa o desenvolvimento  de assets para nossos jogos devemos fazer o download da ferramenta. É recomendado o download  de além da &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt;, do&lt;span style=&quot;font-weight: bold;&quot;&gt; Mod Tool 6.X Motor&lt;/span&gt;, que é um patch para a &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt;, e do &lt;span style=&quot;font-weight: bold;&quot;&gt;CROSSWALK&lt;/span&gt;, que ajuda a importar e exportar conteúdo do &lt;span style=&quot;font-weight: bold;&quot;&gt;3DS Max&lt;/span&gt; e &lt;span style=&quot;font-weight: bold;&quot;&gt;Maya&lt;/span&gt; para o &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;É necessário um rápido registro para a ativação e o download da ferramenta.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://www.softimage.com/downloads/XSI_Mod_Tool/default.aspx&quot;&gt;SOFTIMAGE|XSI Mod Tool Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Após o dowload, no site da &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt; existem diversos recursos de aprendizado da ferramenta, dentre eles alguns video tutorials muito interessantes. Tem um tutorial especialmente para desenvolvedores &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA&lt;/span&gt; e um arquivo de documentação de como integrar o &lt;span style=&quot;font-weight: bold;&quot;&gt;XSI Mod Tool &lt;/span&gt;e o &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://webrel2.softimage.com/open/video/mod_tool/Noesis_QS_4.wmv&quot;&gt;Quick Start: XNA Development Video&lt;/a&gt;&lt;br /&gt;- &lt;a href=&quot;http://www.softimage.com/products/modtool/pdf/XNA_GSE_integration_in_XSI.pdf&quot;&gt;XNA Game Studio Integration in SOFTIMAGE|XSI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esse pdf de como integrar o &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA&lt;/span&gt; no &lt;span style=&quot;font-weight: bold;&quot;&gt;XSI&lt;/span&gt; é bem explicativo e aborda desde uma explicação e como preparar o ambiente junto ao projeto do &lt;span style=&quot;font-weight: bold;&quot;&gt;XNA&lt;/span&gt; até como mostrar o modelo, passando por sua modelagem, animação e importação.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Para Saber Mais&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maiores informações podem ser obtidas no site da &lt;span style=&quot;font-weight: bold;&quot;&gt;Mod Tool&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://www.softimage.com/products/modtool/&quot;&gt;SOFTIMAGE|XSI Mod Tool Website&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Agradecimento&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gostaria de agradecer ao &lt;span style=&quot;font-weight: bold;&quot;&gt;Renan Recapix&lt;/span&gt; pela sugestão e dica e fica aqui o convite de futuramente desenvolvermos juntos uma série de tutoriais que abordem desde a modelagem no Mod Tool, sua inclusão no projeto, até a programação e desenvolvimento do jogo.&lt;br /&gt;&lt;br /&gt;Abraços a todos&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Leo Camello&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelloxna.blogspot.com/feeds/554774931610465415/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8545328287422013265/554774931610465415' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/554774931610465415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8545328287422013265/posts/default/554774931610465415'/><link rel='alternate' type='text/html' href='http://camelloxna.blogspot.com/2008/10/xsi-mod-tool-o-que.html' title='XSI Mod Tool - O Que é?'/><author><name>Leonardo Nascimento (leocamello)</name><uri>http://www.blogger.com/profile/00566003793710929255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivD1kqIVgwMx8sbo_VZtofxq25XuFsevzqydStUflJNee2l7y_UWSnvvrlVe5P6nnGVODXv5CjLcUBkfvg7mk_OrIKLPog2RojC2KGUmvZyMEBWmy1KBq8Mz-odze0Rg/s1600/*'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQX9HdI7VUfNhCS8cHR1eS6hPJUpzyoBOewk7a3koI1FCy9ZkUEDTqoVfOu-C57oXri48QJBOBzK4Q_ZZ9lNDpCZKschLrynDLehso360xsjilTtYosCaf0JFvqAAqnDq-Eftf-WOCBBc/s72-c/mod_tool_logo.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>