Как изменить размер тела Farseer вместе с его суставами и связанными телами? - PullRequest
3 голосов
/ 18 декабря 2009

Я использую FarSeer и XNA.

Есть ли простой способ изменить размер или масштабировать тело FarSeer?

Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2009

Я искал решение этой проблемы и наткнулся на вашу ветку на официальном форуме. Вот что я могу почерпнуть, посмотрев официальные сообщения на форуме и исходный код Farseer:

При использовании фабрики кузова параметры ширины / высоты / радиуса предоставляются только для расчета момента его инерции. Сам класс body не имеет полей или свойств ширины / высоты.

Я думаю, что вы ищете, как изменить размер geom, что важно при обнаружении столкновений.

Класс Geom (прямоугольники, круги и еще много чего) не имеет полей или свойств ширины / высоты / радиуса. Вместо этого он определяется набором вершин, поэтому для изменения размера geom нам понадобится возможность изменять вершины. Класс geom имеет открытый метод для этого:

    /// <summary>
    /// Sets the vertices of the geom.
    /// </summary>
    /// <param name="vertices">The vertices.</param>
    public void SetVertices(Vertices vertices)
    {
        vertices.ForceCounterClockWiseOrder();
        localVertices = new Vertices(vertices);
        worldVertices = new Vertices(vertices);

        AABB.Update(ref vertices);
    }

Для изменения размера нам просто нужно выполнить арифметические операции с вершинами. У меня не было времени, чтобы проверить это самостоятельно, но это должно быть то, с чего мы начнем.

...