Vector2已关闭 - libgdx / java

时间:2016-09-19 08:53:30

标签: android libgdx

game.batch.begin();
for (Array obstacle_array123: obstacle_array) {
    body = obstacle_array123;
    for (Body bodies: body) {
        if (bodies.getUserData() instanceof Array && bodies.isActive()) {
            sprites_array = (Array)bodies.getUserData();
            for (int fix_pos = 0; fix_pos < sprites_array.size; fix_pos++) {
                sprite = sprites_array.get(fix_pos);
                if (verts.size != 0) verts.removeRange(0, verts.size - 1);
                f = bodies.getFixtureList().get(fix_pos);
                s = (PolygonShape)f.getShape();
                transform = bodies.getTransform();

                for (int i = 0; i < s.getVertexCount(); i++)
                {
                    s.getVertex(i, tmp);
                    transform.mul(tmp);
                    verts.add(new Vector2(tmp));
                }
                rotation_point.set((verts.get(0).x + verts.get(1).x + verts.get(2).x + verts.get(3).x) / 4, (verts.get(0).y + verts.get(1).y + verts.get(2).y + verts.get(3).y) / 4);

                sprite.setPosition(rotation_point.x - sprite.getWidth() / 2, rotation_point.y - sprite.getHeight() / 2);
                sprite.setRotation(bodies.getAngle() * MathUtils.radiansToDegrees);
                sprite.draw(game.batch);
            }
        }
    }
}
game.batch.end();

我有一个游戏,我的身体是由多个方形灯具制成的,所以这是在每个方形灯具上渲染每个方形精灵的代码。

2个问题 - 1.st - &gt;它只渲染数组中的第一个精灵
2.nd - &gt;如果你看下面的循环(已解决)

for (int i = 0; i < s.getVertexCount(); i++)
{
    s.getVertex(i, tmp);
    transform.mul(tmp);
    verts.add(new Vector2(tmp));
}

相比,它显然是不同的
for (int i = 0; i < s.getVertexCount(); i++)
{
    s.getVertex(i, tmp);
    transform.mul(tmp);
    verts.add(tmp);
}

第二个例子中产生的坐标对于正方形的半宽和半高是错误的。

当我尝试从两个示例中获得协调时,数字是相同的,但是在设置精灵位置时,第二个示例会消失。

1 个答案:

答案 0 :(得分:1)

你应该分别提出这两个问题,但要回答你的第二个问题,那么它们就不同了。

在第一个中,每次循环都会向Vector2添加新的verts。因此,verts最终将持有不同Vector2的负载。

在第二个中,你反复将同一个Vector2添加到verts,因此它只会有一个Vector2一遍又一遍地具有相同的值(请记住Java是通过参考传递)。

警告 - 我的回答是假设verts是某种标准集合或libgdx Array