雪片がヒラヒラと落ちてくる様子を表現しました。
- 遠くの雪は小さく描画し、ゆっくりと落下、
- 近くの雪は大きく描画し、より早く落下
とすることで奥行を表現しようとしたのですが、あまり効果はなかったようです。
class Snow {
float x, y, s, theta;
Snow(float x, float y){
this.x = x;
this.y = y;
this.s = random(20, 40);
this.theta = random(360);
}
void paint(){
y += s / 30;
pushMatrix();
float offset = s * sin(y/50);
translate(x + offset, y);
theta += 1;
rotate(radians(theta));
image(snowImage, 0, 0, s, s);
popMatrix();
}
}
PImage snowImage;
ArrayList<Snow> snows = new ArrayList<Snow>();
void setup(){
size(600, 600);
imageMode(CENTER);
snowImage = loadImage("snow.png");
}
void draw(){
if(frameCount % 40 == 0){
Snow s = new Snow(random(width), 0);
snows.add(s);
}
background(0);
for(Snow s : snows){
s.paint();
}
}