2D游戏背景视差滚动效果原理与在Unity中的实现思路

作者:LouisLiu
2017-10-28
36 45 4

什么是视差滚动?

视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验,大量的 2D 游戏场景背景使用了这项技术表现有视觉深度的世界。

1

Hollow Knight 中的背景视差滚动

2

Broforce 中的背景视差滚动

视差滚动的原理

视差效果,原本是一个天文学术语,当我们观察星空时,离我们远的星星移动速度较慢,离我们近的星星移动速度则较快。当我们坐在车上向车窗外看时,也会有这样的感觉,远处的群山似乎没有在动,而近处的稻田却在飞速掠过。

在 2D 游戏中跟随主角移动的摄像机在移动时发生位置变化,背景中距离主角不同位置的物体同步移动的速度不同,距离越近移动越快,距离越远移动越慢,导致游戏背景元素有层次错落的视觉错觉,这和我们人体的眼球在真实世界中的视觉效果很像,游戏场景背景就会表现出有景深的立体感。

3

在自己的游戏中使用视差滚动技术

在Unity官方2D游戏Demo中已使用到了视差滚动技术,笔者对此 Demo 中的视差滚动技术进行了研究,Demo 中使用 BackgroundParallax 脚本实现了视差功能,笔者编写此脚本代码说明。

4

官方 demo 链接

下图为游戏主场景,笔者在图中标出了脚本位置和脚本参数

5

BackgroundParallax脚本代码说明:

6

使用这个脚本小伙伴们可以很方便的在自己的项目中实现简易的视差滚动效果。

Unity中的视差滚动插件

在 Unity 中还有一些插件能方便的实现视差滚动,笔者没有购买使用过,有感兴趣的小伙伴也可以去尝试使用,以下列举两个插件。

Parallax

链接
7

Parallax Scrolling VZ

链接

8

结语

希望通过这篇文章大家能理解视差滚动技术的原理和实现思路,在自己的游戏中使用这项技术,制作出更为美观的2D游戏背景画面。

笔者之后还会根据自己正在开发中的项目碰到的技术应用分享一些有趣有用、对独立开发者有帮助的技术文章。希望通过自己的一些分享为中国的独立游戏贡献一份绵薄之力~

笔者才疏学浅,文章中若有任何错误请小伙伴们积极指正,笔者看到会尽快修改,谢谢!

LouisLiu 

独立游戏开发者 

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. Probe 2017-10-28

    把摄像机从正交投影改成透视投影,然后把前景中景背景在 z 方向上拉开就能实现这个功能吧………

  2. 何晓雨 2017-10-28

    但是这样做就会需要远处的山的z距离特别远,并且山的原图也得很大

    • 何晓雨 2017-10-29

      @何晓雨:反而使得小体积的素材变大了,不值得。视差只需要简单的计算之后再移动就可以实现了

    • inkcomic 2017-10-30

      @何晓雨:没错,还可以分层设置一个偏移强度,因为有一些层需要手动调节受视差效果的影响强度。

      最近由 inkcomic 修改于:2017-10-30 14:07:16

您需要登录或者注册后才能发表评论

登录/注册