如何在Delphi中使用Box2D
我使用delphi rio创建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
在创建形状时,世界和重力按如下方式创建
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;