マトリックスを使用してカメラを作成し、それを使用して2Dで視点を移動しました。基本的に私はこのテンプレートから始めました: http ://torshall.se/?p = 272
また、クラスの1つに、マウスでボックスを生成するための簡単なコードがありました。
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));