用Javascript打造粒子引擎(第一部分)

401 查看

要想给游戏注入活力和互动性,粒子引擎是很一个很重要的元素。只需要采用比较简单的系统,你就能创建出几乎是无穷的效果,只需要改动几个参数就能产生比如火焰、水滴、烟雾、火花、血溅、爆炸以及天气等效果。本教程将带领大家用Javascript创建一个简单而又丰富的2D粒子系统。到本文的第一部分结束时,你就会拥有一个最基本但可以使用的粒子系统,它能创建广泛的基本效果。

单个粒子

首先定义粒子对象

这一步很简单,而且直到本教程结束也不会有大的改动。构造方法的参数分别是坐标,以度数表示的角度,以像素/秒为单位的速度,以秒为单位的生命长度以及以像素为单位的大小。接下来创建一个坐标向量,然后给其他属性赋值并把速度和角度转换成速度向量。这里采用的角度和速度值是便于理解,但是转换成一个简单的向量表示更便于处理X和Y值。由于Y轴是从顶部递增,这里Y值要求是负数。

创建喷射器

粒子对象本身其实没什么用,所以我们需要一个东西来控制它, 那就是喷射器。喷射器根据设定的参数喷射粒子,当生命周期结束后消亡。首先定义一些喷射器需要的设置,先来一些简单的吧。这里我们把这些设置命名为“基本”并放入到settings对象中保持整洁。这样我们就能通过”settings.fire”或者”settings.smoke”等方式来应用不同的设置。

喷射速率表示每秒钟喷射的粒子数量。其余的设置可以顾名思义。粒子对象的构造方法中每一个参数都对应一个设置项,除了粒子的坐标参数,它默认值为0,0(喷射器的坐标)。以_range结尾的设置指定特定参数的范围,比如速度的取值范围是55到60.

现在我们需要对这些设置进行应用,下面开始定义喷射器。