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