我有一个游戏引擎,它试图通过在HashMap中存储图像来有效地加载资源。当我想为Sprite对象加载图像时,我只想说Sprite.image = LOAD_IMAGE(imageName);
现在我正在制作这款游戏的地图编辑器。我希望能够通过Java Image操作旋转某些瓷砖,例如房屋的瓷砖,以面向不同的方向。我有那个工作;但是,我将图像设置为新旋转的图像的方式出现错误。我说Sprite.image = rotateImage(Sprite.image);这导致相同类型的ALL TILES具有相同的新旋转图像。
我可以在游戏中实现什么,以便每个Sprite都可以旋转而不会影响其他Sprite的图像?如果可能的话,我仍然希望保留我的HashMap,因为我认为它会真正提高我的游戏效率。
这是我实现轮换的方式:
terrain.terrainImage = ImageManipulator.mirror(currentTile.terrain.terrainImage, false);
这是我的“ImageBank”: public HashMap images = 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;
}
}
答案 0 :(得分:0)
您可以为每个图块存储旋转的角度和旋转角度(以及每次绘制时旋转它),或者将旋转的副本存储在图像上。
我建议存储旋转版本。