我正在开发Java 2.5D游戏,但我遇到了正确显示地形图块的问题。我已经按照几个教程,浏览StackOverflow等,但似乎仍然缺少某些东西。
每个图块将其坐标存储在自上而下的2D视图中,因此它最初看起来像这样:
当我尝试以等距方式投影它们时,它看起来像这样(显然不正确):
以下是相关代码:
static int getIsoX(int X, int Y)
{
return (X-Y) - xOrientation;
}
static int getIsoY(int X, int Y)
{
return ((X+Y)/2) - yOrientation;
}
static void rotateBuffer()
{
double axis = (double) GameWorld.GRID_SIZE/2;
AffineTransform transform = new AffineTransform();
transform.rotate(45 * Math.PI / 180.0, axis, axis);
op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
}
void draw(Graphics2D G)
{
int x = GameWorld.getIsoX(xCoord, yCoord);
int y = GameWorld.getIsoY(xCoord, yCoord);
G.drawImage(op.filter(sprite, null), x, y, null);
}
xOrientation和yOrientation指的是摄像机的坐标。应该出现最终的等距视图,使得瓷砖整齐地相互对立:
我做错了什么?