尝试使用Citrus Engine中的Box2D生成剑摆动攻击

时间:2015-11-06 13:40:17

标签: actionscript-3 flash box2d citrus-engine box2d-joints

过去几天我一直在撞墙,试图找出如何正确扩展CitrusEngine的Box2DPhysicsObjects以生成我的自定义对象。我的目标是生成此行为: example of desired behavior

这是为了模拟我的英雄在使用输入确定的方向冲刺,同时摆动他的剑进行攻击。剑"睡觉"直到攻击状态被激活。

我认为我对如何正确使用Box2D(特别是关节)有一个根本的误解。如果有人能指出我正确的方向,我会永远感激。我无法真正提供我当前的代码,因为它已经超越了它。

1 个答案:

答案 0 :(得分:-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;       
    }