prouser64 Oct 20, 2011 at 7:40 PM Hello people. I'm new to both Farseer Physics and Box2d. I've got some questions: I want to make my first Farseer Physics app. I need simple ground and a rectangle wich is moving on it only forward. This rectangle must move forward without any user actions. But it must jump when user pressed "space" =) 1. This is my code to create my Rectangles Body: ```BodyNode = BodyFactory.CreateRectangle(GameController.Instance.PhysicsWorld, 64, 64, 1f, Vector2.Zero); BodyNode.BodyType = BodyType.Dynamic; BodyNode.Mass = 1; BodyNode.LinearVelocity = new Vector2(10, 0);� ```   Should I attach a shape to my body? Like this? ```NodeShape = new PolygonShape(PolygonTools.CreateRectangle(32, 32, 1); Fixture fixture = BodyNode.CreateFixture(NodeShape);�``` `And why?2. How to get my rectangle moving? ` victorspain Oct 21, 2011 at 9:22 PM If you define a body as a rectangle, and then define a shape of a rectangle and then you attach it to the body then you're creating it twice.   To make your rectangle moving you have different ways. The physic way, which is by applying a force to the body continuously, which would make you program have to make calculations continuously. And the pixel way, which consist in increment the position of the body every seconds. In both cases you just need to ad a line or two in the update method. prouser64 Oct 22, 2011 at 9:30 AM Edited Oct 22, 2011 at 9:31 AM Thanks for your answer, but if I dont create a shape. only rectangle body it does not collide with other objects =( I found a great tutorial: http://www.farseergames.com/storage/farseerphysics/Manual2.1.htm#_Toc213068484 But it is for farseer 2.x =( Is there the same tutorial for 3.x? I was on many forums and it seems like in farseer 2.x they used pixels. And in 3.x they are using metters. Am I right? HellGate Oct 22, 2011 at 10:59 AM most of it is the same for 3.x and yes in 3.x you should use meters take a look here: http://www.progware.org/Blog/?tag=/farseer prouser64 Oct 22, 2011 at 5:40 PM 2HellGate Thanks for LINK!!! A GREAT EXAMPLE! prouser64 Oct 22, 2011 at 6:03 PM I have got a question more =) I read about DebugView. It seems realy cool! And for me, novice in farseer it may be very useful! But when I added it to my project and make all needed operations I stopped on last one: I dont know how to create Projection and View matrices for the  DebugView method - RenderDebugData. I was on forums, but people just say about their variants of matrices, an noone of ther variants does not work in my project =( Help please. Is there a stable method to make these matrices and Render Debug Data? prouser64 Oct 22, 2011 at 9:06 PM Thanks to all for your answers. I have done what I want =))) The last question is hoe to configure my camera position in platformer game. Now I use this code: ```Matrix projection = Matrix.CreateOrthographic(Graphics.PreferredBackBufferWidth / PixelsPerMetter, -Graphics.PreferredBackBufferHeight / PixelsPerMetter, 0, 1000000); Matrix view; Vector3 campos = new Vector3(); campos.X = (-Graphics.PreferredBackBufferWidth / 2) / PixelsPerMetter; campos.Y = (Graphics.PreferredBackBufferHeight / 2) / -PixelsPerMetter; campos.Z = 0;``` ```Matrix tran = Matrix.Identity; tran.Translation = campos; view = tran; DebugView.RenderDebugData(ref projection, ref view); ``` `But it works only for static screen =( not for moving one =(` HellGate Oct 23, 2011 at 10:27 AM i use this one for my 3d things (not for debug view) but it should work as well ```Matrix.CreateOrthographicOffCenter(0, device.PresentationParameters.BackBufferWidth, device.PresentationParameters.BackBufferHeight, 0, 1, 50, out projMatrix); Vector3 camPos = new Vector3(0f, 0f, 10f); Vector3 target = new Vector3(0f, 0f, 0f); viewMatrix = Matrix.CreateLookAt(camPos, target, Vector3.UnitY) * Matrix.CreateTranslation(-cam.Position.X, -cam.Position.Y, -1f) * Matrix.CreateRotationZ(cam.Rotation) * Matrix.CreateTranslation(cam.Origin.X, cam.Origin.Y, 0f) * Matrix.CreateScale(new Vector3(cam.Scale, cam.Scale, 1f));``` prouser64 Oct 23, 2011 at 12:11 PM It does not work =( I tried many combinations, but nothing helps... I have got a game: platformer. My person is always in the center of the screen. Other objects in a world are drawing relative to main persons position. And it looks like the world is scrolling. (E. G. in mario) I dont use any cameras or other stuff. I only have my persons position, for example {2390; 230}, but it draws in the center of screen. Other objects are drawing at object.Position - person.Position. Where is , my camera now =( At what position? Should I consider it's position or i can calculate matrices without it? Please, help! HellGate Oct 24, 2011 at 12:17 PM http://www.youtube.com/watch?v=rohEqXOOkxg&feature=related i also making a platformer using my camera class. it much easyer than moving every sprite i just make a matrix that contains the position, the zoom and the rotation and add it to spriteBatch.Begin   btw. did you added Matrix.CreateScale(new Vector3(1f/PixelsPerMetter, 1f/PixelsPerMetter, 1f)) ? prouser64 Oct 24, 2011 at 2:48 PM Thanks =) Now I have bad (but working) DebugView =) But I dont know what should I write in places marked //! HERE IS SOMETHING WRONG Now my debug view looking like this: http://gyazo.com/e21ee3dd55c81d154050d90bcbec3b26 1. But the world dont scrolling when rectangle runs. 2. Rectangle and floor are not in the center of the screen =(  `Matrix projMatrix;` ```Matrix.CreateOrthographicOffCenter(0, Graphics.PreferredBackBufferWidth, Graphics.PreferredBackBufferHeight, 0, 1, 50, out projMatrix); Vector3 camPos = new Vector3(0, 0, 10f); //! HERE IS SOMETHING WRONG Vector3 cam = new Vector3(Graphics.PreferredBackBufferWidth / 2, -Graphics.PreferredBackBufferHeight / 2, 0f); //! 100% Vector3 target = new Vector3(0, 0f, 0f); //! HERE IS SOMETHING WRONG Matrix viewMatrix = Matrix.CreateLookAt(camPos, target, Vector3.UnitY) * //! 100% Matrix.CreateTranslation(-cam.X, -cam.Y, -1f) * //! 100% Matrix.CreateTranslation(Graphics.PreferredBackBufferWidth / 2, -Graphics.PreferredBackBufferHeight / 2, 0f) * //! 100% Matrix.CreateScale(new Vector3(1.0f * PixelsPerMetter, 1.0f * PixelsPerMetter, 1.0f)); //! 100% DebugView.RenderDebugData(ref projMatrix, ref viewMatrix); ``` Thanks for any help. HellGate Oct 24, 2011 at 3:21 PM well Vector3 camPos = new Vector3(0, 0, 10f); Vector3 target = new Vector3(0, 0f, 0f); was made to fit 3D things for 2D things (for spriteBatch) you have to find the values out yourself (try to search in the simple samples) prouser64 Oct 24, 2011 at 3:53 PM Ahahahahaha =D All is working as I want =))) But it does not in the center of the screen =))))))) http://gyazo.com/8a5cf80b155b016d541558acc32e0f41  Matrix projMatrix; Matrix.CreateOrthographicOffCenter(0.0f, Graphics.PreferredBackBufferWidth, Graphics.PreferredBackBufferHeight, 0.0f, 1.0f, 50.0f, out projMatrix); Vector3 cam = new Vector3(Graphics.PreferredBackBufferWidth / 2, -Graphics.PreferredBackBufferHeight / 2, 0f); Matrix viewMatrix = Matrix.Identity; viewMatrix *= Matrix.CreateTranslation(-cam.X, -cam.Y, -1.0f); viewMatrix *= Matrix.CreateTranslation(Graphics.PreferredBackBufferWidth / 2, -Graphics.PreferredBackBufferHeight / 2, 0f); viewMatrix *= Matrix.CreateTranslation(-CameraPosition.X / PixelsPerMetter, -CameraPosition.Y / PixelsPerMetter, 0.0f); viewMatrix *= Matrix.CreateScale(new Vector3(1.0f * PixelsPerMetter, 1.0f * PixelsPerMetter, 1.0f));