libgdx:使十字形状旋转

时间:2017-05-27 16:10:08

标签: java libgdx

我正在尝试使用libgdx尝试制作我的第一个简单游戏。我设法让一条线旋转。

我还没有完成的是添加垂直线,使其成为十字形,然后旋转此形状。

public void render(ShapeRenderer renderer) {
    renderer.set(ShapeType.Line);
    renderer.setColor(COLOR);

    /**
     * finding the angle
     */

    float elapsedNanoseconds = TimeUtils.nanoTime() - initialTime;
    float elapsedSeconds = MathUtils.nanoToSec * elapsedNanoseconds;
    float elapsedPeriods = elapsedSeconds / 2.0f;
    float cyclePosition = elapsedPeriods % 1;

    float x = WORLD_SIZE / 2 + radius * MathUtils.cos(MathUtils.PI2 * cyclePosition);
    float y = WORLD_SIZE / 2 + radius * MathUtils.sin(MathUtils.PI2 * cyclePosition);

    //line rotates and moves at the same time. 
    renderer.line(position.x - x, position.y + y, position.x + x, position.y - y);

}

position是一个Vector2()类对象,每隔 delta 秒更新一次,并保存当前行的中心。

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方案。如果有人遇到类似的问题,我会留在这里:

public void render(ShapeRenderer renderer) {
    /**
     * find the angle
     */
    float elapsedNanoseconds = TimeUtils.nanoTime() - initialTime;
    float elapsedSeconds = MathUtils.nanoToSec * elapsedNanoseconds;
    float elapsedPeriods = elapsedSeconds / 2.0f;
    float cyclePosition = elapsedPeriods % 1;

    float x = WORLD_SIZE / 2 + radius * MathUtils.cos(MathUtils.PI2 * cyclePosition);
    float y = WORLD_SIZE / 2 + radius * MathUtils.sin(MathUtils.PI2 * cyclePosition);

    float x2 = WORLD_SIZE / 2 + radius * MathUtils.sin(MathUtils.PI2 * -cyclePosition);
    float y2 = WORLD_SIZE / 2 + radius * MathUtils.cos(MathUtils.PI2 * -cyclePosition);


    renderer.set(ShapeType.Line);
    renderer.setColor(COLOR);

    renderer.line(position.x - x, position.y + y, position.x + x, position.y - y);
    renderer.line(position.x - x2, position.y + y2, position.x + x2, position.y - y2);
}