-1

在过去的几天里,我一直把头撞在墙上,试图弄清楚如何正确扩展 CitrusEngine 的 Box2DPhysicsObjects 以生成我的自定义对象。我的目标是产生这种行为: 期望行为的例子

这是为了模拟我的英雄在挥动剑攻击时向使用输入确定的方向冲刺。剑“休眠”直到攻击状态被激活。

我想我对如何正确使用 Box2D(尤其是关节)有一个根本的误解。如果有人能指出我正确的方向,我将永远感激不尽。我无法真正提供我当前的代码,因为它已经无法正常工作了。

4

1 回答 1

-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;       
    }
于 2015-11-06T15:56:39.120 回答