编程语言
首页 > 编程语言> > java-j2me-以45度为增量旋转2d点的数组

java-j2me-以45度为增量旋转2d点的数组

作者:互联网

我正在研究在网格上运行的流氓风格手机游戏.此游戏中的攻击/物品通过以相对于用户的模式瞄准图块来进行操作.旋转通常也与用户瞄准的方向有关,例如在此screenshot

Point2d[] damageTiles = new Point2d[4];

damageTiles[0] = new Point2d(0, -1);
damageTiles[1] = new Point2d(0, -2);
damageTiles[2] = new Point2d(1, -2);
damageTiles[3] = new Point2d(-1, -2);

显示相对于瞄准“向上”的临时敌人(黄色框).

我目前有简单的代码将模式阵列旋转90度增量,如here所示.我的问题是,是否有一种简单的方法可以将2d点的阵列旋转45度增量,从而使我的攻击/物品向对角线射击,最好不要使用浮点数学运算法,因为它在许多手机上运行缓慢(或者我听说).对于熟悉图形编程的任何人来说,这可能都是一个琐碎的问题,但是我遇到了一个编码块的案例.

我当前的轮换代码如下所示.我现在意识到,一种更好的方法是采用一个角度而不是一个“方向”,然后将这些点旋转该角度(排除角度当然不是45的倍数).

private Point2d[] rotateList(Point2d[] points, int direction) {
    for (int i = 0; i < points.length; i++) {

        if (direction == ROTATE_LEFT) {
            int temp = points[i].x;
            points[i].x = points[i].y;
            points[i].y = -1 * temp;
        }
        else if (direction == ROTATE_RIGHT) {
            int temp = points[i].x;
            points[i].x = -1 * points[i].y;
            points[i].y = temp;
        }

    }

    return points;
}

解决方法:

您显示的T形攻击很难以45度旋转-事情并不能真正从90转换为45.

original:
.....
.###.
..#..
..o..

alternative A:
.....
.##..
.##..
...o.

alternative B:
..#..
.#...
#.#..
...o.

这种模式很容易会有其他人.

我建议您创建一个45度的“图案”以匹配90度的图案,然后完全按照旋转90度的方式旋转45度的图案.

标签:graphics,java-me,java
来源: https://codeday.me/bug/20191107/2004258.html