0

HashMapに画像を保存することでリソースを効率的にロードしようとするゲームエンジンがあります。Spriteオブジェクトの画像をロードしたいときは、単にSprite.image = LOAD_IMAGE(imageName);と言います。

今、私はこのゲームのマップエディタを作成しています。家のタイルなど、特定のタイルを回転させて、Java画像操作でさまざまな方向を向くようにしたいと思います。私はそれを機能させています。ただし、画像を新しい回転画像に設定する方法でエラーが発生します。Sprite.image = rotateImage(Sprite.image);と言います。これにより、同じタイプのすべてのタイルが同じ新しい回転画像を持つようになります。

各スプライトを回転させて他のスプライトの画像に影響を与えないように、ゲームに何を実装できますか?ゲームの効率が本当に上がると思うので、可能であればHashMapも保持したいと思います。

これが私のローテーションの実装方法です。

terrain.terrainImage = ImageManipulator.mirror(currentTile.terrain.terrainImage, false);

これが私の「ImageBank」です。publicHashMapimages= new HashMap(30);

public synchronized Image getImage(String imgName) {
    // Check if the HashMap images already has the specified image
            // by checking for the image name.
    if (imgExists(imgName)) {
        // Sprite already loaded.
        return hm.get(imgName);
    } else {
        // Sprite hasn't been loaded yet.
        Image img;
        img = loadImage(imgName);
        if (img == null) {
            // An error occured, couldn't load sprite.
            return null;
        } // else move on

        // save the loaded sprite (and now transparent) into the hashmap
        hm.put(imgName, img);
        // and then return the sprite
        return img;
    }
}
4

1 に答える 1

0

タイルを回転する場合とその角度でタイルごとに保存する (そして、描画するたびに回転させる) か、回転したコピーを画像に保存します。

回転したバージョンを保存することをお勧めします。

于 2012-12-28T22:54:16.527 に答える