0

Java で (現在かなり単純な) トップダウン 2D ゲームを作成していますが、ズームの実装に問題があります。

スケーリングできる唯一の方法は、幅と高さを減らし、乗算されたバージョンを setPreferredSize() に供給することです。代わりに AffineTransform を使用して、レンダリング時に Graphics2D をスケーリングしたいのですが、g2d.setTransform(transformer);線を含めると、すべてがヌル タイルとしてレンダリングされます。

なし: ここに画像の説明を入力 あり: ここに画像の説明を入力

また、タイル/スプライトのレンダリングを処理するクラスに、幅と高さの値を乗算/除算して、まったく同じ結果を与えようとしました。何か案は?

これが私のレンダリング方法です:

    bs = getBufferStrategy();
    if (bs == null) {
        createBufferStrategy(3); // woo, triple buffering!
        return;
    }

    transformer.scale(scale, scale);

    // other stuff here . . . 

    // draw screen.pixels to pixels
    for (int i = 0; i < pixels.length; i++) {
        pixels[i] = screen.pixels[i];
    }

    // draw
    g2d = (Graphics2D)bs.getDrawGraphics();
    g2d.setTransform(transformer);
    {
        g2d.drawImage(image, 0, 0, width, height, null);
        /* g.setColor(Color.WHITE);
         * g.setFont(new Font("Veranda", 0, 50));
         * g.drawString("B: " + Mouse.b(), 80, 80);
        */
    }
    g2d.dispose();

    bs.show(); // blit/show buffer

    Toolkit.getDefaultToolkit().sync();

私は Eclipse IDE を使用しており、Java1.6 で事前に作成されたゲーム エンジンは使用していません。JFrame の Canvas にレンダリングしています。

4

1 に答える 1