我创建了一个带有矩阵的相机,并用它来移动二维的视点。基本上我从这个模板开始: http ://torshall.se/?p=272
我在我的一堂课上也有一个用鼠标生成盒子的简单代码:
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;
}
}
这工作得很好,但是当我移动“相机”时,鼠标没有在正确的位置改变,我在 game1.cs 和我的方法中做了这个小修改来获得世界坐标。我的鼠标:
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);
}
}
现在这应该给我世界坐标。我的鼠标,但我有一个问题,当我运行程序并单击屏幕上的某处以创建一个框时,我收到此错误:
http://img68.xooimage.com/files/6/a/4/bob-2c526f4.png
这是怎么回事?:/
编辑:
这是 body.cs 的第 439 行:
Debug.Assert(!float.IsNaN(value.X) && !float.IsNaN(value.Y));