如何在处理

时间:2016-03-21 15:04:12

标签: processing box2d jbox2d

我需要得到我的box2d世界的坐标列表 - 我试图获得一个环绕效果,以便从屏幕一侧出现的粒子出现在另一侧。 box2d没有很好地记录为Processing,我能找到的唯一例子是java(我知道它的母语,但它需要翻译)。这是here

我认为行动就在这里:

private function updateWorld(e:Event):void {
            world.Step(1/30,10,10);
            world.ClearForces();
            for (var b:b2Body=world.GetBodyList(); b; b=b.GetNext()) {
                if (b.GetType()==b2Body.b2_dynamicBody) {
                    if (b.GetJointList()==null) {
                        if (b.GetPosition().x*worldScale>640) {
                            b.SetPosition(new b2Vec2(0,b.GetPosition().y));
                        }
                        if (b.GetPosition().x*worldScale<0) {
                            b.SetPosition(new b2Vec2(640/worldScale,b.GetPosition().y));
                        }
                    }
                }
            }
            world.DrawDebugData();
        }

所以我试过翻译这个,虽然我遇到了world.GetBodyList 我假设世界是我创建的实例化box2d世界。就是这样,Processing似乎并没有意识到这一点。基本上我如何获得所有粒子坐标的数组。应该更容易....

1 个答案:

答案 0 :(得分:1)

你可以用Java做任何事情,你可以在Processing中做。但是你发布的代码不是Java。这是C ++。 (编辑: George指出它看起来像ActionScript。无论哪种方式,它都不是Java!)

  • Box2D 是用C ++编写的原始库。您的代码是使用该库的示例。
  • JBox2D 是C ++库的Java包装器,因此您可以编写与C ++库交互的Java代码。
  • 处理是用Java编写的,因此您可以在Processing中使用JBox2D。
  • Processing还有一些简化JBox2D的库,比如Daniel Shiffman的Box2D for ProcessingBoxWrap2d

您不需要使用这些库来处理来自Processing的JBox2D。

您可以找到JBox2D here的文档。

要回答您的问题,是的,world变量将是您在设置物理环境时创建的World实例。

如果您正在使用其中一个Processing库,则可能会隐藏World实例的创建。您可能必须自己直接使用JBox2D。