【问题标题】:How to get the list of body co-ordinates in my box2d world in Processing如何在处理中获取我的 box2d 世界中的身体坐标列表
【发布时间】:2016-03-22 03:38:48
【问题描述】:

我需要获取我的 box2d 世界的坐标列表 - 我正在尝试获得环绕效果,以便离开屏幕一侧的粒子出现在另一侧。 box2d 没有很好的处理文档,我能找到的唯一例子是 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 我假设 world 是我创建的实例化 box2d 世界。我就是这样,处理似乎没有认识到这一点。基本上我如何获得所有粒子坐标的数组。应该更容易......

【问题讨论】:

    标签: processing box2d jbox2d


    【解决方案1】:

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

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

    您无需使用这些库即可使用 Processing 中的 JBox2D。

    您可以找到 JBox2D here 的文档。

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

    如果您使用的是 Processing 库之一,World 实例的创建可能对您隐藏。您可能必须自己直接使用 JBox2D。

    【讨论】:

    • Sebastian 的 sn-p 实际上看起来像 Actionscript 3,而不是 c++,但您的建议是合理的 (+1)
    • @GeorgeProfenza 谢谢乔治。我根本不懂 C++,我只知道它不是 Java!我添加了一个小注释来纠正自己。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2020-06-28
    • 2016-02-29
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多