Попытка генерировать атаку с использованием меча, используя Box2D в Citrus Engine

Последние пару дней я бился головой о стену, пытаясь понять, как правильно расширять объекты Box2DPhysicsObjects CitrusEngine для создания моих пользовательских объектов. Моя цель - создать такое поведение: пример желаемого поведения.

Это сделано для того, чтобы смоделировать моего героя в направлении, определяемом с помощью входных данных, когда он размахивает мечом для атаки. Меч "спит", пока не активируется состояние атаки.

Я думаю, что у меня есть фундаментальное недоразумение о том, как правильно использовать 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;       
    }
Другие вопросы по тегам