我将如何实现玩家奔跑无尽的道路?


Answers:


16

我会在地面上(即,位于XZ平面上)绘制一个纹理四边形,其大小应与可见区域一样大,然后围绕顶点纹理坐标(将纹理寻址模式设置为wrap)进行操作。自动处理纹理重复和纹理滚动

  1. 要进行重复,而不是将垂直纹理坐标设置为[0至1],请将其设置为[0至N],其中N是您希望纹理重复的次数。根据与纹理高度相比,四边形的高度来调整此值。
  2. 对于滚动我简单地滚动垂直纹理坐标,从而代替从[0到N],将范围从[INC到N + INC]与值INC递增或递减的每个帧。我会不时地将inc换回原点,以防止上溢/下溢。

编辑我只是尝试完全按照我的描述来实现(但是在XNA中),并且效果很好。观看演示视频。感兴趣的人可以在这里找到源代码。


例如,如果N等于3,您将得到类似下图的图像(我将中间部分涂成红色,以便您可以看到重复发生的位置)。然后,简单地更改inc的值将使道路沿一个方向或另一个方向滚动,具体取决于您是递增还是递减。

在此处输入图片说明


可以使用相同的技术来伪造坦克线的动画。当然,如果您对每个链段进行建模,它将无法使用...
Exilyth

1

如果要“真实地”制作一条无尽的道路,则可以创建三个曲面,并在每个曲面移出视图之外时使它们循环。将这些表面首尾相连放置在世界空间中,然后将它们全部移向相机。当最近的一端移开相机时,将其位置重置为最远的表面的一端。

如果要将其实现为带有运动幻觉的精灵,则需要创建许多不同的纹理,其外观应如下所示:

随着视图向前移动,依次遍历纹理。


0

重复图像是个好主意。找出需要在屏幕上看到多少重复,然后以该次数绘制图像。随着道路的滚动,会出现一个点,一幅图像完全位于相机后面,因此不可见。此时,您希望将图像从脚后移到有限图像带的远端。

当我们这样做时,通过模仿奔跑的人的不稳定观点,您将获得最好的效果。从您的眼睛录制一部您正在奔跑的电影,然后进行研究。


2
那实际上是行不通的,因为他的形象是透视。他需要不同的图像才能播放动画。
鲍比
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.