等距投影

时间:2013-12-05 02:01:55

标签: java isometric

我正在开发Java 2.5D游戏,但我遇到了正确显示地形图块的问题。我已经按照几个教程,浏览StackOverflow等,但似乎仍然缺少某些东西。

每个图块将其坐标存储在自上而下的2D视图中,因此它最初看起来像这样: Before Projection

当我尝试以等距方式投影它们时,它看起来像这样(显然不正确): After Projection

以下是相关代码:

    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指的是摄像机的坐标。应该出现最终的等距视图,使得瓷砖整齐地相互对立:

我做错了什么?

0 个答案:

没有答案