2016-03-21 41 views
0

我需要獲取我的box2d世界的座標列表 - 我試圖得到一個環繞效果的包裹,屏幕的一側出現在另一側。 box2d沒有很好的處理文件,我能找到的唯一例子是java(我知道它是母語,但它需要翻譯)。這是here如何獲得我的box2d世界中的身體座標列表處理

我認爲行動是在這裏:

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

任何你可以用Java做的事情,你可以在Processing中做。但是你發佈的代碼不是Java。這是C++。 (編輯:喬治指出,它看起來像的ActionScript無論哪種方式,這不是Java!)

  • Box2D的是原來的圖書館,用C++編寫。你的代碼是使用該庫的一個例子。
  • JBox2D是C++庫的Java包裝器,因此您可以編寫與C++庫交互的Java代碼。
  • 處理是用Java編寫的,因此您可以在Processing中使用JBox2D。
  • 處理也有一些簡化JBox2D的庫,如Daniel Shiffman的Box2D for ProcessingBoxWrap2d

您不需要使用這些庫來使用Processing中的JBox2D。

你可以找到JBox2D here的文檔。

要回答你的問題,是的,world變量將是您在設置物理環境時創建的World的實例。

如果您使用某個Processing庫,則可能會隱藏您創建的World實例。您可能必須直接使用JBox2D。

+0

塞巴斯蒂安的片段看起來像Actionscript 3,而不是C++,但你的建議是健全的(+1) –

+0

@GeorgeProfenza謝謝喬治。我根本不瞭解C++,我只知道它不是Java!我已經添加了一個小紙條來糾正自己。 –