1

Java でタイル (タイル サイズは 16 ピクセル) レベルのスクロール ゲームを作成しています。今、私は照明システムを扱っています。各ライト (黄色のブロックとタイル) のこのコードを使用して、ライトのグラデーション (図に示すように) を計算しました。

visMap = new int[level.getWidth() * level.getHeight()];

    int lighted = 0;

    for (int x = 0; x < level.getWidth(); x++) {
        for (int y = 0; y < level.getHeight(); y++) {
            double xd = (this.x >> 4) - x;
            double yd = (this.y >> 4) - y;

            double distance = Math.sqrt(xd * xd + yd * yd);

            double p = power * 1.0;
            double bright = p - distance;

            visMap[x + y * level.getWidth()] = (int) (bright * power);
        }
    }

そして今、私はブロックが何らかの形で光を遮断するようにしようとしています(実生活のように)。これには良い方法がありますか?よろしくお願いします、Zaplik

写真:クリック

4

1 に答える 1

0

光を再帰的に広げます。再帰の各レベルで、適切な量の光強度を減少させます。ライトが動いている方向も追跡します。障害物にぶつかったら、再帰のそのブランチを停止します。

于 2012-12-06T20:44:17.200 に答える