如何在Delphi中使用Box2D

如何在Delphi中使用Box2D,delphi,box2d,Delphi,Box2d,我使用delphi rio创建Box2D 在创建形状时,世界和重力按如下方式创建 gravity := b2Vec2.Create(0.0, -10.0); world := b2WorldWrapper.Create(gravity); try groundBodyDef := b2BodyDef.Create(); groundBodyDef.position.&Set(0.0, -10.0); groundBody := world.Create

我使用delphi rio创建Box2D
在创建形状时,世界和重力按如下方式创建

  gravity := b2Vec2.Create(0.0, -10.0);
  world := b2WorldWrapper.Create(gravity);
  try
    groundBodyDef := b2BodyDef.Create();
    groundBodyDef.position.&Set(0.0, -10.0);
    groundBody := world.CreateBody(@groundBodyDef);
    groundBox := b2PolygonShapeWrapper.Create();
    groundBox.SetAsBox(50.0, 10.0);
    groundBody.CreateFixture(groundBox, 0.0);
  finally
  end; 
并在用户单击按钮1时创建框

var
  dynamicBox: b2PolygonShapeWrapper;
  fixtureDef: b2FixtureDef;
begin
  bodyDef := b2BodyDef.Create();
  bodyDef.&type := b2_DynamicBody;
  bodyDef.position.&Set(0.0, 4.0);
  body := world.CreateBody(@bodyDef);

  dynamicBox := b2PolygonShapeWrapper.Create();
  dynamicBox.SetAsBox(1.0, 1.0);

  fixtureDef := b2FixtureDef.Create();
  fixtureDef.shape := dynamicBox;
  fixtureDef.density := 1.0;
  fixtureDef.friction := 1.0;
  body.CreateFixture(@fixtureDef);

  dynamicBox.Destroy;
  groundBox.Destroy;
end;
并在点击按钮2时圈出,RandomFloat()创建随机浮点数“结果:=2.0*random()-1.0

但我无法在TPaintBox中显示它们

procedure TfrmMain.PaintBoxPaint(Sender: TObject; Canvas: TCanvas);
var
  rect: TRectF;
begin
  Canvas.BeginScene;
  try
    Canvas.Fill.Color := b2Color2TColor(b2Color.Create(0.3, 0.3, 0.3, 1));
    rect := PaintBox.BoundsRect;
    Canvas.FillRect(rect, 0, 0, [], DEFAULT_OPACITY);

    g_debugDraw.Canvas := Canvas;
    g_debugDraw.Canvas.Fill.Color := TAlphaColorRec.Yellow;
    g_debugDraw.Canvas.Fill.Color := TAlphaColorRec.Aqua;
  finally
    Canvas.EndScene;
  end;
end;
我在网上搜索了一下,但没有找到关于如何在Delphi中使用Box2d的任何信息。 有几个例子,但它们很复杂,没有解释,在他们的帮助下,不可能学习使用的基础知识

(一)

(二)

(三)

(四)

(五)

(六)


7)

你能编辑你的问题,添加对你在互联网上找到的几个例子的引用吗?我找到了这个资源:你看到了吗?@fpiette是的,在这个应用程序还附带新版本的Delphi之前,我已经看到了这个问题。我建议你选择最接近你想要做的示例,研究代码,编译并运行它,以确保每一部分都到位。然后开始修改样本以满足您的需要,然后在您不理解的地方询问具体问题。对于Box2D的基础知识,我相信您必须阅读原始文档才能理解这些概念。这些概念不会改变你使用的任何编程语言。你能编辑你的问题,将参考添加到你在互联网上找到的几个示例中吗?我找到了这个资源:你看到了吗?@fpiette是的,在这个应用程序还附带了新版本的Delphi之前,我已经看到了这一点。我建议你选择最接近你需要的示例打算这样做,研究代码,编译和运行它,以确保你有每一块到位。然后开始修改样本以满足您的需要,然后在您不理解的地方询问具体问题。对于Box2D的基础知识,我相信您必须阅读原始文档才能理解这些概念。这些概念不会改变您使用的任何编程语言。
procedure TfrmMain.PaintBoxPaint(Sender: TObject; Canvas: TCanvas);
var
  rect: TRectF;
begin
  Canvas.BeginScene;
  try
    Canvas.Fill.Color := b2Color2TColor(b2Color.Create(0.3, 0.3, 0.3, 1));
    rect := PaintBox.BoundsRect;
    Canvas.FillRect(rect, 0, 0, [], DEFAULT_OPACITY);

    g_debugDraw.Canvas := Canvas;
    g_debugDraw.Canvas.Fill.Color := TAlphaColorRec.Yellow;
    g_debugDraw.Canvas.Fill.Color := TAlphaColorRec.Aqua;
  finally
    Canvas.EndScene;
  end;
end;