gpt4 book ai didi

java - 如何将一个 PNG 图像用于多个 Sprite ?

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:58 24 4
gpt4 key购买 nike

如何为多个 Sprite 使用单个 PNG 图像?我正在尝试制作一个简单的 2d 游戏,但我不想拥有 20 多个不同的图像文件。我只想将它们放在一个 PNG 文件中。

例子

来自 minecraft 的 terrain.png(和 items.png)上面有不同的图 block ,每个 16x16 像素区域用于 block 的不同纹理.

有人可以提供一些代码和解释吗?

最佳答案

几年前我写了一个 Java 游戏,希望能给你一些有用的建议和代码示例。

您可以像这样在单个图像中组织您的 Sprite :

https://github.com/mikera/tyrant/blob/master/src/main/resources/images/creature32.png

上面的例子使用了 32x32 的 Sprite ,你可以使用任何你喜欢的尺寸,但它有助于让它们保持规则。

然后当你在游戏中绘制屏幕时,你只需选择相应的 Sprite 并在正确的位置绘制。

代码可能看起来像这样:

public void drawImage(Graphics g,double x, double y, int image) {
int px = (int)((x - scrollx) * TILEWIDTH);
int py = (int)((y - scrolly) * TILEHEIGHT);
int sx = (image%20) * TILEWIDTH;
int sy = TILEHEIGHT * (image/20);
g.drawImage(sourceImage, px, py, px + TILEWIDTH,
py + TILEHEIGHT, sx, sy, sx + TILEWIDTH, sy + TILEHEIGHT,
null);
}

这里的 int image 是 Sprite 表上要使用的位置的索引。递增 1 将一个 Sprite 向右移动,递增 20 将一个 Sprite 在 Sprite 表中向下移动。

更完整的源代码位于:https://github.com/mikera/tyrant/blob/master/src/main/java/mikera/tyrant/MapPanel.java

关于java - 如何将一个 PNG 图像用于多个 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com