2015-11-06 61 views
-1

過去幾天裏,我一直對着牆壁猛撞我的頭,試圖弄清楚如何正確地擴展CitrusEngine的Box2DPhysicsObjects以生成我的自定義對象。我的目標是產生這種行爲: example of desired behavior試圖在柑橘引擎中使用Box2D生成劍擺動攻擊

這是爲了模擬我的英雄在通過使用輸入確定的方向上揮舞劍來攻擊。劍「睡覺」直到攻擊狀態被激活。

我想我對如何正確使用Box2D(特別是關節)有一個基本的誤解。如果有人能指引我正確的方向,我會永遠感激。我無法真正提供我目前的代碼,因爲它已經變得無法破解。

回答

-1

像上面那樣的實現將會具有非常差的性能,並且可能在幾乎所有情況下都會出現隧道。因此,解決方案是添加一個漏斗形狀的傳感器,並在此傳感器和我的英雄之間添加一個接頭。執行:

override protected function createShape():void{ 

     var radius:Number = 4; 
     var vertices:Vector.<b2Vec2> = new Vector.<b2Vec2>(); 
     vertices.push(new b2Vec2(0,0)); 

     for (var i:int = 0; i < 7; i++) { 
      var angle:Number = i/6.0 * .5* Math.PI; 
      vertices.push(
       new b2Vec2(radius * Math.cos(angle), 
          radius * Math.sin(angle))); 
     } 

     var sword_shape:b2PolygonShape = new b2PolygonShape(); 
     sword_shape.SetAsVector(vertices,8); 
     _shape = sword_shape;  
    }