java - 多边形无法正确旋转

标签 java libgdx rotation polygon

我正在制作一款游戏,需要解决不同角色的碰撞问题。问题是,当我尝试旋转角色的多边形时,多边形开始在整个屏幕上移动。当它仅旋转 0 度时,它工作正常,但其他任何角度都会远离角色的位置。基本上,有没有比使用 Polygon.setRotation() 更好的旋转方法,或者我只是做错了?代码如下:

public Polygon getPoly() {
    Polygon poly = new Polygon(new float[] {
            position.x - (width / 2), position.y + (width / 2),
            position.x + (width / 2), position.y + (width / 2),
            position.x + (width / 2), position.y - (width / 2),
            position.x - (width / 2), position.y - (width / 2)
    });

    poly.setRotation(rotation);
    poly.translate(width / 2, width / 2);

    return new Polygon(poly.getTransformedVertices());
}

最佳答案

我刚刚想通了,我必须执行poly.setOrigin(position.x,position.y)来设置相对于角色的旋转。完整的代码在这里,如果有人需要的话:

public Polygon getPoly() {
    Polygon poly = new Polygon(new float[] {
            position.x - (width / 2), position.y + (width / 2),
            position.x + (width / 2), position.y + (width / 2),
            position.x + (width / 2), position.y - (width / 2),
            position.x - (width / 2), position.y - (width / 2)
    });

    poly.setOrigin(position.x, position.y);
    poly.setRotation(getRotation());
    poly.translate(width / 2, width / 2);

    return new Polygon(poly.getTransformedVertices());
}

关于java - 多边形无法正确旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482196/

相关文章:

python - 如何在 Pygame 中进行两个单独的对象匹配旋转

ios - 关闭旋转?

java - 多线程初始化同步

java - 通过子面板中 JButton 的 ActionEvent 将组件添加到父容器

android - libgdx : Clicklistener doesnt work on resize

gradle - LibGDX:如何将 Google Mobile Vision API 添加到 LibGDX 项目?

java - 舞台对象不会在每个屏幕上居中和缩放相同

Java-Chars 可以向左旋转但不能向右旋转?

java - JLabel 组件中的几个图像快照

java - 从 Android 上的 Google 日历获取 Activity