开发者

Farseer/XNA Assertion Failed, Vector2 position for body modified by camera matrix

I created a camera with a matrix and used it to move the view point in 2D. Basically I started from this template: http://torshall.se/?p=272

I also had in one of my class, a simple code to spawn boxs with the mouse:

public void CreateBodies()
    {
        mouse = Mouse.GetState();

        if (mouse.RightButton == ButtonState.Pressed)
        {
            Bodies += 1;
            if (Bodies >= MaxBodies)
                Bodies = 0;

            rectBody[Bodies] = BodyFactory.CreateRectangle(world, ConvertUnits.ToSimUnits(rectangle.Width), ConvertUnits.ToSimUnits(rectangle.Height), 1);
            rectBody[Bodies].Position = ConvertUnits.ToSimUnits(mouse.X, mouse.Y);
            rectBody[Bodies].BodyType = BodyType.Dynamic;
        }
    }

This Worked perfectly fine but when I moved the ''camera'' the mouse didn't change in the right location, Si I did this little modification in game1.cs and in m开发者_运维问答y method to have the world coord. of my mouse:

mouse = Mouse.GetState();
        Matrix inverse = Matrix.Invert(camera.transform);
        Vector2 mousePos = Vector2.Transform(new Vector2(mouse.X, mouse.Y), inverse);

        TE.CreateBodies(mousePos);


public void CreateBodies(Vector2 mousePosition)
    {
        mouse = Mouse.GetState();
        MousePosition = mousePosition;

        if (mouse.RightButton == ButtonState.Pressed)
        {
            Bodies += 1;

            if (Bodies >= MaxBodies)
            {
                Bodies = 0;
            }

            rectBody[Bodies] = BodyFactory.CreateRectangle(world, ConvertUnits.ToSimUnits(rectangle.Width), ConvertUnits.ToSimUnits(rectangle.Height), 1);
            rectBody[Bodies].BodyType = BodyType.Dynamic;

            rectBody[Bodies].Position = ConvertUnits.ToSimUnits(MousePosition);


        }

    }

Now this is supposed to give me the world coords. of my mouse, but I have a problem, when I run the program and click somewhere on the screen to create a box I get this error:

http://img68.xooimage.com/files/6/a/4/bob-2c526f4.png

What's going on? :/

Edit:

This is at the line 439 of body.cs:

Debug.Assert(!float.IsNaN(value.X) && !float.IsNaN(value.Y));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜