如何在libgdx中做具有深度感的二维地面?
How to do 2D ground with depth sense in libgdx?
我知道做一个水平和垂直卷轴游戏(比如马里奥),在这种游戏类型中,角色与用户的距离总是相同的。角色只能在水平滚动条中左右移动,在垂直滚动条中只能上下移动。
但有些 2D 游戏中的角色可以在场景中自由移动,例如图形冒险。
那我该怎么做才能让角色在地面上自由移动,有深度感呢?
可以在这个视频中看到一个例子:http://youtu.be/DbZZVbF8fZY?t=4m17s
谢谢。
我会这样做:
首先想象您正在从上往下看您的场景。像这样设置你的坐标系。所以场景中的所有对象都将具有 X 和 Y 坐标。您所有的对象移动和检查(当角色撞到墙壁或其他东西时),计算都在那个 2D 世界中进行。
现在,要绘制您的世界,如果您想要更简单的东西,没有一些等距透视 3D 外观,您只需先绘制您的背景图像,然后将所有对象从远到近排序并以这种方式绘制它们。分配 Y 坐标以稍微压缩运动区域。向 Y 添加一些常量以将该区域向下移动。如果您的角色可以跳跃或飞行(通过 Y 轴移动),只需将 Y 坐标移动一定量即可。
但如果你想让它更像 3D,你就必须进行某种透视变换 - 将你的 X 坐标乘以 Y 和一些常量(从常量值 1 开始并调整它直到最佳值) .你也可以用 Y 坐标做类似的事情,但不要认为像这样的冒险游戏需要它。
如果没有图片,这可能很难理解,但实际上是非常简单的转换。
我知道做一个水平和垂直卷轴游戏(比如马里奥),在这种游戏类型中,角色与用户的距离总是相同的。角色只能在水平滚动条中左右移动,在垂直滚动条中只能上下移动。
但有些 2D 游戏中的角色可以在场景中自由移动,例如图形冒险。
那我该怎么做才能让角色在地面上自由移动,有深度感呢?
可以在这个视频中看到一个例子:http://youtu.be/DbZZVbF8fZY?t=4m17s
谢谢。
我会这样做:
首先想象您正在从上往下看您的场景。像这样设置你的坐标系。所以场景中的所有对象都将具有 X 和 Y 坐标。您所有的对象移动和检查(当角色撞到墙壁或其他东西时),计算都在那个 2D 世界中进行。
现在,要绘制您的世界,如果您想要更简单的东西,没有一些等距透视 3D 外观,您只需先绘制您的背景图像,然后将所有对象从远到近排序并以这种方式绘制它们。分配 Y 坐标以稍微压缩运动区域。向 Y 添加一些常量以将该区域向下移动。如果您的角色可以跳跃或飞行(通过 Y 轴移动),只需将 Y 坐标移动一定量即可。
但如果你想让它更像 3D,你就必须进行某种透视变换 - 将你的 X 坐标乘以 Y 和一些常量(从常量值 1 开始并调整它直到最佳值) .你也可以用 Y 坐标做类似的事情,但不要认为像这样的冒险游戏需要它。
如果没有图片,这可能很难理解,但实际上是非常简单的转换。