<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: XNA Camera 2d with zoom and rotation</title>
	<atom:link href="http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/</link>
	<description>Developer&#039;s Blog</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:25:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: David Amador</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-12342</link>
		<dc:creator>David Amador</dc:creator>
		<pubDate>Thu, 02 Feb 2012 14:25:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-12342</guid>
		<description>Nope, the source is on the Post itself</description>
		<content:encoded><![CDATA[<p>Nope, the source is on the Post itself</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WarrenK</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-12341</link>
		<dc:creator>WarrenK</dc:creator>
		<pubDate>Thu, 02 Feb 2012 14:24:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-12341</guid>
		<description>I am obviously asking a dumb question here but is there a link somewhere to the source code that I have missed?</description>
		<content:encoded><![CDATA[<p>I am obviously asking a dumb question here but is there a link somewhere to the source code that I have missed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: baker</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-11817</link>
		<dc:creator>baker</dc:creator>
		<pubDate>Mon, 23 Jan 2012 11:43:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-11817</guid>
		<description>oh Nvm , i figured it out  as i had lots of embarrising mistakes ( including i had 2 classes in the same main code :)  so it i sworking now except i had to move the camera constructor from &quot;Draw&quot; stage cuz that is crashing my pc as it keep creating the camera in every update/sec ..... your code was so helpful .. thank you</description>
		<content:encoded><![CDATA[<p>oh Nvm , i figured it out  as i had lots of embarrising mistakes ( including i had 2 classes in the same main code <img src='http://www.david-amador.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   so it i sworking now except i had to move the camera constructor from &#8220;Draw&#8221; stage cuz that is crashing my pc as it keep creating the camera in every update/sec &#8230;.. your code was so helpful .. thank you</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: baker</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-11813</link>
		<dc:creator>baker</dc:creator>
		<pubDate>Mon, 23 Jan 2012 09:34:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-11813</guid>
		<description>using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Learning1
{
    
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        
        SpriteBatch spriteBatch;

        KeyboardState newstate;

        public class Camera2d
        {
            protected float _zoom; // Camera Zoom
            public Matrix _transform; // Matrix Transform
            public Vector2 _pos; // Camera Position
            protected float _rotation; // Camera Rotation

            public Camera2d()
            {
                _zoom = 1.0f;
                _rotation = 0.0f;
                _pos = Vector2.Zero;
            }

        }


        // Sets and gets zoom
        public float Zoom
        {
            get { return _zoom; } // Error
            set { _zoom = value; if (_zoom &lt; 0.1f) _zoom = 0.1f; } //Error Negative zoom will flip image
        }

        public float Rotation
        {
            get { return _rotation; }
            set { _rotation = value; }
        }

        // Auxiliary function to move the camera
        public void Move(Vector2 amount)
        {
            _pos += amount; // _pos (no ex)tension method to contain argument 
        }
        // Get set position
        public Vector2 Pos
        {
            get { return _pos; }
            set { _pos = value; }
        }

        public Matrix get_transformation(GraphicsDevice graphicsDevice)
        {
            _transform =       
              Matrix.CreateTranslation(new Vector3(-_pos.X, -_pos.Y, 0)) *
                                         Matrix.CreateRotationZ(Rotation) *
                                         Matrix.CreateScale(new Vector3(Zoom, Zoom, 1)) *
                                         Matrix.CreateTranslation(new Vector3(ViewportWidth * 0.5f, ViewportHeight * 0.5f, 0));
            return _transform;
        }




        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = &quot;Content&quot;;

        }



       

        
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();

           
        }

     

        Texture2D myTexture;
        Vector2 Posp = new Vector2();
       
        Vector2 spritePosition = Vector2.Zero;

        
        Vector2 spriteSpeed = new Vector2(50.0f, 50.0f);


        protected override void LoadContent()
        {
            
            spriteBatch = new SpriteBatch(GraphicsDevice);
            myTexture = Content.Load(&quot;orange&quot;);

            
        }

       
        protected override void UnloadContent()
        {
            
        }


        protected override void Update(GameTime gameTime)
        {

            KeyboardState newstate = Keyboard.GetState();

            if (newstate.IsKeyDown(Keys.Right))
            {                                                  
                Posp.X += 1;
            }

            else if (newstate.IsKeyDown(Keys.Left))
            {
                Posp.X -= 1;
            }

            else if (newstate.IsKeyDown(Keys.Up))
            {
                Posp.Y -= 1;
            }

            else if (newstate.IsKeyDown(Keys.Down))
            {
                Posp.Y += 1;
            }
         

            
        }


        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            Camera2d cam = new Camera2d();
            cam.Pos = new Vector2(500.0f, 200.0f);


            spriteBatch.Begin(SpriteSortMode.BackToFront,
                               BlendState.AlphaBlend,
                               null,
                               null,
                               null,
                               null,
                               cam.get_transformation(device /*Send the variable that has your graphic device here*/));
            spriteBatch.Draw(myTexture, Pos, Color.White);
            spriteBatch.End();

            base.Draw(gameTime);
        }
    }
}


hi , i really need help with that as i managed to move the char but when i am applying ur code to create the camera to my char it keep giving me error about the 4 variables ( _Pos , _zoom , _ rotation , _transform) beside the ( cam.get_transformation(device</description>
		<content:encoded><![CDATA[<p>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using Microsoft.Xna.Framework;<br />
using Microsoft.Xna.Framework.Audio;<br />
using Microsoft.Xna.Framework.Content;<br />
using Microsoft.Xna.Framework.GamerServices;<br />
using Microsoft.Xna.Framework.Graphics;<br />
using Microsoft.Xna.Framework.Input;<br />
using Microsoft.Xna.Framework.Media;</p>
<p>namespace Learning1<br />
{</p>
<p>    public class Game1 : Microsoft.Xna.Framework.Game<br />
    {<br />
        GraphicsDeviceManager graphics;</p>
<p>        SpriteBatch spriteBatch;</p>
<p>        KeyboardState newstate;</p>
<p>        public class Camera2d<br />
        {<br />
            protected float _zoom; // Camera Zoom<br />
            public Matrix _transform; // Matrix Transform<br />
            public Vector2 _pos; // Camera Position<br />
            protected float _rotation; // Camera Rotation</p>
<p>            public Camera2d()<br />
            {<br />
                _zoom = 1.0f;<br />
                _rotation = 0.0f;<br />
                _pos = Vector2.Zero;<br />
            }</p>
<p>        }</p>
<p>        // Sets and gets zoom<br />
        public float Zoom<br />
        {<br />
            get { return _zoom; } // Error<br />
            set { _zoom = value; if (_zoom &lt; 0.1f) _zoom = 0.1f; } //Error Negative zoom will flip image<br />
        }</p>
<p>        public float Rotation<br />
        {<br />
            get { return _rotation; }<br />
            set { _rotation = value; }<br />
        }</p>
<p>        // Auxiliary function to move the camera<br />
        public void Move(Vector2 amount)<br />
        {<br />
            _pos += amount; // _pos (no ex)tension method to contain argument<br />
        }<br />
        // Get set position<br />
        public Vector2 Pos<br />
        {<br />
            get { return _pos; }<br />
            set { _pos = value; }<br />
        }</p>
<p>        public Matrix get_transformation(GraphicsDevice graphicsDevice)<br />
        {<br />
            _transform =<br />
              Matrix.CreateTranslation(new Vector3(-_pos.X, -_pos.Y, 0)) *<br />
                                         Matrix.CreateRotationZ(Rotation) *<br />
                                         Matrix.CreateScale(new Vector3(Zoom, Zoom, 1)) *<br />
                                         Matrix.CreateTranslation(new Vector3(ViewportWidth * 0.5f, ViewportHeight * 0.5f, 0));<br />
            return _transform;<br />
        }</p>
<p>        public Game1()<br />
        {<br />
            graphics = new GraphicsDeviceManager(this);<br />
            Content.RootDirectory = &quot;Content&quot;;</p>
<p>        }</p>
<p>        protected override void Initialize()<br />
        {<br />
            // TODO: Add your initialization logic here</p>
<p>            base.Initialize();</p>
<p>        }</p>
<p>        Texture2D myTexture;<br />
        Vector2 Posp = new Vector2();</p>
<p>        Vector2 spritePosition = Vector2.Zero;</p>
<p>        Vector2 spriteSpeed = new Vector2(50.0f, 50.0f);</p>
<p>        protected override void LoadContent()<br />
        {</p>
<p>            spriteBatch = new SpriteBatch(GraphicsDevice);<br />
            myTexture = Content.Load(&#8220;orange&#8221;);</p>
<p>        }</p>
<p>        protected override void UnloadContent()<br />
        {</p>
<p>        }</p>
<p>        protected override void Update(GameTime gameTime)<br />
        {</p>
<p>            KeyboardState newstate = Keyboard.GetState();</p>
<p>            if (newstate.IsKeyDown(Keys.Right))<br />
            {<br />
                Posp.X += 1;<br />
            }</p>
<p>            else if (newstate.IsKeyDown(Keys.Left))<br />
            {<br />
                Posp.X -= 1;<br />
            }</p>
<p>            else if (newstate.IsKeyDown(Keys.Up))<br />
            {<br />
                Posp.Y -= 1;<br />
            }</p>
<p>            else if (newstate.IsKeyDown(Keys.Down))<br />
            {<br />
                Posp.Y += 1;<br />
            }</p>
<p>        }</p>
<p>        protected override void Draw(GameTime gameTime)<br />
        {<br />
            GraphicsDevice.Clear(Color.CornflowerBlue);<br />
            Camera2d cam = new Camera2d();<br />
            cam.Pos = new Vector2(500.0f, 200.0f);</p>
<p>            spriteBatch.Begin(SpriteSortMode.BackToFront,<br />
                               BlendState.AlphaBlend,<br />
                               null,<br />
                               null,<br />
                               null,<br />
                               null,<br />
                               cam.get_transformation(device /*Send the variable that has your graphic device here*/));<br />
            spriteBatch.Draw(myTexture, Pos, Color.White);<br />
            spriteBatch.End();</p>
<p>            base.Draw(gameTime);<br />
        }<br />
    }<br />
}</p>
<p>hi , i really need help with that as i managed to move the char but when i am applying ur code to create the camera to my char it keep giving me error about the 4 variables ( _Pos , _zoom , _ rotation , _transform) beside the ( cam.get_transformation(device</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: truGamer</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-10822</link>
		<dc:creator>truGamer</dc:creator>
		<pubDate>Thu, 22 Dec 2011 21:13:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-10822</guid>
		<description>how would i implement side-by-side or over-under stereoscopic 3d modes using this camera?</description>
		<content:encoded><![CDATA[<p>how would i implement side-by-side or over-under stereoscopic 3d modes using this camera?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mouse location is off due to camera &#124; Q&#38;A System</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-10380</link>
		<dc:creator>Mouse location is off due to camera &#124; Q&#38;A System</dc:creator>
		<pubDate>Mon, 12 Dec 2011 18:44:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-10380</guid>
		<description>[...] but I have a little issue with my camera and mouse. When I add the camera that I use to my game (see here) my mouse pointer seems to be in the wrong location. When I call my Mouse.GetState().X or Y the [...]</description>
		<content:encoded><![CDATA[<p>[...] but I have a little issue with my camera and mouse. When I add the camera that I use to my game (see here) my mouse pointer seems to be in the wrong location. When I call my Mouse.GetState().X or Y the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: XNA 4.0 2D Camera Makes Sprite Jerky &#124; trouble86.com</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-8757</link>
		<dc:creator>XNA 4.0 2D Camera Makes Sprite Jerky &#124; trouble86.com</dc:creator>
		<pubDate>Fri, 11 Nov 2011 05:14:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-8757</guid>
		<description>[...] http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/ [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/" rel="nofollow">http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mac</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-8179</link>
		<dc:creator>mac</dc:creator>
		<pubDate>Sun, 30 Oct 2011 19:55:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-8179</guid>
		<description>&lt;strong&gt;mac...&lt;/strong&gt;

[...]XNA Camera 2d with zoom and rotation &#124; David Amador[...]...</description>
		<content:encoded><![CDATA[<p><strong>mac&#8230;</strong></p>
<p>[...]XNA Camera 2d with zoom and rotation | David Amador[...]&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-7331</link>
		<dc:creator>Steven</dc:creator>
		<pubDate>Wed, 05 Oct 2011 08:00:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-7331</guid>
		<description>Hi,

Great code but i am wondering,
Is there a way to see if an object is in/out sight of the camera??

Thanks</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>Great code but i am wondering,<br />
Is there a way to see if an object is in/out sight of the camera??</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marius Bughiu</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6947</link>
		<dc:creator>Marius Bughiu</dc:creator>
		<pubDate>Fri, 23 Sep 2011 07:46:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6947</guid>
		<description>Thank you very much David for this nice piece of code.
Also thanks BrassX for the mouse transformation.
This was really useful for me.</description>
		<content:encoded><![CDATA[<p>Thank you very much David for this nice piece of code.<br />
Also thanks BrassX for the mouse transformation.<br />
This was really useful for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gywox</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6816</link>
		<dc:creator>Gywox</dc:creator>
		<pubDate>Sun, 18 Sep 2011 03:22:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6816</guid>
		<description>&lt;pre lang=&quot;cpp&quot;&gt;
		public void Move(Vector2 direction)
		{
			this.position += direction;
			this.update = true;
		}

		public void MoveDown(float amount)
		{
			this.position += new Vector2((float)(Math.Cos(-this.rotation + MathHelper.PiOver2) * amount), (float)(Math.Sin(-this.rotation + MathHelper.PiOver2) * amount));
			this.update = true;
		}

		public void MoveUp(float amount)
		{
			this.position += new Vector2((float)(Math.Cos(-this.rotation - MathHelper.PiOver2) * amount), (float)(Math.Sin(-this.rotation - MathHelper.PiOver2) * amount));
			this.update = true;
		}

		public void MoveLeft(float amount)
		{
			this.position += new Vector2((float)(Math.Cos(-this.rotation + MathHelper.Pi) * amount), (float)(Math.Sin(-this.rotation + MathHelper.Pi) * amount));
			this.update = true;
		}

		public void MoveRight(float amount)
		{
			this.position += new Vector2((float)(Math.Cos(-this.rotation) * amount), (float)(Math.Sin(-this.rotation) * amount));
			this.update = true;
		}
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">		<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> Move<span style="color: #008000;">&#40;</span>Vector2 direction<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">position</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> direction<span style="color: #008080;">;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">update</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> MoveDown<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> amount<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">position</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Cos</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">+</span> MathHelper.<span style="color: #007788;">PiOver2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span>, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Sin</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">+</span> MathHelper.<span style="color: #007788;">PiOver2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">update</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> MoveUp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> amount<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">position</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Cos</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">-</span> MathHelper.<span style="color: #007788;">PiOver2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span>, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Sin</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">-</span> MathHelper.<span style="color: #007788;">PiOver2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">update</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> MoveLeft<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> amount<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">position</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Cos</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">+</span> MathHelper.<span style="color: #007788;">Pi</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span>, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Sin</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span> <span style="color: #000040;">+</span> MathHelper.<span style="color: #007788;">Pi</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">update</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> MoveRight<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span> amount<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">position</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Cos</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span>, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>Math.<span style="color: #007788;">Sin</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">this</span>.<span style="color: #007788;">rotation</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> amount<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">this</span>.<span style="color: #007788;">update</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span></pre></div></div>

]]></content:encoded>
	</item>
	<item>
		<title>By: Summer 11 &#8211; Day 6Valryon.Blog() &#124; Valryon.Blog()</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6709</link>
		<dc:creator>Summer 11 &#8211; Day 6Valryon.Blog() &#124; Valryon.Blog()</dc:creator>
		<pubDate>Mon, 12 Sep 2011 16:11:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6709</guid>
		<description>[...] caméra 2D (source pour ceux que ça [...]</description>
		<content:encoded><![CDATA[<p>[...] caméra 2D (source pour ceux que ça [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Domenic</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6518</link>
		<dc:creator>Domenic</dc:creator>
		<pubDate>Thu, 01 Sep 2011 02:35:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6518</guid>
		<description>Thank you so much! I have made several XNA prototypes and always wondered how to use a 2d camera like this. I knew that it HAD to be something with Matrices but I am not really versed in 3d so I&#039;m not used to working with them. From the tutorials I&#039;ve gone through, these calculations look awfully familiar. I might have tried something myself had I realized that SpriteBatch.Begin() took a transformation matrix... go figure.

Awesome job commenters on the contributions! Special thanks to Tux89 for the code to translate vectors between local and world. Works like a charm. Now, there must be a way to move the camera&#039;s position intuitively based on screen orientation while rotated instead of based on world coordinates.</description>
		<content:encoded><![CDATA[<p>Thank you so much! I have made several XNA prototypes and always wondered how to use a 2d camera like this. I knew that it HAD to be something with Matrices but I am not really versed in 3d so I&#8217;m not used to working with them. From the tutorials I&#8217;ve gone through, these calculations look awfully familiar. I might have tried something myself had I realized that SpriteBatch.Begin() took a transformation matrix&#8230; go figure.</p>
<p>Awesome job commenters on the contributions! Special thanks to Tux89 for the code to translate vectors between local and world. Works like a charm. Now, there must be a way to move the camera&#8217;s position intuitively based on screen orientation while rotated instead of based on world coordinates.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cleber</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6093</link>
		<dc:creator>Cleber</dc:creator>
		<pubDate>Wed, 10 Aug 2011 13:41:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6093</guid>
		<description>Hi people.

First of all, great tutorial. And great comments to. It´s a nice contribution.

But I still dont get one thing. This &quot;problem&quot; has been said here. When I rotate my camera and press the button to go to the right, I would like to go to the right of the screen, not to the right of the camera, making my scene go &quot;up&quot;, for example. 

I figure out that I must use the method Move of the camera object with a parameter regarding the rotation of this camera, but I missed out the calculations...

Any help?

Thanks a lot.</description>
		<content:encoded><![CDATA[<p>Hi people.</p>
<p>First of all, great tutorial. And great comments to. It´s a nice contribution.</p>
<p>But I still dont get one thing. This &#8220;problem&#8221; has been said here. When I rotate my camera and press the button to go to the right, I would like to go to the right of the screen, not to the right of the camera, making my scene go &#8220;up&#8221;, for example. </p>
<p>I figure out that I must use the method Move of the camera object with a parameter regarding the rotation of this camera, but I missed out the calculations&#8230;</p>
<p>Any help?</p>
<p>Thanks a lot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: corroded_b</title>
		<link>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/comment-page-2/#comment-6001</link>
		<dc:creator>corroded_b</dc:creator>
		<pubDate>Wed, 03 Aug 2011 01:08:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.david-amador.com/?p=236#comment-6001</guid>
		<description>Great job...as I just copy&amp;pasted the code, I want to contribute a little. For anyone who needs mouse control for the transformations:

You need those:

&lt;pre lang=&quot;csharp&quot;&gt;
Camera2D cam = new Camera2D();
MouseState old_mouse;


In the &quot;void Update&quot;:

            if (Mouse.GetState().LeftButton == ButtonState.Pressed)
            {
                cam.Move(new Vector2((Mouse.GetState().X - old_mouse.X) * -0.5f, (Mouse.GetState().Y - old_mouse.Y) * -0.5f));
            }

            if (Mouse.GetState().ScrollWheelValue != old_mouse.ScrollWheelValue)
            {
                if (cam.Zoom &gt; 1)
                {
                    cam.Zoom += (Mouse.GetState().ScrollWheelValue - old_mouse.ScrollWheelValue) / 120.0f / 10.0f;
                }
                else
                {
                    cam.Zoom *= 1+(Mouse.GetState().ScrollWheelValue - old_mouse.ScrollWheelValue) / 120.0f / 20.0f;
                }
            }
            if (Mouse.GetState().RightButton  == ButtonState.Pressed)
            {
                cam.Rotation += ((Mouse.GetState().X - old_mouse.X) / 500.0f);
                cam.Rotation += ((Mouse.GetState().Y - old_mouse.Y) / 500.0f);
            }

            old_mouse = Mouse.GetState();

&lt;/pre&gt;

Hope html works here...</description>
		<content:encoded><![CDATA[<p>Great job&#8230;as I just copy&amp;pasted the code, I want to contribute a little. For anyone who needs mouse control for the transformations:</p>
<p>You need those:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Camera2D cam <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Camera2D<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
MouseState old_mouse<span style="color: #008000;">;</span>
&nbsp;
&nbsp;
<span style="color: #0600FF; font-weight: bold;">In</span> the <span style="color: #666666;">&quot;void Update&quot;</span><span style="color: #008000;">:</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">LeftButton</span> <span style="color: #008000;">==</span> ButtonState<span style="color: #008000;">.</span><span style="color: #0000FF;">Pressed</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Move</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">*</span> <span style="color: #008000;">-</span>0<span style="color: #008000;">.</span>5f, <span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">*</span> <span style="color: #008000;">-</span>0<span style="color: #008000;">.</span>5f<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span> <span style="color: #008000;">!=</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Zoom</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Zoom</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">/</span> 120<span style="color: #008000;">.</span>0f <span style="color: #008000;">/</span> 10<span style="color: #008000;">.</span>0f<span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0600FF; font-weight: bold;">else</span>
                <span style="color: #008000;">&#123;</span>
                    cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Zoom</span> <span style="color: #008000;">*=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">+</span><span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">ScrollWheelValue</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">/</span> 120<span style="color: #008000;">.</span>0f <span style="color: #008000;">/</span> 20<span style="color: #008000;">.</span>0f<span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RightButton</span>  <span style="color: #008000;">==</span> ButtonState<span style="color: #008000;">.</span><span style="color: #0000FF;">Pressed</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Rotation</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">/</span> 500<span style="color: #008000;">.</span>0f<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                cam<span style="color: #008000;">.</span><span style="color: #0000FF;">Rotation</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">-</span> old_mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">/</span> 500<span style="color: #008000;">.</span>0f<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            old_mouse <span style="color: #008000;">=</span> Mouse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetState</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Hope html works here&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

