如何为飞船创建等离子迹线


13

我看过很多很棒的太空游戏,它们都使用类似的效果。我真的很想了解这些效果通常是如何实现的。

我尤其想知道在不使用所有可用资源的情况下如何完成飞船或导弹后面的一些步伐。

对于效果的示例,我的意思是请参阅Gimbal屏幕截图,以及该链接上的视频。另外,导弹步道醚蒸气

这些都是相同的技术吗?我主要对2D感兴趣,但是我无法想象它会有所不同。

那么我将如何去创造这种效果呢?我们是在谈论像素着色器,混合模式/滤镜,位图效果,粒子系统,还是什么?并非特定于平台。我只是在寻找理论,但是具体的例子或链接会很棒。细节越多越好。

Answers:


7

那么我将如何去创造这种效果呢?我们是在谈论像素着色器,混合模式/滤镜,位图效果,粒子系统,还是什么?并非特定于平台。我只是在寻找理论,但是具体的例子或链接会很棒。细节越多越好。

上述所有的。

除非您查看他们的源代码,否则您可能无法确切知道他们是如何做到的。

不过,从两场比赛的外观上来看,两者有什么似乎是连接和小径船几何。不一定是基本的点精灵粒子系统,但这也不是那么困难。

有些游戏会使用曲线算法,并从中生成一个顶点列表,并在轨迹的两个端点处应用不同的纹理进行一些纹理化处理,以便在某一点排气看起来很热,而在另一点排气更凉爽,进入太空。

玩家的飞船是一个有趣的情况,因为其运动是不可预测的,您可能需要更新曲线算法的控制点,或者最终对最新的飞船位置进行采样并基于此生成顶点位置。

如果您想获得一些无法控制的功能,请看一下先前问题中的答案。不过,根据您的需要,对玩家位置进行采样可能会更好,并且更容易理解。

这让您思考:

开始采样玩家的位置。这些点将构成路径的主体段,可从中构建几何体。保持具有单独纹理的单独尾段是一个好主意。您可能想要检测玩家何时转弯并增加这些分段的频率,否则最终将出现块状曲线。除非那是你想要的效果:)

在某些情况下,需要停止生成片段,而现有片段应从最靠近尾巴的身体片段(而不是尾巴本身)开始缓慢缩小比例。这是在播放器速度变慢的情况下。但是,如果按比例缩小航段的速度与玩家的飞船速度相匹配,则在取出时会及时形成一个新的航段。因此,这对于全动的船也很有效。步道的长度将始终相同-这将提供流畅一致的溪流。

头段应始终以玩家的当前位置。如果检测到任何转弯,则将现有头部段添加到主体段,然后开始新的头部段。重复。根据您的纹理,每个片段也可能具有最大长度。

这给我们提供了一种简单的方法来模拟这种效果:摆脱了这种想法:除非提供更多的片段,否则效果将始终会自行减小/缩小;然后以一定的速度进行尝试以防止其缩小。


4

创建这样的线索有很多不同的可能性。您可以使用简单的线,多边形,点云等。

它们通常都基于以下两个概念之一:

  • 跟踪先前的位置,并使用它们绘制尾巴。
  • 跟踪速度/方向,并据此调整尾巴。

第一种方法更适合于诸如导弹之类的东西,而第二种方法则更适合于跟随某物(例如龙的尾巴)的某种附着物。

发动机尾部的简单实现并不复杂。您只需要一些缓冲区即可存储以前的位置。我不知道您使用的是哪种语言,但是为此,我要么使用环形缓冲区,要么使用某种类似的缓冲区(在末端进行快速删除和插入)。

每个第x帧/更新刻度(您不必每秒执行数百次),实际上是将最旧/最后一个元素放在缓冲区中,并将当前位置添加到其前面(仅当缓冲区已满时;确保它始终包含n个元素,其中n决定尾巴的长度)。

然后,在绘制过程中,您只需从当前位置开始,并通过缓冲区中的所有点绘制一组线,同时降低每个其他顶点的不透明度。

这样,您应该得到一个漂亮干净的尾巴。根据您的平台,您可以扩展此范围,例如使用着色器或沿该路径包装一些漂亮的尾部图形。

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.