<?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: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-4103550753109784835</id><updated>2011-11-29T15:09:56.974-08:00</updated><category term='Quaternions'/><category term='cheetah'/><category term='3d'/><category term='RigidBody'/><category term='GameObject'/><category term='programming'/><category term='Fire'/><category term='missiles'/><category term='Unity3D'/><category term='Particles'/><category term='Photoshop'/><category term='C++'/><category term='C#'/><category term='Asteroids'/><category term='prefab'/><category term='2D'/><category term='script'/><category term='modeling'/><category term='DVD'/><category term='Smoke'/><category term='thruster'/><category term='velocity'/><category term='Vectors'/><category term='I have submit'/><category term='projectile'/><title type='text'>Unity3D - Zero to Hero!</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5690741819938214529</id><published>2009-09-19T00:20:00.000-07:00</published><updated>2009-09-19T00:25:04.077-07:00</updated><title type='text'>On The Oche Updates</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1q9SmbuPfKQ/SrSHRGNWURI/AAAAAAAAAGk/3MxPnqRamKk/s1600-h/images.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 145px;" src="http://1.bp.blogspot.com/_1q9SmbuPfKQ/SrSHRGNWURI/AAAAAAAAAGk/3MxPnqRamKk/s320/images.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383076182408712466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Version 1.2.0 has been approved by Apple. I have some free app codes for people in the USA if you would like a copy of the game. All I ask is a rating on the store (not many people actually done this when I game away free codes).&lt;br /&gt;&lt;br /&gt;I would like to select some beta testers for Version 2.0.0 which I have began work on. This is the biggest update yet, with multiplayer over HTTP, so I thought it best to get some proper testing going. If you are interested in either then drop me an email.&lt;br /&gt;&lt;br /&gt;I am also conscious that this blog is turning in to a promotion forum for my iPhone development. I might spin off a separate blog for all things Cocos/iPhone and post only Unity on here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5690741819938214529?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5690741819938214529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/09/on-oche-updates.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5690741819938214529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5690741819938214529'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/09/on-oche-updates.html' title='On The Oche Updates'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1q9SmbuPfKQ/SrSHRGNWURI/AAAAAAAAAGk/3MxPnqRamKk/s72-c/images.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-8230854422643521891</id><published>2009-09-08T12:09:00.001-07:00</published><updated>2009-09-08T12:10:36.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='I have submit'/><title type='text'>On The Oche Version 1.2.0</title><content type='html'>I have submit version 1.2.0 of my game for Apple approval, here is a video of the game: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/z5kRgVLLw5s&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/z5kRgVLLw5s&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Once approved I will have some free redeem codes to give away!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-8230854422643521891?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/8230854422643521891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/09/on-oche-version-120.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8230854422643521891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8230854422643521891'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/09/on-oche-version-120.html' title='On The Oche Version 1.2.0'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2802433592499204189</id><published>2009-08-01T12:27:00.001-07:00</published><updated>2009-08-01T12:29:35.663-07:00</updated><title type='text'>Light Mapping a Room with Cheetah3D</title><content type='html'>It took me a few hours to work this out, so I put a quick video together that might help others (If you watch it in Full Screen you will see the settings better):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5876723&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=5876723&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/5876723"&gt;Cheetah3D/Unity3D Light-Mapping a Room&lt;/a&gt; from &lt;a href="http://vimeo.com/user2107232"&gt;John Tear&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2802433592499204189?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2802433592499204189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/08/light-mapping-room-with-cheetah3d.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2802433592499204189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2802433592499204189'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/08/light-mapping-room-with-cheetah3d.html' title='Light Mapping a Room with Cheetah3D'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5378873698857061253</id><published>2009-07-20T02:27:00.000-07:00</published><updated>2009-07-20T02:40:21.834-07:00</updated><title type='text'>3D Attack Video Tutorials</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SmQ62y5k79I/AAAAAAAAAGc/oD0Ka4dZMs0/s1600-h/GA_Flyer.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 247px; height: 320px;" src="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SmQ62y5k79I/AAAAAAAAAGc/oD0Ka4dZMs0/s320/GA_Flyer.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5360474169528348626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I recently purchased a couple of tutorials from &lt;a href="http://3dattack.us/shop/index.php?page=14&amp;amp;PHPSESSID=b9cb2b49e65b7d0a55b71f2181ba61e8"&gt;3D Attack&lt;/a&gt; - I would highly recommend these.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whilst the tutorials aren't going to make you into a brilliant 3D artist overnight they lay down some fundamental stuff where we can probably all do with a little bit of help (particularly if you are a beginner like me)! Even if you don't own Cinema 4D the concepts apply to all other packages... To think before I watched these videos I didn't even consider developing a uniform &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;scale &lt;/span&gt;for my objects/scenes!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This tutorial has increased my level design prototyping times form about 4 days to about 4 hours. I don't know if this is an indication of how bad my work flow was, but it is certainly a lot better now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Game Artist Essentials is certainly the package to buy for the absolute basics of level development and importing in to Unity3D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am not affiliated with 3D Attack btw, I just think as independent developers we should give credit and support each other when it is due.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5378873698857061253?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5378873698857061253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/07/3d-attack-video-tutorials.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5378873698857061253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5378873698857061253'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/07/3d-attack-video-tutorials.html' title='3D Attack Video Tutorials'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1q9SmbuPfKQ/SmQ62y5k79I/AAAAAAAAAGc/oD0Ka4dZMs0/s72-c/GA_Flyer.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-6989476268392941255</id><published>2009-07-14T14:52:00.000-07:00</published><updated>2009-07-14T14:53:44.723-07:00</updated><title type='text'>Space Defender Update</title><content type='html'>Four days in and looking good:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FtAmGWOLLoU&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/FtAmGWOLLoU&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Some code will come soon once I get myself organised!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-6989476268392941255?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/6989476268392941255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/07/space-defender-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/6989476268392941255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/6989476268392941255'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/07/space-defender-update.html' title='Space Defender Update'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2025253844124070277</id><published>2009-07-11T14:23:00.000-07:00</published><updated>2009-07-13T15:04:38.230-07:00</updated><title type='text'>Space Game Prototype</title><content type='html'>A quick and dirty prototype for the Space game (no player interaction as of yet!):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9DFK9xRuB7I&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9DFK9xRuB7I&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;The idea is that you play the role of a gunner on a space station and there is a battle going on. There will be good dudes and bad dudes... you must shoot the bad dudes. I need to scribble down a design doc...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2025253844124070277?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2025253844124070277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/07/quick-and-dirty-prototype-for-space.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2025253844124070277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2025253844124070277'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/07/quick-and-dirty-prototype-for-space.html' title='Space Game Prototype'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-1943907281021694126</id><published>2009-07-11T09:54:00.000-07:00</published><updated>2009-07-11T10:02:41.034-07:00</updated><title type='text'>Space Defence Game</title><content type='html'>I've been concentrating on loads of iPhone development using &lt;a href="http://code.google.com/p/cocos2d-iphone/"&gt;Cocos2D&lt;/a&gt;. I'm really enjoying that and I plan on some major updates to my game - currently in the App Store.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But... to keep my interest fresh and keep my C# skills up to speed I've decided to do a bit more Unity. My son likes anything Star Wars so I thought I would put together a little base defender type game for him to play. I think I might also make all of the code available in this blog. I cannot make the project available because I am going to be using some models which are not licensed for this sort of distribution. I think what I will do is document my progress on the game, including the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will also make the game available as a binary for Windows and OSX.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I need to put a basic design doc together, nothing complex - just keep me on track.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-1943907281021694126?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/1943907281021694126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/07/space-defence-game.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1943907281021694126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1943907281021694126'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/07/space-defence-game.html' title='Space Defence Game'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2077222224156890583</id><published>2009-07-04T00:58:00.000-07:00</published><updated>2009-07-04T01:08:58.408-07:00</updated><title type='text'>App Reviews</title><content type='html'>My first iPhone game has been on sale for a few weeks now and I got a couple of reviews:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first was 'good' but a little watery for me, not enough critique!&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.blogcatalog.com/blog/tap-dat-app/f4f4f8403f4af0c5eca77da75b1d025d"&gt;http://www.blogcatalog.com/blog/tap-dat-app/f4f4f8403f4af0c5eca77da75b1d025d&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second is BRUTALLY honest and perhaps a little harsh!&lt;/div&gt;&lt;div&gt;&lt;a href="http://justanotheriphoneblog.com/wordpress/iphone-games/review-on-the-oche-darts-for-iphone"&gt;http://justanotheriphoneblog.com/wordpress/iphone-games/review-on-the-oche-darts-for-iphone&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whilst I would like everybody to love my game and buy it in the thousands I am a fairly realistic type of guy and know that isn't going to happen over night. I have read the first review ONCE and the second review at least FIVE times already. Based on this I regard the second review as much more helpful when I am developing the updates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My sales will never improve (currently at a meagre 2 sales per day) if I don't take on board what people, especially the critics, think of my game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing I have learned from this experience is that it isn't worth throwing out a basic game with the idea of updating it's features. I would have been better off adding the features in the original release even if it had delayed the release date (costing me around 30-odd sales... but potentially adding more sales because of better reviews)... we live and learn!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2077222224156890583?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2077222224156890583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/07/app-reviews.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2077222224156890583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2077222224156890583'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/07/app-reviews.html' title='App Reviews'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-524454164985694557</id><published>2009-06-24T09:24:00.000-07:00</published><updated>2009-06-26T01:51:50.103-07:00</updated><title type='text'>Free App Redeem Codes For On The Oche Darts</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;UPDATE: I stumbled upon a blog entry: &lt;a href="http://www.daleisphere.com/how-to-get-u-s-only-iphone-apps-with-hotspot-shield/"&gt;http://www.daleisphere.com/how-to-get-u-s-only-iphone-apps-with-hotspot-shield/&lt;/a&gt; - this claims that you can use the USA app store from anywhere in the world using a VPN client. If you want to give it a shot and claim a redeem code just let me know, I would be interested to know if this works...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;To generate a little bit of interest and hopefully get some decent ratings on the app store to get me moving I'm going to give away some redeem codes for my On The Oche Darts Game. Generating initial interest in a game is difficult, I am going to publish a chart of sales/downloads in a couple of months - it may or may not help somebody also trying to generate a little income from iPhone games.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;If you would like a redeem code send me an email at john(dot)tear(at)mac(dot)com and I'll email you one back. All I ask is that you rate the game or review the game. I'm not asking for 5 stars, just an honest rating/review.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Please take a look at my website: &lt;a href="http://www.ontheoche.com/"&gt;http://www.ontheoche.com&lt;/a&gt; for planned updates and faqs.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Note: Redeem codes are only available on the App Store in the USA. I only have a limited amount of Redeem Codes, first come first served! :o)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-524454164985694557?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/524454164985694557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/06/free-app-redeem-codes-for-on-oche-darts.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/524454164985694557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/524454164985694557'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/06/free-app-redeem-codes-for-on-oche-darts.html' title='Free App Redeem Codes For On The Oche Darts'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-682393338960464833</id><published>2009-05-28T13:10:00.001-07:00</published><updated>2009-05-28T13:13:48.724-07:00</updated><title type='text'>On The Oche - Ready For Sale!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1q9SmbuPfKQ/Sh7wP6ySR-I/AAAAAAAAAGU/OCZxiyIPM3g/s1600-h/Picture+6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 109px;" src="http://2.bp.blogspot.com/_1q9SmbuPfKQ/Sh7wP6ySR-I/AAAAAAAAAGU/OCZxiyIPM3g/s320/Picture+6.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5340970364376860642" /&gt;&lt;/a&gt;&lt;br /&gt;Apple approved my first iPhone game today (8 days since I submit it). Strange thing is they didn't test the back-end scoring system as there was no entry in the SQL server database!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wasn't worried for a second... honest!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, take your iPhone over to the App Store (this isn't a real store in town by the way) on the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;30th May&lt;/span&gt; and buy about 30 copies! ;o)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm so into Cocoa, Objective-C and the iPhone I'm not even sure if I will get back into Unity for a little while... Time will tell.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-682393338960464833?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/682393338960464833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/05/on-oche-ready-for-sale.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/682393338960464833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/682393338960464833'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/05/on-oche-ready-for-sale.html' title='On The Oche - Ready For Sale!'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1q9SmbuPfKQ/Sh7wP6ySR-I/AAAAAAAAAGU/OCZxiyIPM3g/s72-c/Picture+6.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3115777985655176709</id><published>2009-05-22T13:50:00.000-07:00</published><updated>2009-05-22T14:10:08.952-07:00</updated><title type='text'>Unity For iPhone - My Thoughts</title><content type='html'>I got round to taking a quick look at Unity3D for iPhone today. I have had a demo license for about 7 days. I was so busy getting my first iPhone app ready for the app store I didn't get chance to have a play with it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This isn't going to look too good on a Unity3D blog but... I didn't really like it! I don't want no flaming from yo bia-tches, this is simply my opinion!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;First Off: Unity3D is very good, I am writing about the Unity for iPhone...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At first I was really excited (doesn't take much to turn me on) when I saw that it has a feature called Unity Remote. Basically you build and install the Unity Remote application on to your iPhone/iPod which allows you to run the application in the Unity editor and stream the output to the device. It also allows you to use things like the accelerometer on the device and see the results in the Unity editor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the downsides I immediately found was that the graphics that were streamed to the device are awful... not just a little bad but bloody awful! Understandably I suppose at it uses Wifi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So... I decided to make something really simple. I created a basic space shooter type game with a 3D ship asset and a space skybox. I used the accelerometer to move the ship around the screen, grabbing the Vector3 stuff and translating it to physics force application on each update. It ran ok until I built and ran it on the device... oh boy...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looked bad and it played even worse! The texture compression for the skybox was rubbish! One other thing that threw me off was that when I deployed to the device the orientation of the screen AND the forces applied had been rotated by 90 degrees. I understand that there is probably a setting, as there is in Cocoa Touch, to set this. BUT... Managed IDE/Engine - what you see in the IDE is what you should get... and I didn't!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many people have had great success with the Unity iPhone engine, you only have to look at the success of Zombieville USA to see this, but for the time being I will stick to Objective-C and the very impressive  &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;(and free)&lt;/span&gt; &lt;a href="http://code.google.com/p/cocos2d-iphone/"&gt;Cocos2D engine&lt;/a&gt;. I reckon you can get much better performance on this device by deploying 2D games that look a better due to the texture compression needed for 3D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will give Unity3D another try but not whilst I am trying to roll out a few games quickly.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3115777985655176709?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/3115777985655176709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/05/unity-for-iphone-my-thoughts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3115777985655176709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3115777985655176709'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/05/unity-for-iphone-my-thoughts.html' title='Unity For iPhone - My Thoughts'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3664278489763406077</id><published>2009-05-20T14:30:00.000-07:00</published><updated>2009-05-21T02:38:32.071-07:00</updated><title type='text'>iPhone Game Submit for Approval</title><content type='html'>I finally got my iPhone game uploaded for Apple approval... That is a task in itself - particularly getting the bundle code signed etc. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A couple of screen shots are below:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 214px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338022464529626290" border="0" alt="" src="http://4.bp.blogspot.com/_1q9SmbuPfKQ/ShR3JkFX9LI/AAAAAAAAAGE/RhPgCcpqDpA/s320/Game.png" /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 214px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338022655499190034" border="0" alt="" src="http://1.bp.blogspot.com/_1q9SmbuPfKQ/ShR3UrgEPxI/AAAAAAAAAGM/4L68DLGTNW4/s320/Characters.png" /&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;I would also like to recommend two very talented artists: Levan Lordanishvili (&lt;a href="http://www.vel9studios.com/"&gt;http://www.vel9studios.com/&lt;/a&gt;) and Sara Gioria (&lt;a href="http://www.multiductus.it/"&gt;http://www.multiductus.it/&lt;/a&gt;) for their music and character design respectively.&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;A video of the game can be seen here: &lt;a href="http://www.ontheoche.com/iPhoneGame.mov"&gt;http://www.ontheoche.com/iPhoneGame.mov&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3664278489763406077?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/3664278489763406077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/05/iphone-game-submit-for-approval.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3664278489763406077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3664278489763406077'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/05/iphone-game-submit-for-approval.html' title='iPhone Game Submit for Approval'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1q9SmbuPfKQ/ShR3JkFX9LI/AAAAAAAAAGE/RhPgCcpqDpA/s72-c/Game.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-8791389807082660516</id><published>2009-04-17T16:37:00.000-07:00</published><updated>2009-04-17T16:53:14.716-07:00</updated><title type='text'>iPhone Development without Unity</title><content type='html'>What? iPhone development without Unity?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yeah, I know this is a Unity3D blog but I thought I would share my experiences of iPhone development without buying the Unity3D iPhone license.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided to develop a game for the iPhone, nothing fancy, just a 2D game (a port of an old, but popular online Flash game I developed about 6 years ago). As the game was only in 2D I thought I could do it without a fancy 3D engine... bearing in mind my OpenGL experience is the square root of sod all (pardon my French) and my Objective-C programming experience is even less.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I downloaded the iPhone SDK, joined the Developer Program (59 English pounds), jotted down a quick UML and started coding...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Day 1: Tried to get a basic OpenGL game running (moving between scenes/game states) and the simulator kept crashing... no success - after about 5 hours I was a bit upset so I gave up...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Day 2: Discovered a neat little 2D engine for the iPhone called Cocos2D (&lt;a href="http://code.google.com/p/cocos2d-iphone/"&gt;http://code.google.com/p/cocos2d-iphone/&lt;/a&gt;) - Followed a basic introduction on &lt;a href="http://monoclestudios.com/cocos2d_whitepaper.html"&gt;Monocle Studios&lt;/a&gt; website (which was very helpful to get me started) - the simulator kept crashing but I was a bit over eager to release objects... oh yeah Memory Management... doh!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Day 3: Got a little bit of a demo down and posted it on YouTube... &lt;a href="http://www.youtube.com/watch?v=6fdZru7Cn0g"&gt;http://www.youtube.com/watch?v=6fdZru7Cn0g&lt;/a&gt; - Very pleased, and will be concentrating on getting my first iPhone app published before I get back into Unity...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What did I learn...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;You can make iPhone apps/games really quickly - The SDK is very good, Cocos2D is very good and Objective-C is sort-of easy to pick up.&lt;/li&gt;&lt;li&gt;You don't need a fancy 3D engine to put together a basic 2D game.&lt;/li&gt;&lt;li&gt;Memory Management is a pain in the ass!&lt;/li&gt;&lt;li&gt;XCode is a little harder to use than Visual Studio.&lt;/li&gt;&lt;li&gt;You realise Garbage Collection is a god send when you start using Objective-C&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If you can develop Objective-C, or you are comfortable at picking a new (sometimes weird) programming language up give Objective-C and Cocos2D a whirl... If you really want to use C#/Javascript then buy Unity3D and the iPhone license.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will purchase the iPhone license from Unity when I start looking at 3D but for now I'm happy without it. :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don't forget to take a look: &lt;a href="http://www.youtube.com/watch?v=6fdZru7Cn0g"&gt;http://www.youtube.com/watch?v=6fdZru7Cn0g&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-8791389807082660516?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/8791389807082660516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/04/iphone-development-without-unity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8791389807082660516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8791389807082660516'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/04/iphone-development-without-unity.html' title='iPhone Development without Unity'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-7855089976153236146</id><published>2009-04-12T03:33:00.000-07:00</published><updated>2009-04-12T03:41:16.790-07:00</updated><title type='text'>Game Character Modelling... Again...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SeHE4bslfbI/AAAAAAAAAF8/K7y3s_Alsso/s1600-h/female_char_model.png"&gt;&lt;/a&gt;&lt;br /&gt;Being an indie game developer working on your own isn't easy... It's tough at the top and even tougher at the bottom!&lt;div&gt; &lt;/div&gt;&lt;div&gt;Not only do you have to design and write all of the code (which isn't easy anyway) you also have to design and create all of the assets, including the 3D models.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I have been working on a model for the past couple of weeks for a game in the pipeline (I'm a slow modeller but things are getting faster). The only advice I can give to anybody who is struggling - as somebody who has struggled on numerous occasions when modelling - is to keep at it and never give up - eventually it starts to fit together.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I am by no means 100% happy with the character, but it is taking the shape I want it to:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SeHE4bslfbI/AAAAAAAAAF8/K7y3s_Alsso/s320/female_char_model.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5323752708315119026" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 210px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-7855089976153236146?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/7855089976153236146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/04/game-character-modelling-again.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7855089976153236146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7855089976153236146'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/04/game-character-modelling-again.html' title='Game Character Modelling... Again...'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1q9SmbuPfKQ/SeHE4bslfbI/AAAAAAAAAF8/K7y3s_Alsso/s72-c/female_char_model.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-4965803790518363959</id><published>2009-03-29T04:01:00.000-07:00</published><updated>2009-03-29T04:07:23.616-07:00</updated><title type='text'>Debugging</title><content type='html'>Debugging has been really bugging me recently! I don't like the way Unity logs stuff either! I'm not going to rant. I have created a very simple manager class to log stuff for me. It's easy to use and gives me a bit more control over what to log and when.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.marraboy.com/DebugManager.cs.zip"&gt;Download it here if you want to take a look.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's very simple to implement. Just add an empty GameObject to your class and add the DebugManager.cs script.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Examples:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DebugManager.Instance.Log("Log some stuff information!",  DebuggingLevel.Information);&lt;/div&gt;&lt;div&gt;DebugManager.Instance.Log("Log some stuff Warning!",  DebuggingLevel.Warning);&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DebugManager.Instance.Log("Log some stuff Error!",  DebuggingLevel.Error);&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you look at the properties (exposed variables) in the IDE you can choose what you want to log and a file location if you desire. You can also stop logging to the console.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-4965803790518363959?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/4965803790518363959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/03/debugging.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4965803790518363959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4965803790518363959'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/03/debugging.html' title='Debugging'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-782634386927470872</id><published>2009-03-22T10:35:00.000-07:00</published><updated>2009-03-22T10:55:29.818-07:00</updated><title type='text'>NAT Facilitation</title><content type='html'>One of the biggest problems I have found with multi-player gaming so far is that NAT punch-through using the Master/Facilitator Server offered by Unity does not always work. This is not a problem with the server offering but with NAT punch-through in general. Not all routers are capable or willing to participate in NAT punch-through.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A good description of NAT punch-through can be found &lt;a href="http://www.b500.com/~hplus/nat-punch.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, so you have a bunch of players that can't use NAT punch-through, so what are the options. Using the standard Unity network layer means you don't have much choice other than setting up port forwarding on the players router.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a fact that isn't very technical... Most casual gamers do not know how to and are usually not willing to set up port forwarding on their router and will simply move on to the next game. &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Do you really want to lose potential players?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what do we do? We need to have a server that sits in the middle and relays/proxies packets between players. Most of the games I am working on at present are turn based games and do not require lightening fast connectivity, so I decided to write my own Socket Server that will relay RPC's between players (in a fashion!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Socket Server uses a single TCP connection and uses XML formatted packets so is not ideal for fast paced games (i.e. FPS). The good news is that the connections are established at the client side and should not cause issues with firewalls and routers! I have written a .Net wrapper that can be used in Unity projects to connect to the server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I have time to fully test and document the server I will possibly make it available for download. If you are interested in giving the server a shot then email/message me.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-782634386927470872?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/782634386927470872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/03/nat-facilitation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/782634386927470872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/782634386927470872'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/03/nat-facilitation.html' title='NAT Facilitation'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-6014595077437460630</id><published>2009-02-24T09:54:00.001-08:00</published><updated>2009-02-24T10:09:13.315-08:00</updated><title type='text'>BaseBehaviour and Inheritance</title><content type='html'>It is common, and natural, to start implementing Unity scripts for individual GameObjects by simply creating a new C# script (which is inherited from MonoBehaviour by default) and attaching it to the GameObject in the Unity Editor.&lt;br /&gt;&lt;br /&gt;I found that a lot of my GameObjects needed to utilise a lot of common behaviours (i.e. interpolation, pausing/yielding etc) and using the above method wasn't really good design. Unity is also very particular about exposing objects to the Unity editor that aren't 'known' and so is very particular about using abstract classes/interfaces (don't get me wrong - these can be used powerfully if implemented well in projects - more of that in a different blog entry) :)&lt;br /&gt;&lt;br /&gt;The way around this is to insert a 'base' class of your own that inherits from MonoBehaviour but also captures all of your common behaviours in a single class. Then instead of sub-classing MonoBehaviour, simply sub-class your new BaseBehaviour Class.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;public class BaseBehaviour : MonoBehaviour&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;private void ACommonBehaviour()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;// implement here&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;br /&gt;&lt;br /&gt;public class MyGameObjectBehaviour : BaseBehaviour&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;// can still use the MonoBehaviour methods through inheritance...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;private void Start()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;private void Upload()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-6014595077437460630?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/6014595077437460630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/02/basebehaviour-and-inheritance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/6014595077437460630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/6014595077437460630'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/02/basebehaviour-and-inheritance.html' title='BaseBehaviour and Inheritance'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-7083932673071685869</id><published>2009-01-20T04:35:00.000-08:00</published><updated>2009-02-07T02:29:08.797-08:00</updated><title type='text'>I've been tubed.</title><content type='html'>I have added my fist ever video to You Tube. It's a little demo of the game I am currently working on:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=e-Iz7jLD6ss"&gt;Take a look here...&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-7083932673071685869?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/7083932673071685869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/01/ive-been-tubed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7083932673071685869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7083932673071685869'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/01/ive-been-tubed.html' title='I&apos;ve been tubed.'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-7113417636879603588</id><published>2009-01-12T12:01:00.000-08:00</published><updated>2009-01-12T12:18:47.076-08:00</updated><title type='text'>Changing Camera Views</title><content type='html'>I have been developing a Backgammon game and a requirement was that the Camera could change view on demand (Interpolate between transforms).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://www.marraboy.com/ViewDemo.html"&gt;See the script(s) in action...&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was fairly easily to implement as you will see here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a SettingsManager which is a singleton instance.  Among many things the manager has the following implementation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;public Tran&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;sfo&lt;/span&gt;rm[] CameraPositions = new Transform[3];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the Unity editor you need to create three empty GameObjects and assign them the transforms that you wish to be your camera positions (including rotation).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You need to drag the transforms into your SettingsManager instance, which of course is contained within it's own GameObject within the scene.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now add the following script to your MainCamera:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public class MainCameraBehaviour : MonoBehaviour {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public float MovementDamping;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public float RotationDamping;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;// instance of the singleton&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;private static MainCameraBehaviour _instance;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;private bool _interpolating;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;private Transform _transTo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;private int _cameraIndex;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;/// The singleton instance&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public static MainCameraBehaviour Instance {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;        get &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;        {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            if (_instance == null) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                _instance = FindObjectOfType(typeof (MainCameraBehaviour)) as MainCameraBehaviour;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                if (_instance == null)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                    throw new Exception("You must have a MainCameraBehaviour instance in your scene.");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            return _instance;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;// ensure _instance is garbaged&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    void OnApplicationQuit()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;        _instance = null;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;/// Move the camera to the specified transform immediately.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The Transform to move to&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public void MoveImmediate(Transform Trans)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;transform.position = Trans.position;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;transform.rotation = Trans.rotation;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;/// Initialise an interpolation.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The Transform to move to&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public void StartInterpolation(Transform Trans)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;_transTo = Trans;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;_interpolating = true;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;// Use this for initialization&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;void Start () {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;public void ChangeCameraView()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;_cameraIndex ++;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;if(_cameraIndex &gt;= SettingsManager.Instance.CameraPositions.Length)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;_cameraIndex = 0;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;StartInterpolation(SettingsManager.Instance.CameraPositions[_cameraIndex]);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;// Update is called once per frame&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;void Update () {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;if(_interpolating)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;transform.position = Vector3.Lerp(transform.position, _transTo.position, Time.deltaTime * MovementDamping);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;transform.rotation = Quaternion.Lerp(transform.rotation, _transTo.rotation, Time.deltaTime * RotationDamping);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;if(transform.rotation == _transTo.rotation &amp;amp;&amp;amp; transform.position == _transTo.position)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;_interpolating = false;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Anytime you want to change your Camera position you just use:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;MainCameraBehaviour.Instance.ChangeCameraView();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a nice simple way to have a few different views in a board game but if you want to have more flexible/dynamic camera transforms this method probably will not suit your implementation.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-7113417636879603588?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/7113417636879603588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2009/01/changing-camera-views.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7113417636879603588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7113417636879603588'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2009/01/changing-camera-views.html' title='Changing Camera Views'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2515233305159300184</id><published>2008-11-25T11:13:00.000-08:00</published><updated>2009-01-12T12:30:25.910-08:00</updated><title type='text'>Unity3D Master Server</title><content type='html'>The Unity3D Master Server is provided on the Unity3D website in source code form. This can be compiled using a C++ compiler.&lt;br /&gt;&lt;br /&gt;The resulting executable runs in a console window, which is ok but is not ideal when we want to run the server without logging on. What we need is a Windows 32 Service (I am assuming that the Master Server is running on a Windows Server computer).&lt;br /&gt;&lt;br /&gt;I have wrapped the executable into a small Windows 32 service that simply runs the Master Server hidden. I haven't fully tested this yet but you can download the setup file here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.marraboy.com/MasterServerWrapper.zip"&gt;http://www.marraboy.com/MasterServerWrapper.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will be testing this on a Windows server in the next couple of days and I guess I may need to speak to somebody at Unity to make sure what I am doing is legal!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UPDATE: 1) The service runs fine on a 32 bit Windows 2003 server. 2) I spoke to the dudes at Unity and they are happy for me to distribute this!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want to run your own Master Server and you want it to run in a Windows 32 service then this is the app for you!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2515233305159300184?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2515233305159300184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/11/unity3d-master-server.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2515233305159300184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2515233305159300184'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/11/unity3d-master-server.html' title='Unity3D Master Server'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-8702693850357436621</id><published>2008-10-31T14:46:00.000-07:00</published><updated>2008-10-31T14:56:12.541-07:00</updated><title type='text'>Fake Spherical Mapping</title><content type='html'>If you've ever tried to apply a flat texture to a spherical object then you will have noticed that the texture 'pinches' at the poles and distorts the texture quite a bit. This looks awful!&lt;div&gt; &lt;/div&gt;&lt;div&gt;I had a little play around in Photoshop (and made some enquiries in the Cheetah 3D forum) and I came up with a 'fake' solution for texturing planets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Basically you need to create your tiled texture (It only needs to tile horizontally as the top and bottom are the bits that pinch). Then you need to put some sort of 'fake' bit in at the top and bottom of the texture which disguises the pinching effect.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;In my tests I decided that my planet could have some ice caps (as this makes it a very easy texture to create). A quick render is shown below (along with the texture - bottom left):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_1q9SmbuPfKQ/SQt-qcCKH8I/AAAAAAAAAEY/xDPx_J8mYD8/s320/Planet_Render.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5263439857057406914" /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-8702693850357436621?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/8702693850357436621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/10/fake-spherical-mapping.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8702693850357436621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8702693850357436621'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/10/fake-spherical-mapping.html' title='Fake Spherical Mapping'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1q9SmbuPfKQ/SQt-qcCKH8I/AAAAAAAAAEY/xDPx_J8mYD8/s72-c/Planet_Render.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5858683439148775338</id><published>2008-10-28T10:53:00.000-07:00</published><updated>2009-02-03T23:55:37.555-08:00</updated><title type='text'>Spiral Galaxy Asset</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SQdSYufsF8I/AAAAAAAAAEQ/P_D76fEsl0M/s1600-h/Galaxy.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SQdSYufsF8I/AAAAAAAAAEQ/P_D76fEsl0M/s320/Galaxy.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5262265274356996034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;I had a quick run through &lt;a href="http://blog.hexagonstar.com/galaxy-tutorial/"&gt;this tutorial&lt;/a&gt; last night, showing how to create a spiral galaxy using Adobe Photoshop.&lt;div&gt; &lt;/div&gt;&lt;div&gt;I expanded this to create an alpha blended texture mapped onto a simple plane. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The unity effect can be &lt;a href="http://www.marraboy.com/Galaxy.html"&gt;seen here&lt;/a&gt;. Very quick and easy to create as a background object in any space scene!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5858683439148775338?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5858683439148775338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/10/spiral-galaxy-asset.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5858683439148775338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5858683439148775338'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/10/spiral-galaxy-asset.html' title='Spiral Galaxy Asset'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1q9SmbuPfKQ/SQdSYufsF8I/AAAAAAAAAEQ/P_D76fEsl0M/s72-c/Galaxy.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-240695310783845420</id><published>2008-10-28T02:36:00.000-07:00</published><updated>2008-10-28T02:47:07.993-07:00</updated><title type='text'>Concrete Classes and Unity</title><content type='html'>In my last post I was looking for a way to build some sort of AI framework for my Unity games.&lt;br /&gt;&lt;br /&gt;I now know that in order to expose objects to the Unity IDE (which is how most stuff is done as C# scripts are attached to Game Components) I need to use concrete classes. This effectively means I need to have a major rethink about how I am going to implement an AI framework (if it is even possible).&lt;br /&gt;&lt;br /&gt;My limited knowledge of design patterns tells me not to program to implementations, preferring interfaces (or abstract classes) using composition over inheritance. With these 'restrictions in Unity I may be forced to break both of these 'rules'.&lt;br /&gt;&lt;br /&gt;To be absolutely sure about what I am talking about here...&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class MyBehaviour : MonoBehaviour&lt;br /&gt;{&lt;br /&gt;  // we can do this if RunBehaviour is a concrete class...&lt;br /&gt;  public RunBehaviour runBehaviour;&lt;br /&gt;&lt;br /&gt;  // but we can't do this if IBehaviour is an interface...&lt;br /&gt;  public IBehaviour behaviour;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And to be honest I'm not even 100% sure how good it is to expose a 'custom' object to the IDE.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More to come I am sure...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-240695310783845420?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/240695310783845420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/10/concrete-classes-and-unity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/240695310783845420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/240695310783845420'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/10/concrete-classes-and-unity.html' title='Concrete Classes and Unity'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-4236915337166326974</id><published>2008-10-20T04:13:00.000-07:00</published><updated>2008-10-20T12:59:43.281-07:00</updated><title type='text'>AI Behaviours</title><content type='html'>I have been thinking about this for a couple of months (on and off). I wanted to implement some sort of design that can be reused over multiple projects without too much (if any) changes to the underlying code. The design would be used to control the AI behaviours of game 'characters'.&lt;br /&gt;&lt;br /&gt;My first attempt is shown in the UML diagram below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SPxocyh0dEI/AAAAAAAAAEI/w49Bct6CI4Q/s1600-h/UML_Attempt1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SPxocyh0dEI/AAAAAAAAAEI/w49Bct6CI4Q/s320/UML_Attempt1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259193308671145026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Click the image to see a larger version.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There's a few problems with this, but let me explain how it works first...&lt;br /&gt;&lt;br /&gt;Each Behaviour Script (i.e. &lt;span style="font-style:italic;"&gt;SleepingBehaviour&lt;/span&gt;) is contracted to implement an interface (&lt;span style="font-style:italic;"&gt;ICreatureBehaviour&lt;/span&gt;) - this simply ensures that the class has a &lt;span style="font-style:italic;"&gt;ActionThisScriptImplements&lt;/span&gt; property.&lt;br /&gt;&lt;br /&gt;Within the &lt;span style="font-style:italic;"&gt;Creature&lt;/span&gt; class there is a public array variable of type &lt;span style="font-style:italic;"&gt;ICreatureBehaviour&lt;/span&gt; that composes the Classes mentioned above. So the idea is you have a bunch of Behaviours which are put in the array which is exposed to the Unity IDE (public variable). When you want the creature to change it's behaviour you change the property &lt;span style="font-style:italic;"&gt;CurrentAction&lt;/span&gt; which in turn makes a call to &lt;span style="font-style:italic;"&gt;ActivateScripts&lt;/span&gt; internally. This method simply de-activates all of the scripts other than the current script.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Problems&lt;/span&gt;&lt;br /&gt;I have a couple of problems with this (and you may spot more):&lt;br /&gt;&lt;br /&gt;- Every time a new Action is needed the &lt;span style="font-style:italic;"&gt;CreatureAction&lt;/span&gt; Enum must be updated. Not a real hardship but still not great. This could be resolved by replacing the Enum and simply using Strings (this seems messy to me).&lt;br /&gt;&lt;br /&gt;- There is no method for 'observing' the behaviours and deciding when a new behaviour should be set against the Creature. I need some form of State management. We have a few options here, delegates/events spring to mind (more in a future design).&lt;br /&gt;&lt;br /&gt;- It doesn't seem very flexible at run time. For example all of the &lt;span style="font-style:italic;"&gt;ICreatureBehaviour&lt;/span&gt; scripts must be instantiated in the IDE. It would nice to be able to set these at run time.&lt;br /&gt;&lt;br /&gt;- EDIT: It doesn't seem possible to expose interfaces to the Unity IDE * I'm going to have to rethink this one through! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What Next?&lt;/span&gt;&lt;br /&gt;I'm not 100% happy with this design. I will be having another look at it in the next couple of days. I am going to try and take advantage of some tried and tested design patterns and see if I can apply them to Unity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-4236915337166326974?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/4236915337166326974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/10/ai-behaviours.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4236915337166326974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4236915337166326974'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/10/ai-behaviours.html' title='AI Behaviours'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1q9SmbuPfKQ/SPxocyh0dEI/AAAAAAAAAEI/w49Bct6CI4Q/s72-c/UML_Attempt1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2264491889006231676</id><published>2008-10-18T02:31:00.000-07:00</published><updated>2008-10-28T02:35:33.450-07:00</updated><title type='text'>Version Control for the Single Developer</title><content type='html'>I recently discovered (actually I was advised) version control for my projects. A version control system is a way to manage all of your project files and directories in a centralised location.&lt;br /&gt;&lt;br /&gt;All changes made to your projects will be saved as revisions which can be restored to at any time during the project. Multiple users can work on the same project by 'checking out' project files and 'updating' their changes by uploaded them to the central repository.&lt;br /&gt;&lt;br /&gt;I never thought I would ever need this sort of system as I develop most (if not all) of my projects alone. I was wrong!&lt;br /&gt;&lt;br /&gt;As part of a cost saving exercise I decided to implement a RADIUS server for the company I work for and found myself needing to work on the project from home. This meant I had to either save the project to USB pen-drive or connect into the company LAN remotely via VPN and copy the files on to my PC at home. The other problem was that I have multiple PCs and don't always work on the same on.&lt;br /&gt;&lt;br /&gt;Needless to say I ended up with multiple versions on multiple PCs and no idea which was the most current!&lt;br /&gt;&lt;br /&gt;I decided to ask a friend who works on projects with other developers and asked what the best way forward was.&lt;br /&gt;&lt;br /&gt;He advised me to use an open source system called SubVersion. This has solved all of my problems. I no longer have problems working on multiple PCs (OS X/Win 32) and I no longer have problems locating the most recent version.&lt;br /&gt;&lt;br /&gt;If you are a single developer and work on multiple PCs I highly recommend SubVersion.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://svnbook.red-bean.com/"&gt;A free book on SubVersion.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scplugin.tigris.org/"&gt;A free OS X SubVersion client.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;A free Windows SubVersion client.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.visualsvn.com/server/"&gt;A free SubVersion server for Windows.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shoesobjects.com/blog/pages/subversion_apache_on_osx.html"&gt;How to set up SubVersion server on OS X.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.bitethebullet.co.uk'&gt;www.bitethebullet.co.uk - My friends website - LOADS of cool C# stuff (check out the EMail template library).&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2264491889006231676?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2264491889006231676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/10/version-control-for-single-developer.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2264491889006231676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2264491889006231676'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/10/version-control-for-single-developer.html' title='Version Control for the Single Developer'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2895588924725162494</id><published>2008-09-14T13:56:00.001-07:00</published><updated>2009-02-03T23:58:03.808-08:00</updated><title type='text'>Backgammon Scene</title><content type='html'>&lt;div&gt;Work in progress...&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SM16reQdPZI/AAAAAAAAADE/ITRx4gpDmjw/s1600-h/Picture+1.png"&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_1q9SmbuPfKQ/SM16reQdPZI/AAAAAAAAADE/ITRx4gpDmjw/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5245984028231548306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Perhaps a bit overkill for a backgammon game but it's great experience at creating a 3D scene!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2895588924725162494?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2895588924725162494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/09/backgammon-scene.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2895588924725162494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2895588924725162494'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/09/backgammon-scene.html' title='Backgammon Scene'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1q9SmbuPfKQ/SM16reQdPZI/AAAAAAAAADE/ITRx4gpDmjw/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-451321471685105786</id><published>2008-09-10T04:33:00.000-07:00</published><updated>2008-09-10T04:51:21.623-07:00</updated><title type='text'>Linear Interpolation (LERP)</title><content type='html'>I'm not even going to attempt to explain what Linear Interpolation is because I don't understand the mathematics involved (I haven't even tried to understand it to be honest). Have a look at this &lt;a href="http://en.wikipedia.org/wiki/Lerp_(computing)"&gt;Link on Wikipedia&lt;/a&gt; if you are interested.&lt;br /&gt;&lt;br /&gt;Fortunately the UnityEngine framework makes using this stuff very simple (as it does with most other stuff). I have a design requirement in my backgammon game where I want the camera to start in a certain position/rotation (in world space) but move to a particular position/rotation when a game begins (depending upon which player you are, i.e. red checkers or blue checkers).&lt;br /&gt;&lt;br /&gt;What I decided to do was to create a some empty Game Components and place them in the scene at the positions and rotations of the camera 'mounts'. I used StartCameraPosition, ServerCameraPosition and ClientCameraPosition. I then used these three transforms in a CameraBehaviour script as exposed Transform objects. When the game begins (controlled in a different script) the MoveIntoPosition property is set to true.&lt;br /&gt;&lt;br /&gt;One thing to note is that Transform.position is a Vector3 object and Transform.rotation is a Quaternion object, hence the different static methods are called to perform the interpolation (Vector3.Lerp and Quaternion.Lerp respectively).&lt;br /&gt;&lt;br /&gt;Here is the script (very simple to follow - if you don't follow just drop me an email!):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;using UnityEngine;&lt;br /&gt;using System.Collections;&lt;br /&gt;&lt;br /&gt;public sealed class CameraBehaviour : MonoBehaviour {&lt;br /&gt;&lt;br /&gt;  #region "Unity Exposed Members"&lt;br /&gt;&lt;br /&gt;    public float MovementDamping;&lt;br /&gt;    public float RotationDamping;&lt;br /&gt;    public Transform StartCameraPosition;&lt;br /&gt;    public Transform ServerCameraPosition;&lt;br /&gt;    public Transform ClientCameraPosition;&lt;br /&gt;&lt;br /&gt;  #endregion&lt;br /&gt;&lt;br /&gt;  #region "Private Members"&lt;br /&gt;&lt;br /&gt;  private bool _moveIntoPosition = false;&lt;br /&gt;&lt;br /&gt;  #endregion&lt;br /&gt;&lt;br /&gt;  #region "Public Properties"&lt;br /&gt;&lt;br /&gt;  ///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;     &lt;summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;  /// Sets a boolean to indicate if the camera should move into the 'game position'.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/summary&gt;&lt;div&gt;&lt;summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  /// Must be called AFTER a game has started (when both players are in the room).&lt;br /&gt;  ///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  public bool MoveIntoPosition&lt;br /&gt;  {&lt;br /&gt;    set&lt;br /&gt;    {&lt;br /&gt;      _moveIntoPosition = value;&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  #endregion&lt;br /&gt;&lt;br /&gt;  #region "Unity Called Methods/Events"&lt;br /&gt;&lt;br /&gt;  private void Awake()&lt;br /&gt;  {&lt;br /&gt;    transform.position = StartCameraPosition.position;&lt;br /&gt;    transform.rotation = StartCameraPosition.rotation;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private void Update() {&lt;br /&gt;    if(_moveIntoPosition == false)&lt;br /&gt;      return;&lt;br /&gt;&lt;br /&gt;    if(Network.isServer)&lt;br /&gt;    {&lt;br /&gt;      transform.position = Vector3.Lerp(transform.position, ServerCameraPosition.position, Time.deltaTime * MovementDamping);&lt;br /&gt;      transform.rotation = Quaternion.Lerp(transform.rotation, ServerCameraPosition.rotation, Time.deltaTime * RotationDamping);&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;      transform.position = Vector3.Lerp(transform.position, ClientCameraPosition.position, Time.deltaTime * MovementDamping);&lt;br /&gt;      transform.rotation = Quaternion.Lerp(transform.rotation, ClientCameraPosition.rotation, Time.deltaTime * RotationDamping);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  #endregion&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-451321471685105786?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/451321471685105786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/09/linear-interpolation-lerp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/451321471685105786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/451321471685105786'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/09/linear-interpolation-lerp.html' title='Linear Interpolation (LERP)'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3517444308424929991</id><published>2008-09-03T01:31:00.001-07:00</published><updated>2009-02-03T23:58:50.461-08:00</updated><title type='text'>Dice Testing</title><content type='html'>I put together a little dice testing app together for my backgammon game. I needed to find a method for rolling/throwing two dice and then detecting what number is displayed on each dice. I found a &lt;a href="http://forum.unity3d.com/viewtopic.php?t=4161&amp;amp;highlight=dice"&gt;script on the Unity forums written in JavaScript&lt;/a&gt;.I created a prefab and then converted the script to C#.&lt;br /&gt;&lt;br /&gt;The prefab construction is very simple:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1q9SmbuPfKQ/SL5LeCFAMuI/AAAAAAAAAC0/3rfNDvDw9XU/s1600-h/Die+Prefab.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_1q9SmbuPfKQ/SL5LeCFAMuI/AAAAAAAAAC0/3rfNDvDw9XU/s320/Die+Prefab.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5241709995631850210"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The converted C# script (It's a bit lengthy):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;font style=""&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;using UnityEngine;&lt;br /&gt;using System;&lt;br /&gt;&lt;br /&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;/// Delegate for the RollComplete event.&lt;br /&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The script sending the event.&lt;br /&gt;///The face of the die pointing upwards in world space.&lt;br /&gt;public delegate void RollCompleteEvent(object sender, int faceUp);&lt;br /&gt;&lt;br /&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;/// Class to represent the behaviour of six sided die. When the class is instantiated the dice is thrown in a random motion.&lt;br /&gt;/// When the dice has rested the event RollComplete is thrown.&lt;br /&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/summary&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;public sealed class DieBehaviour : MonoBehaviour {&lt;br /&gt;&lt;br /&gt; #region "Events"&lt;br /&gt;&lt;br /&gt; public event RollCompleteEvent RollComplete;&lt;br /&gt;&lt;br /&gt; #endregion&lt;br /&gt;&lt;br /&gt; #region "Private Members"&lt;br /&gt;&lt;br /&gt;  // possible directions (including negatives) which the die can face&lt;br /&gt;  Vector3[] _sides = {Vector3.up, Vector3.right, -Vector3.forward };&lt;br /&gt;  // only detect sleeping rigidbody once&lt;br /&gt;  private bool _isSleeping = false;&lt;br /&gt;&lt;br /&gt; #endregion&lt;br /&gt;&lt;br /&gt; #region "Private Methods"&lt;br /&gt;&lt;br /&gt; // find out which face on the die is facing upwards and return the result&lt;br /&gt; private int WhichIsUp()&lt;br /&gt; {&lt;br /&gt;  float maxY = float.NegativeInfinity;&lt;br /&gt;  int result = -1;&lt;br /&gt;&lt;br /&gt;  for(int i=0; i &lt; 3; i++)   {    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;    Vector3 worldSpace = transform.TransformDirection(_sides[i]);    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;    // test direction    if(worldSpace.y &gt; maxY)&lt;br /&gt;    {&lt;br /&gt;      result = i+1;&lt;br /&gt;      maxY = worldSpace.y; &lt;br /&gt;    } &lt;br /&gt;    // test negative direction&lt;br /&gt;    if(-worldSpace.y &gt; maxY)&lt;br /&gt;    {&lt;br /&gt;      result = 6-i;&lt;br /&gt;      maxY=-worldSpace.y; &lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  return result; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // check to see if the die has rested (rigidbody is sleeping)&lt;br /&gt; private bool IsAtRest()&lt;br /&gt; {&lt;br /&gt;  _isSleeping = rigidbody.IsSleeping();&lt;br /&gt;  return _isSleeping;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; #endregion&lt;br /&gt;&lt;br /&gt; #region "Unity Called Methods/Events"&lt;br /&gt;&lt;br /&gt; private void Start ()&lt;br /&gt; {&lt;br /&gt;  // throw the dice in a random manner - only test values&lt;br /&gt;  rigidbody.AddRelativeTorque(Vector3.up * ((UnityEngine.Random.value * 20) + 10));&lt;br /&gt;  rigidbody.AddRelativeTorque(Vector3.forward * ((UnityEngine.Random.value * 20) + 10));&lt;br /&gt;  rigidbody.AddRelativeTorque(Vector3.right * ((UnityEngine.Random.value * 20) + 10));&lt;br /&gt;  rigidbody.AddRelativeForce(Vector3.up * ((UnityEngine.Random.value * 120) + 30));&lt;br /&gt;  rigidbody.AddRelativeForce(Vector3.left * ((UnityEngine.Random.value * 170) + 30));&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void Update ()&lt;br /&gt; {&lt;br /&gt;  // only want to throw the event once&lt;br /&gt;  if(!_isSleeping)&lt;br /&gt;  {&lt;br /&gt;    if(IsAtRest())&lt;br /&gt;    {&lt;br /&gt;      if(RollComplete != null)&lt;br /&gt;        RollComplete(this,WhichIsUp());&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; #endregion&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;               &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SL6JuQwioUI/AAAAAAAAAC8/_3pIEKMjg0w/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SL6JuQwioUI/AAAAAAAAAC8/_3pIEKMjg0w/s320/Picture+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5241778444171387202" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3517444308424929991?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/3517444308424929991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/09/dice-testing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3517444308424929991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3517444308424929991'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/09/dice-testing.html' title='Dice Testing'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1q9SmbuPfKQ/SL5LeCFAMuI/AAAAAAAAAC0/3rfNDvDw9XU/s72-c/Die+Prefab.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2379505683367107824</id><published>2008-08-31T11:11:00.000-07:00</published><updated>2008-08-31T11:18:57.691-07:00</updated><title type='text'>Backgammon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLrfB_hD7KI/AAAAAAAAACs/SnGu-n6T0Zo/s1600-h/boardConcept.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLrfB_hD7KI/AAAAAAAAACs/SnGu-n6T0Zo/s320/boardConcept.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5240746341721959586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have started work on a multiplayer Backgammon game. I have done some socket work in Adobe Flash, but never in Unity. The main difference is that I will be able to do peer-to-peer multiplayer, where Flash only supports TCP connections to a server.&lt;br /&gt;&lt;br /&gt;My main goals are:&lt;br /&gt;&lt;br /&gt;1) To create a multiplayer, networked game in Unity.&lt;br /&gt;2) Improve my modeling and texturing, I plan to set the board in a 'fantasy' room.&lt;br /&gt;3) Incorporate some decent sounds.&lt;br /&gt;4) Learn how to play backgammon (not something I really want to do - but I guess this is essential)!&lt;br /&gt;&lt;br /&gt;Oh well, wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2379505683367107824?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2379505683367107824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/08/backgammon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2379505683367107824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2379505683367107824'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/08/backgammon.html' title='Backgammon'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLrfB_hD7KI/AAAAAAAAACs/SnGu-n6T0Zo/s72-c/boardConcept.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2861506800534922997</id><published>2008-08-30T13:24:00.000-07:00</published><updated>2008-08-31T00:36:33.482-07:00</updated><title type='text'>Let There Be Light!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLmss_U8DsI/AAAAAAAAACk/YvjAf7Tlexo/s1600-h/LetThereBeLight.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLmss_U8DsI/AAAAAAAAACk/YvjAf7Tlexo/s400/LetThereBeLight.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5240409530335760066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the image above to see the image full size.&lt;br /&gt;If you want to see this Unity3D scene: &lt;a href="http://www.ontheoche.com/LetThereBeLight.html"&gt;Click Here!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Following on from my last blog entry I decided to have a little play around with Cheetah3D and Unity3D to see if I could make my scenes look a little more interesting and realistic.&lt;br /&gt;&lt;br /&gt;I played around with Cheetah to see if I could create some better textures, as the ones I had been creating looked a little dull when I imported into Unity. I bought a book a few months back showing how to create game textures which was good but they just didn't look good in Unity. They looked great in Cheetah... but not in Unity!!! :(&lt;br /&gt;&lt;br /&gt;OK, here's what I did...&lt;br /&gt;&lt;br /&gt;1) Model the scene (not a very big one in this case).&lt;br /&gt;2) Import the textures and map them as I did normally.&lt;br /&gt;&lt;br /&gt;OK, this was where I usually imported the model, materials and textures into Unity and get p*ssed about how rubbish they looked! So...&lt;br /&gt;&lt;br /&gt;3) Add the lights to the scene in Cheetah.&lt;br /&gt;4) Add a bake texture tag and map to UV2. (Not forgetting to press the 'baking UV coords - create' button)&lt;br /&gt;5) Bake the texture and save it as a .tiff.&lt;br /&gt;&lt;br /&gt;This is the bit that took me ages to figure out...&lt;br /&gt;&lt;br /&gt;6) Change the tag to map to UV1. (Not forgetting to press the 'baking UV coords - create' button).&lt;br /&gt;7) Delete all the existing materials.&lt;br /&gt;8) Add a new material with the baked texture .tiff I created.&lt;br /&gt;9) Apply the material to the scene.&lt;br /&gt;10) Import the model, single material and single texture into Unity.&lt;br /&gt;12) What happened to 11?&lt;br /&gt;&lt;br /&gt;Take a quick look at the image at the top to see the improvement I made. Maybe still not the best but slowly getting better! (VERY SLOWLY).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2861506800534922997?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2861506800534922997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/08/let-there-be-light.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2861506800534922997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2861506800534922997'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/08/let-there-be-light.html' title='Let There Be Light!'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1q9SmbuPfKQ/SLmss_U8DsI/AAAAAAAAACk/YvjAf7Tlexo/s72-c/LetThereBeLight.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5538583971370303021</id><published>2008-08-21T11:19:00.001-07:00</published><updated>2008-08-30T13:36:11.248-07:00</updated><title type='text'>Shadows in Unity Indie</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SK2x6ek33iI/AAAAAAAAACc/3727_Q7_-3g/s1600-h/LightMappedShadows.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_1q9SmbuPfKQ/SK2x6ek33iI/AAAAAAAAACc/3727_Q7_-3g/s320/LightMappedShadows.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5237037559900003874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are like me and can't afford the £1,000 ($2,000 USD) price tag on Unity3D Pro you don't have the ability to create rendered shadows dynamically at run time. There is however a way round this. And that is by creating a texture that contains the shadows!&lt;br /&gt;&lt;br /&gt;I have to stress that these are not dynamic shadows but it is possible to create nice scenes where lights don't move or are distant (like the sun).&lt;br /&gt;&lt;br /&gt;I use Cheetah3D and this is fairly easy to achieve. Firstly you need to texture the objects normally, add some light to the scene and when you are happy with your renders add the Bake Texture Tag. Press the Bake toolbar button and you have a nice light mapped texture!&lt;br /&gt;&lt;br /&gt;The image shows a normal texture and a light mapped texture in Unity3D.&lt;br /&gt;&lt;br /&gt;If you want a more detailed explanation of what to do, feel free to email me.&lt;br /&gt;&lt;br /&gt;EDIT: I should add that I recently discovered blob shadows in unity which is great (well not too bad) for objects that move about - and in Version 2.1 they are rendered onto terrains too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5538583971370303021?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5538583971370303021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/08/shadows-in-unity-indie.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5538583971370303021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5538583971370303021'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/08/shadows-in-unity-indie.html' title='Shadows in Unity Indie'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1q9SmbuPfKQ/SK2x6ek33iI/AAAAAAAAACc/3727_Q7_-3g/s72-c/LightMappedShadows.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-9122064955003501865</id><published>2008-08-05T10:33:00.000-07:00</published><updated>2008-08-31T11:17:49.663-07:00</updated><title type='text'>Unity Developer Magazine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_1q9SmbuPfKQ/SJiPZrytrSI/AAAAAAAAACU/0JHoI2Zp02w/s1600-h/5d8fd6c6064d1bbec2945715f3d50e34.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_1q9SmbuPfKQ/SJiPZrytrSI/AAAAAAAAACU/0JHoI2Zp02w/s320/5d8fd6c6064d1bbec2945715f3d50e34.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5231088638605765922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first ever magazine for unity developers has been released. I'm still waiting for mine to come through the post but got a preview by .pdf. I haven't had chance to read it yet due to work commitments but will hopefully be getting back into Unity in the next couple of weeks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unitydeveloper.com"&gt;http://www.unitydeveloper.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPDATE: 18th August 2008 - I've had a chance to start looking through the magazine and I am pleased to have bought it. It's early days but the two main 'tutorials' in it (Pathfinding and Vectors) look quite good. I look forward to the second issue and would love to see some 3D modeling tutorials in future - are you listening Mr. Hinshaw? ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-9122064955003501865?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/9122064955003501865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/08/unity-developer-magazine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/9122064955003501865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/9122064955003501865'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/08/unity-developer-magazine.html' title='Unity Developer Magazine'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_1q9SmbuPfKQ/SJiPZrytrSI/AAAAAAAAACU/0JHoI2Zp02w/s72-c/5d8fd6c6064d1bbec2945715f3d50e34.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-939621106510868132</id><published>2008-07-30T07:23:00.000-07:00</published><updated>2008-07-30T07:27:46.394-07:00</updated><title type='text'>XmlSerializer</title><content type='html'>I haven't posted for a while because I have been busy doing some .Net work.&lt;br /&gt;&lt;br /&gt;I done quite a bit of work on some C# classes that I wanted to serialize into XML documents. When I completed the code I gave it a little test to find the following exception:&lt;br /&gt;&lt;br /&gt;There was an error reflecting type...&lt;br /&gt;&lt;br /&gt;Looking at the inner exception I see that my class contains Hashtable instances which is causing the problem. I would hate for anybody else to put some work in then find out that their code won't work - So...&lt;br /&gt;&lt;br /&gt;Any object that implements the IDictionary interface (as Hashtable does) CANNOT be serialized to XML!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-939621106510868132?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/939621106510868132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/07/xmlserializer.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/939621106510868132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/939621106510868132'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/07/xmlserializer.html' title='XmlSerializer'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-4199681948953730134</id><published>2008-06-19T07:54:00.000-07:00</published><updated>2008-06-19T08:02:47.005-07:00</updated><title type='text'>10 minute model</title><content type='html'>I recently purchased  a book - 3D Game Textures: Create Professional Game Art Using Photoshop. I don't actually own Photoshop but there's a demo available so I thought I'd give it a shot... and what budding 3D artist is going to get far using Adobe Flash???&lt;br /&gt;&lt;br /&gt;Anyway I knocked this quick 3D model up in Cheetah with the textures created in the tutorials...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_1q9SmbuPfKQ/SFp01l4Lf-I/AAAAAAAAACM/SXXRQWDbihs/s1600-h/space_tunnel.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_1q9SmbuPfKQ/SFp01l4Lf-I/AAAAAAAAACM/SXXRQWDbihs/s320/space_tunnel.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5213607982684405730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I would recommend the book for anybody new to textures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-4199681948953730134?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/4199681948953730134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/06/10-minute-model.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4199681948953730134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4199681948953730134'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/06/10-minute-model.html' title='10 minute model'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_1q9SmbuPfKQ/SFp01l4Lf-I/AAAAAAAAACM/SXXRQWDbihs/s72-c/space_tunnel.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3358507212936081204</id><published>2008-06-07T12:52:00.001-07:00</published><updated>2008-06-07T12:56:30.470-07:00</updated><title type='text'>Creating Textures in Macromedia Flash 8</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_1q9SmbuPfKQ/SErnH--31rI/AAAAAAAAACE/ftqvdOe9vO0/s1600-h/Picture+4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_1q9SmbuPfKQ/SErnH--31rI/AAAAAAAAACE/ftqvdOe9vO0/s320/Picture+4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5209230043359205042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yep you read the title correctly! Why on earth would anybody want to create a texture in Flash? The answer(s) for me were simple... &lt;br /&gt;&lt;br /&gt;1) I have no idea how to use Photoshop (Yet).&lt;br /&gt;2) I cannot afford to buy Photoshop (Yet).&lt;br /&gt;3) I already have a license for Flash 8.&lt;br /&gt;4) I have been using Flash for around 6 years.&lt;br /&gt;&lt;br /&gt;I am not saying Flash is the best tool for creating textures but it doesn't do too bad a job for what I require. Obviously the artists working on the next version of Unreal Tournament aren't going to use Flash to create their textures, but sometimes you have to use the tools available to you... and I happen to have Flash 8!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3358507212936081204?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/3358507212936081204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/06/creating-textures-in-macromedia-flash-8.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3358507212936081204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3358507212936081204'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/06/creating-textures-in-macromedia-flash-8.html' title='Creating Textures in Macromedia Flash 8'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_1q9SmbuPfKQ/SErnH--31rI/AAAAAAAAACE/ftqvdOe9vO0/s72-c/Picture+4.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-7938001124829990</id><published>2008-06-07T10:56:00.000-07:00</published><updated>2008-06-07T11:08:37.175-07:00</updated><title type='text'>Adding a bit of flare!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_1q9SmbuPfKQ/SErOnyEM4-I/AAAAAAAAAB8/mg_OT2G2k3s/s1600-h/asteroids_flare.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_1q9SmbuPfKQ/SErOnyEM4-I/AAAAAAAAAB8/mg_OT2G2k3s/s320/asteroids_flare.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5209203101857014754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was having a little play with Flares in Unity and thought it might be nice to add one to my Asteroids game. This is probably the last change I will make to this game as I move on to something else.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-7938001124829990?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/7938001124829990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/06/adding-bit-of-flare.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7938001124829990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/7938001124829990'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/06/adding-bit-of-flare.html' title='Adding a bit of flare!'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_1q9SmbuPfKQ/SErOnyEM4-I/AAAAAAAAAB8/mg_OT2G2k3s/s72-c/asteroids_flare.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2412808917226897922</id><published>2008-06-05T05:00:00.000-07:00</published><updated>2008-06-05T05:12:17.287-07:00</updated><title type='text'>Microsoft IIS and the Unity web player</title><content type='html'>I have been using Microsoft Server 2003 for hosting my website(s). I chose Windows over Linux because I have a few .Net Services I need to run over the internet. Although I like Mac OSX I am willing to admit that Microsoft do have some decent products, and I happen to think that IIS is one of them - simply because it is easy to configure and easy to use. I did however come across a problem when I uploaded my first Unity3D game.&lt;br /&gt;&lt;br /&gt;The Unity we player was displaying a message &lt;strong&gt;'Failed to load data file'&lt;/strong&gt;. This was very confusing as I had checked the security on the file, the file extension and the references to the file in the .htm file. After some discussion with other people and a bit of reading the Microsoft knowledge base I found the answer.&lt;br /&gt;&lt;br /&gt;Basically IIS is very picky about MIME types. One person used the phrase &lt;strong&gt;MIME Fascist&lt;/strong&gt; which tickled me! Anyway to fix the problem you need to open up IIS Manager, open the properties of the particular web site, open the &lt;strong&gt;HTTP Headers&lt;/strong&gt; tab and add a new MIME type. You need to supply the extension and a name (the extension is .unity3d).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2412808917226897922?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2412808917226897922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/06/microsoft-iis-and-unity-web-player.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2412808917226897922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2412808917226897922'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/06/microsoft-iis-and-unity-web-player.html' title='Microsoft IIS and the Unity web player'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-4471782702214536619</id><published>2008-06-02T08:58:00.000-07:00</published><updated>2008-06-03T22:51:07.476-07:00</updated><title type='text'>Asteroids Clone - Complete</title><content type='html'>Here it is... My first attempt at creating a game! It's not a very good game and it's not really a complete game but it has served it's purpose, which was to get familiar with the Unity engine. Now on to something more adventurous...&lt;div&gt;Keys: Up Arrow - Thrust, Left/Right Arrow - Direction, Space - Fire Missile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Have Fun!&lt;br /&gt;&lt;p&gt;Follow &lt;a href="http://www.ontheoche.com/AsteroidsClone.htm"&gt;this link&lt;/a&gt; to play the game.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-4471782702214536619?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/4471782702214536619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/06/asteroids-clone-complete.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4471782702214536619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4471782702214536619'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/06/asteroids-clone-complete.html' title='Asteroids Clone - Complete'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-705771053624183154</id><published>2008-05-27T13:07:00.000-07:00</published><updated>2008-05-27T13:15:43.531-07:00</updated><title type='text'>MeteorManager Singleton</title><content type='html'>&lt;div&gt;In a previous post you may have notice I used the following code to manage the instantiation on asteroids in my game:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(204, 204, 204);   font-family:'Trebuchet MS';font-size:13px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;MeteorManager mm = &lt;span class="Apple-style-span"  style="font-size:small;"&gt;MeteorManager.instance;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;mm.AttachAsteroids();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;This code uses a singleton. I cannot add any more to what this &lt;/span&gt;&lt;a href="http://www.unifycommunity.com/wiki/index.php?title=AManagerClass"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 153, 255);"&gt;article on the Unity3d wiki&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; but I think it is generally a good idea if you are going to have a manager type object (which of course you will). Create an empty game object in the IDE and add a manager class/script to it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-705771053624183154?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/705771053624183154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/meteormanager-singleton.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/705771053624183154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/705771053624183154'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/meteormanager-singleton.html' title='MeteorManager Singleton'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-762051808759126863</id><published>2008-05-26T01:48:00.000-07:00</published><updated>2008-05-26T08:28:34.553-07:00</updated><title type='text'>Gentle Introduction to Vectors and Points</title><content type='html'>I have recently been reading a very good book called 3D Math Primer for Graphics and Game Development by Fletcher Dunn and Ian Parberry. I thought it would be a good idea to post some blog entries on a subject that often confuses people new to 3D game programming - such as myself. Now this certainly isn't going to be a replacement for a Math Degree but it might help noobs like myself!&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;To illustrate the basics I will be using Vectors/Points of 2 dimensions and not 3. First of all it is important to point out the difference between a point and a vector. At first glance they look very similar, a point can be represented by [1, 2] and a vector can also be represented by [1, 2] (for the purposes of this blog entry it isn't important that the vector/point is written horizontally as a row vector).&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A point in 2D is represented by mathematical vector as [x, y], x usually being the horizontal position and y usually being the vertical position. The x and y are relative to the coordinate framework, but for now just imagine that the y axis points up and the x axis points down.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is very simple to convert to a 3 dimensional point. Imagine that the z axis is moving away from the computer screen. A 3D point is therefor represented as [x, y, z].&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So a point simply is a simple representation of a position in a particular coordinate system but geometrically a vector is a displacement having magnitude and direction. This sounds terribly mathematical and complicated but it really isn't. Magnitude basically describes the length of the vector and the direction simply describes which may the vector is pointing.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vectors do NOT have a position. Velocity is a good example of a vector... She is traveling 50mph North (Magnitude: 50mph, Direction: North) - Notice there is no position.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Why should you care about vectors?&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, vectors are used for calculating many things in computer games but here is a simple example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;You may need to find the distance between two points during gameplay, perhaps an enemy unit needs to know when a player has breached a particular perimeter before attacking. I will use 2 dimensional vectors again to make it simple.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;To find the magnitude of a vector you use Pythagoras' Theorem where the square root of the sum of X squared and the Y squared equals the magnitude, or: x&lt;sup&gt;2&lt;/sup&gt; + y&lt;sup&gt;2&lt;/sup&gt; = magnitude&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;So it is a simple case of subtracting one point from the other and than working out the magnitude (the distance between the points):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have a point at [15, 7] and one at [10, 4]:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[15, 7] - [10, 4] = [5, 3]&lt;/div&gt;&lt;div&gt;The square root of 5 squared + 3 squared is around 5.83095&lt;/div&gt;&lt;div&gt;So the distance between the two points is 5.83095.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is fairly simple and it just so happens that if you apply the same theory to 3 dimensions you get the same results, hence x&lt;sup&gt;2&lt;/sup&gt; + y&lt;sup&gt;2&lt;/sup&gt; + z&lt;sup&gt;2&lt;/sup&gt; = magnitude&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If we have two Vector3 objects (vector1 and vector2, to represent the points) we could use the following C# code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;// subtract one vector from the other (assuming the - operator has been overloaded)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Vector3 newVector = vector1 - vector2;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;float distance = Math.Sqrt(newVector.X * newVector.X + newVector.Y * newVector.Y + newVector.Z * newVector.Z);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;How does this fit into Unity3d?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The great thing about Unity is that all of the Math is written for you! Using the above example, the Vector3 class has a method called Distance which returns a float to represent the distance between the two points (the magnitude). We would simply use:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:'courier new';font-size:13px;"&gt;float distance = Vector3.Distance(vector1, vector2);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:'courier new';font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Take a look at the Vector3 class &lt;a href="http://unity3d.com/support/documentation/ScriptReference/Vector3.html"&gt;here&lt;/a&gt; - this makes the Math a bit easier but it's always good to know what is going on underneath.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-762051808759126863?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/762051808759126863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/gentle-introduction-to-vectors-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/762051808759126863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/762051808759126863'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/gentle-introduction-to-vectors-and.html' title='Gentle Introduction to Vectors and Points'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2124740780947450978</id><published>2008-05-24T10:28:00.000-07:00</published><updated>2008-05-24T10:41:11.386-07:00</updated><title type='text'>Collisions extended...</title><content type='html'>OK, so now that I have some collisions working it would be nice if my rockets could actual destroy the asteroids when they collide. I basically created a capsule collider for my rocket prefab, there was no need to add a physic material as it would be destroyed upon collision.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the behaviour script attached to the asteroid prefab I added the following code to manage the collision of the rocket instances:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;void OnCollisionEnter(Collision collisionInfo) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;if(collisionInfo.transform.name == "Rocket(Clone)") {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Destroy(collisionInfo.gameObject);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Destroy(gameObject);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;GameObject clone = (GameObject)Instantiate(Explosion, transform.position, Quaternion.Euler(0,0,0));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;clone.transform.localScale = new Vector3(scale, scale, scale);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;MeteorManager mm = MeteorManager.instance;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;    &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;mm.AttachAsteroids();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The method OnCollisionEnter is an event thrown when a collision detection is made with the game object to which the script is attached. The parameter collisionInfo is the object which has been collided with. We are checking the name of the object with which we have collided to see if it is a Rocket(Clone) * I am not 100% if this is the best method to achieve this yet * and then we will destroy both the rocket and the asteroid using the Destroy method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Explosion is a public game object (it actually contains a particle system to simulate the explosion). The explosion is then scaled to the size of the destroyed asteroid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MeteorManager (I have no idea why I didn't call it AsteroidManager!) is a singleton used to manage the creation of new asteroids which moves me on to my next blog entry... until then...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2124740780947450978?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2124740780947450978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/collisions-extended.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2124740780947450978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2124740780947450978'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/collisions-extended.html' title='Collisions extended...'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-8831521370924658259</id><published>2008-05-24T10:13:00.000-07:00</published><updated>2008-05-24T10:27:25.899-07:00</updated><title type='text'>Collision Detection</title><content type='html'>I had a play with the physics engine in Unity, in particular the capsule collider. I thought that in order to make my asteroids game a bit interesting I would make the asteroids bounce off each other when they collide.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was avoiding doing the collision detection in Unity at first because I thought it might be quite involved with loads of Vector Math... When I got around to doing it I was, one: very surprised at how easy it was and, two: extremely impressed with the implementation of collisions in Unity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is what I did:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) I created a physic material, called it Rock (The name isn't important) and had a play about with the settings. My settings were: 0.8 for Dynamic Friction, Static Friction and Bouncyness. Average for Friction Combine and Bounce Combine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) In my asteroid prefab I added a capsule collider and set the Material to the Rock physic material I just created. I had to set the capsule collider radius, height and direction to match the shape and size of my asteroid mesh.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) Sat amazed at how easy and effective this was in Unity!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-8831521370924658259?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/8831521370924658259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/collision-detection.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8831521370924658259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/8831521370924658259'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/collision-detection.html' title='Collision Detection'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5112986545169859013</id><published>2008-05-06T01:40:00.000-07:00</published><updated>2008-06-23T03:13:05.234-07:00</updated><title type='text'>Skybox (aka Space Box!)</title><content type='html'>For my Asteroids clone I decided to create a skybox for the background. I wanted to experiment with moving the skybox around (rotating) but realised that Unity doesn't allow for the movement of the built in skybox (not that I am aware of anyway).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided to create a simple skybox and texture it in Cheetah3D then import it into Unity. One thing you must do if you are going to do this is ensure that the polygon normals/faces are facing inwards.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically I created 6 planes, put them in position and welded the points together.&lt;br /&gt;&lt;br /&gt;UPDATE: As recently pointed out in a comment you can simply create a primitive Cube, select all of the faces and 'flip' the faces in Cheetah3D.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the game is complete you will see the effect that this has.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5112986545169859013?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5112986545169859013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/skybox-aka-space-box.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5112986545169859013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5112986545169859013'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/skybox-aka-space-box.html' title='Skybox (aka Space Box!)'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-4917640869699199909</id><published>2008-05-03T10:37:00.001-07:00</published><updated>2008-05-03T10:46:22.148-07:00</updated><title type='text'>Import Cheetah3D models in to Unity and Scale Problems</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_1q9SmbuPfKQ/SBykkrIo7fI/AAAAAAAAABs/7fCF8_qIsug/s1600-h/Burn+Trans.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_1q9SmbuPfKQ/SBykkrIo7fI/AAAAAAAAABs/7fCF8_qIsug/s320/Burn+Trans.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5196209020039917042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;I had numerous problems today importing my Tree object in to Unity. Without getting into the details basically I had to burn the transformations I had made so Unity sees the scales as 1,1,1. This was making my trees look  flattened in Unity. If you think about it, this probably makes sense to burn the transformations for all your models before importing them into Unity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-4917640869699199909?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/4917640869699199909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/import-cheetah3d-and-scale.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4917640869699199909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/4917640869699199909'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/import-cheetah3d-and-scale.html' title='Import Cheetah3D models in to Unity and Scale Problems'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_1q9SmbuPfKQ/SBykkrIo7fI/AAAAAAAAABs/7fCF8_qIsug/s72-c/Burn+Trans.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5194188617442928049</id><published>2008-05-02T12:03:00.000-07:00</published><updated>2008-05-02T12:10:23.472-07:00</updated><title type='text'>Trees</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_1q9SmbuPfKQ/SBtmvrIo7eI/AAAAAAAAABg/iRRLkAO6pmc/s1600-h/tree.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_1q9SmbuPfKQ/SBtmvrIo7eI/AAAAAAAAABg/iRRLkAO6pmc/s200/tree.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5195859564320845282" /&gt;&lt;/a&gt;&lt;br /&gt;Finally purchased Unity3D today! Having problems with the activation key but I'm sure the Support people will sort this out...&lt;div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I started looking at modeling some trees in Cheetah3D. I cheated a little bit and purchased some textures until I can get out with my digital camera, anyway here's my attempt at modeling a tree (170 polys).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have spent loads of time on Cheetah3D in the last few weeks and I am making some slow but pleasing progress!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5194188617442928049?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5194188617442928049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/05/finally-purchased-unity3d-today-having.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5194188617442928049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5194188617442928049'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/05/finally-purchased-unity3d-today-having.html' title='Trees'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_1q9SmbuPfKQ/SBtmvrIo7eI/AAAAAAAAABg/iRRLkAO6pmc/s72-c/tree.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2311737500113343327</id><published>2008-03-31T10:48:00.000-07:00</published><updated>2008-03-31T10:50:00.121-07:00</updated><title type='text'>Cheetah3D DVD</title><content type='html'>For the last couple of days I've been playing about with Cheetah3D and the Cheetah3D for Beginners DVD. I have to say that I think the DVD is brilliant for somebody like me... a complete beginner!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hopefully I will have my first model to post in a few days.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2311737500113343327?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2311737500113343327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/cheetah3d-dvd.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2311737500113343327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2311737500113343327'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/cheetah3d-dvd.html' title='Cheetah3D DVD'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3337294823755003219</id><published>2008-03-29T05:44:00.000-07:00</published><updated>2008-03-29T05:50:42.545-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prefab'/><category scheme='http://www.blogger.com/atom/ns#' term='velocity'/><category scheme='http://www.blogger.com/atom/ns#' term='projectile'/><category scheme='http://www.blogger.com/atom/ns#' term='missiles'/><title type='text'>Projectiles</title><content type='html'>My Asteroids clone is progressing slowly. I now have a spaceship moving around the screen with a couple of particle emitters (thrust fire and smoke). I also added some script to make the spaceship 'teleport' to the opposite side of the screen if it leaves the screen bounds.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also had a quick go at scripting the ship to fire projectile/missiles. This was fairly simple although I still have a couple of issues, particularly that when I instantiate the missile it pauses for a brief moment before applying the velocity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I simply created a Missile prefab, added the model and the following 2 C# scripts (one to the spaceship and one the the Rocket prefab:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class MissileManager : MonoBehaviour {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public Rigidbody rocket;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void FireRocket () {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Instantiate(rocket, rigidbody.position, rigidbody.rotation);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Update is called once per frame&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void Update () {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if(Input.GetButtonDown("Fire1")){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FireRocket();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;public class RocketBehaviour : MonoBehaviour {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;public float MissileSpeed = 10.0f;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;// Use this for initialization&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;void Start () {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;rigidbody.AddRelativeForce(Vector3.forward * MissileSpeed);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The Rocket variable is made public so I can make this the Rocket prefab in the editor.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3337294823755003219?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/3337294823755003219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/projectiles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3337294823755003219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3337294823755003219'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/projectiles.html' title='Projectiles'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2564128557113694442</id><published>2008-03-27T06:19:00.001-07:00</published><updated>2008-03-27T06:25:16.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Particles'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='thruster'/><title type='text'>Thruster Script</title><content type='html'>I got the thruster script sorted, I thought it would be easier to create a separate script and attach it to the particle system:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using UnityEngine;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using System.Collections;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class ThrustBehaviour : MonoBehaviour {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;float previousInput = 0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void Start () { }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void FixedUpdate () {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// make emitter emit in the correct direction&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;particleEmitter.localVelocity = new Vector3(0,0,-5);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// enable thrusters when the Vertical Input Axis is greater or equals previous input&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// this ensures that the emitter stops when the key is released&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if(Input.GetAxis("Vertical") &gt; 0 &amp;amp;&amp;amp; Input.GetAxis("Vertical") &gt;= previousInput){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;previousInput = Input.GetAxis("Vertical");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;particleEmitter.emit = true;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;} else {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;particleEmitter.emit = false;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I think it is fairly self explanatory. The only thing that took a little thought was using localVelocity instead of worldVelocity. As the particle emitter is embedded in the ship game object it makes sense for the velocity to be moving from the rear of the ship on the Z axis (Vector3(0,0,-5)). If I had used worldVelcoity the thrust particles would move along the Z axis on the world stage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2564128557113694442?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2564128557113694442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/thruster-script.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2564128557113694442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2564128557113694442'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/thruster-script.html' title='Thruster Script'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-5503786594705109560</id><published>2008-03-27T02:21:00.000-07:00</published><updated>2008-03-27T02:28:41.989-07:00</updated><title type='text'>Particle Systems</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_1q9SmbuPfKQ/R-tnLRfQ_uI/AAAAAAAAABQ/qtLrfowTIZY/s1600-h/Fire_Final.png"&gt;&lt;img style="float:top; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_1q9SmbuPfKQ/R-tnLRfQ_uI/AAAAAAAAABQ/qtLrfowTIZY/s200/Fire_Final.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5182349239590649570" /&gt;&lt;/a&gt;&lt;div&gt;Over the last day or so I have become 'familiar' with particle systems. Obviously to create a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;great&lt;/span&gt; game I will require lots of different effects and will need to study them a bit more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm fairly happy with what I have now. For my Asteroids game I am going to need two things to happen with the thruster effect.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;The fire should only emit from the ship when the 'thruster' key is pressed.&lt;/li&gt;&lt;li&gt;The thruster should follow the ship and emit in the correct direction.&lt;/li&gt;&lt;/ol&gt;Getting the particles to follow the ship is easy, all I have to do is place the particle emitter in the same Game Object as the ship model. Getting the particles to emit in the right direction should be easy but I'm not sure how to access the emitter from my Script at the moment and I'm sure it will involve the use of Vector3! I will post the script once I work it out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-5503786594705109560?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/5503786594705109560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/particle-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5503786594705109560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/5503786594705109560'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/particle-systems.html' title='Particle Systems'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_1q9SmbuPfKQ/R-tnLRfQ_uI/AAAAAAAAABQ/qtLrfowTIZY/s72-c/Fire_Final.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2562729148508999180</id><published>2008-03-26T09:19:00.000-07:00</published><updated>2008-03-26T13:08:22.020-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Smoke'/><category scheme='http://www.blogger.com/atom/ns#' term='Particles'/><category scheme='http://www.blogger.com/atom/ns#' term='Fire'/><title type='text'>Ready, Aim, Fire!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_1q9SmbuPfKQ/R-qtBRfQ_tI/AAAAAAAAABI/1uZoG8Ci4MU/s1600-h/Particle2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_1q9SmbuPfKQ/R-qtBRfQ_tI/AAAAAAAAABI/1uZoG8Ci4MU/s320/Particle2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5182144558629191378" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UPDATE: I made some slight changes but used a very simple asset just to make sure what I applied in Unity was correct. I didn't use any alpha channels in my PNG file. The above image is the updated screen capture.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_1q9SmbuPfKQ/R-p3vhfQ_sI/AAAAAAAAABA/FHLmof8OCVU/s1600-h/FireParticles.png"&gt;&lt;img style="float:top; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_1q9SmbuPfKQ/R-p3vhfQ_sI/AAAAAAAAABA/FHLmof8OCVU/s320/FireParticles.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5182085979570241218" /&gt;&lt;/a&gt;&lt;br /&gt;My first attempt at creating some thrust from the spaceship went OK. The process wasn't too difficult but I think my Photoshop skills are lacking somewhat as the fire looks a little blocky!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm sure this can be made to look a bit better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For anyone who is interested I used this fantastic tutorial for creating the particle system: &lt;a href="http://yogware.bluegillstudios.com/site/tutorials/particle.html"&gt;http://yogware.bluegillstudios.com/site/tutorials/particle.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2562729148508999180?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/2562729148508999180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/ready-aim-fire.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2562729148508999180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2562729148508999180'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/ready-aim-fire.html' title='Ready, Aim, Fire!'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_1q9SmbuPfKQ/R-qtBRfQ_tI/AAAAAAAAABI/1uZoG8Ci4MU/s72-c/Particle2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-1621293494434624784</id><published>2008-03-25T21:00:00.000-07:00</published><updated>2008-03-25T13:30:18.652-07:00</updated><title type='text'>Spaceship Script Changes</title><content type='html'>&lt;div&gt;As soon as I finished my blog entry I got an email from a guy in the Unity3D forums who helped me with the script fixes:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void FixedUpdate() {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;// a slight change to the rotation script&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;transform.Rotate(Vector3.up * (Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime) );&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;// this ensures that thrust is only applied in the forward direction&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;if(Input.GetAxis("Vertical") &gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;rigidbody.AddRelativeForce(Vector3.forward * (thrustSpeed * Input.GetAxis("Vertical")));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think I will take a look at some sort of particle system to visually show the ships thrusters. I have no idea how this is done but it sounds like fun!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-1621293494434624784?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/1621293494434624784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/spaceship-script-changes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1621293494434624784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1621293494434624784'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/spaceship-script-changes.html' title='Spaceship Script Changes'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-1126893784096682053</id><published>2008-03-25T20:00:00.000-07:00</published><updated>2008-03-25T13:20:50.161-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GameObject'/><category scheme='http://www.blogger.com/atom/ns#' term='RigidBody'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Asteroids'/><title type='text'>My First Unity Game</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_1q9SmbuPfKQ/R-lZDBfQ_rI/AAAAAAAAAA4/l8ePGa7emGU/s1600-h/SpaceShip.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_1q9SmbuPfKQ/R-lZDBfQ_rI/AAAAAAAAAA4/l8ePGa7emGU/s320/SpaceShip.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5181770754740518578" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;Well it isn't actually a game but I finally got something on the screen and moving about! Not without the help of a few people on #unity3d irc.freenode.net. Without them it would have taken me days to work it out!&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;I created a simple spaceship model in Cheetah3D and then imported it into Unity. Made the model into a GameObject, added a Rigid Body Component and a C# Script Component. I needed a Camera and a Light component. That was it!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;Here is the script:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   font-family:'Trebuchet MS';font-size:12px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;using UnityEngine;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;using System.Collections;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;public class SpaceShipBehaviour : MonoBehaviour {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;public float thrustSpeed;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;public float rotationSpeed;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;// physics behaviour should go in here&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;void FixedUpdate() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;float inputHor = Input.GetAxis("Horizontal");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;float inputVer = Input.GetAxis("Vertical");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;rigidbody.AddRelativeForce(Vector3.forward * (thrustSpeed * inputVer));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;rigidbody.AddTorque(Vector3.up * (rotationSpeed * inputHor));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 255, 255);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;There's a couple of problems with the script, mainly that the thrust should only work in a single direction. At present if I press the 'down' key the ship starts moving backwards.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 204, 204);"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The float variables are public in scope because I need them exposed to the Unity Inspector (this enables me to tweak the values without changing the script file).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-1126893784096682053?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marraboy.blogspot.com/feeds/1126893784096682053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marraboy.blogspot.com/2008/03/my-first-unity-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1126893784096682053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1126893784096682053'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/my-first-unity-game.html' title='My First Unity Game'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_1q9SmbuPfKQ/R-lZDBfQ_rI/AAAAAAAAAA4/l8ePGa7emGU/s72-c/SpaceShip.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-3438065889914909339</id><published>2008-03-25T14:00:00.000-07:00</published><updated>2008-03-25T13:31:42.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='Quaternions'/><category scheme='http://www.blogger.com/atom/ns#' term='Asteroids'/><category scheme='http://www.blogger.com/atom/ns#' term='Vectors'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><title type='text'>Asteroids</title><content type='html'>I have decided to create a Unity version of Asteroids. I wrote a version of Asteroids a few years ago (Meteor Storm - bad name I know) and thought this would be easy to convert.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One major difference between 3D and 2D is the coordinate system (yeah I know one has 3 dimensions!). When programming in 2D I relied upon trigonometry to work out velocity etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am beginning to realise that 3D is a little more complex and uses scary things like Vectors, Matrices and Quaternions! WHAT?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UPDATE: It seems it's not that bad. Unity does a lot of the maths for you, thank god for that!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-3438065889914909339?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3438065889914909339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/3438065889914909339'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/asteroids.html' title='Asteroids'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-1118156934203541908</id><published>2008-03-24T10:30:00.000-07:00</published><updated>2008-03-24T12:12:21.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cheetah'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='DVD'/><title type='text'>Cheetah3D for Beginners</title><content type='html'>I decided to buy a DVD for Cheetah3D beginners. As well as having no 3D programming experience I also have no 3D modeling experience! So I thought I would give this a shot: http://www.antialias.me.uk. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's only £15 so I can't really go wrong - I will update on my findings when the DVD arrives.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-1118156934203541908?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1118156934203541908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/1118156934203541908'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/cheetah3d-for-beginners.html' title='Cheetah3D for Beginners'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-4103550753109784835.post-2342901851342843063</id><published>2008-03-24T10:00:00.000-07:00</published><updated>2008-03-24T12:13:03.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity3D'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>The Journey Starts Here!</title><content type='html'>OK, so I have decided to write a 'real' computer game. 'Real' meaning a compiled binary that will run using a graphics library such as OpenGL or DirectX. I have written loads of computer games in Adobe Flash but now I've decided to bite the bullet and write something using Unity3D. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why don't I write my game using C++, isn't using Unity3D a massive cop-out?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My reasons for using Unity3D are simple:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;There is a massive learning curve for both C++ and DirectX/OpenGL.&lt;/li&gt;&lt;li&gt;C# is managed and I don't have to care about memory management and such nonsense!&lt;/li&gt;&lt;li&gt;Unity3D can export binaries for both Mac OSX and Windows.&lt;/li&gt;&lt;li&gt;The development times in Unity3D are far quicker than first &lt;strong&gt;learning&lt;/strong&gt; to write a 3D engine and then having to write it!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I have decided that my first step is to convert one of my Flash games into a Unity3D project. I need to read the documentation on the Unity API so I understand the very basics - remember I am coming into this with no experience of 3D games programming!!!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4103550753109784835-2342901851342843063?l=marraboy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2342901851342843063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4103550753109784835/posts/default/2342901851342843063'/><link rel='alternate' type='text/html' href='http://marraboy.blogspot.com/2008/03/journey-starts-here.html' title='The Journey Starts Here!'/><author><name>John Tear</name><uri>http://www.blogger.com/profile/15401397594523555113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1q9SmbuPfKQ/TL9BiEFZaVI/AAAAAAAAAHs/CeEoOl4suVA/S220/Me.png'/></author></entry></feed>
