Разобравшись со звёздами и дождём, можно переходить к снегу. Здесь, в общем-то, все изменения сводятся к тому, чтобы сделать характер движения частиц более похожим на снег, как и сами частицы.
Снежинки
Они явно отличаются и от точек звёзд, и от струй дождя. Самым идеальным вариантом было бы нарисовать несколько разных снежинок и выводить их на экран, выбирая в случайном порядке. Но я пока сделал максимально похожее – белые кружочки. В отличие от звёзд и капель дождя, они будут иметь разный масштаб в зависимости от расстояния.
Движение
Снег падает не так прямолинейно, как дождь. Поэтому, во-первых, я уменьшил скорость. Во-вторых, убрал ускорение падения. Во-третьих, добавил смещение по оси x, то есть влево-вправо. Это смещение задаётся случайно для каждой новорожденной снежинки. Первоначально я хотел сделать так, чтобы само смещение снежинки было хаотичным, то есть прибавлять к её координате x не одно и то же смещение, а каждый раз случайное. Но когда увидел всё в работе, то оказалось, что больше ничего не нужно. Каждая частица движется по наклонной прямой, но их коллективное движение создаёт полную иллюзию снега, в которую уже не хочется ничего добавлять.
Посмотрите сами прямо в браузере
Мне кажется, получилось очень уютно.
Как видим, написав один раз перспективную проекцию и создав набор частиц, достаточно только менять их внешний вид и параметры движения, чтобы получать самые разные эффекты. Если обобщить этот опыт, то можно сказать, что мы наметили путь к созданию систем частиц. С их помощью в играх реализуют очень многие эффекты – взрывы, дым, искры, летающих светлячков и т.д. Мы доберёмся и до них.
А у параллакса осталось ещё одно применение – горизонтальный или вертикальный скроллинг, на который посмотрим в следующей части.
Читайте также: вода как в Quake, симуляция огня