gpt4 book ai didi

java - Sprite 和图层

转载 作者:行者123 更新时间:2023-11-30 03:53:53 27 4
gpt4 key购买 nike

所以最近我决定尝试制作某种形式的 Sprite 式游戏,类似于旧的《最终幻想》游戏。我主要将其作为代码学习过程,而不是使用 RPGMaker 之类的东西来实际创建一个想法。

我最关心的是如何以简单的方式正确绘制多层图像(例如静态 Sprite 、背景图像等)。虽然我通常只是测试一堆东西来看看而不是询问,但我意识到有很多(可能很简单)的方法可以在编码中实现任何一件事。

有哪些方法(或类)来实现这一点?最好是一种易于更改层所在位置的方法(层 A 在 B 前面...哦,等等,任何时候都没有 B 在 A 前面!)

我确实希望这不是一个太宽泛的问题......

谢谢。

最佳答案

最基本的方法是 painter's algorithm ,只需按照与屏幕距离相反的顺序绘制图层(例如,首先是背景,然后是字符,然后是前景)。

每个层都由一个简单的类表示,例如:

public class Layer
{
List<Sprite> sprites;

public void draw(Graphics g)
{
for (Sprite sprite : sprites)
sprite.draw(g);
}
}

Sprite 所在的位置:

public class Sprite
{
BufferedImage image;
float x, y, w, h;

public void draw(Graphics g)
{
g.drawImage(image, (int)x, (int)y, (int)(x+w), (int)(y+h), 0, 0, image.getWidth(), image.getHeight(), null);
}
}

在这里,背景将是一个带有单个 Sprite 的图层,该 Sprite 的大小与屏幕大小相同。您可以对背景图层进行子类化以实现视差等效果。

最后,您的图层将成为场景的一部分:

public class Scene
{
List<Layer> layers;

public void draw(Graphics g)
{
for (Layer layer : layers)
layer.draw(g);
}
}

更改渲染顺序就像更改场景中“图层”列表中的顺序一样简单。

关于java - Sprite 和图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731321/

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