2d - 在等距世界中的瓷砖之间移动 Sprite

标签 2d isometric

我正在寻找有关如何在等距游戏世界中移动(和动画)2D Sprite 的信息,但是在从一个图块到另一个图块的移动过程中让它们的运动平滑地动画,而不是让它们从一个图块的范围跳到接下来的界限。

这方面的一个例子是在运输大亨游戏中,火车和车厢通常一半在一个瓷砖上,一半在另一个瓷砖上。

最佳答案

在正确的位置绘制 Sprite 并不太难。投影公式为:

screen_x = sprite_x - sprite_y
screen_y = (sprite_x + sprite_y) / 2 + sprite_z

sprite_x 和 sprite_y 是定点值(如果需要,也可以是浮点值)。通常,固定点的精度是图块上的像素数 - 所以如果您的图块图形是 32x16(投影的 32x32 正方形),您将有 5 位精度,即图块的 1/32。

真正困难的部分是将 Sprite 按正确呈现的顺序排序。如果您使用 OpenGL 进行绘图,则可以使用 z 缓冲区来使这变得非常简单。使用 GDI、DirectX 等,真的很难。运输大亨并未在所有情况下正确渲染 Sprite 。最初的运输大亨拥有你所见过的最可怕的渲染引擎。它实现了三个缩放级别是一个巨大的 masm 宏的三个实例。 TT 完全是用汇编语言编写的。我知道,因为我多年前将它移植到 Mac 上(并且还为 PS1 开发套件做了一个很酷的版本,不过它需要 6Mb)。

附言游戏中的一个小平房图形基于 Chris Sawyer 当时居住的房子。我们很想为 Mac 版本添加停在车道上的法拉利,因为那是他用版税购买的汽车。

关于2d - 在等距世界中的瓷砖之间移动 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/914472/

相关文章:

language-agnostic - 计算 2D 向量叉积

javascript - HTML 5 Canvas - 围绕自己的原点旋转多个对象

algorithm - 如何从鼠标坐标接收细胞的等距索引?

ios - Swift Spritekit 等距 map 触摸位置

iphone - 二维坐标系中的等距投影

java - 使用 for 循环在 Java 中创建二维坐标平面?

arrays - 用vba中其他数组的内容过滤二维数组的最快方法

r - 如何在给定的指定区域生成随机形状。(R语言)?

python - OpenGL 中的等距 View

2d - 屏幕坐标到等距坐标