2015-11-06 92 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;  
    }