You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.8 KiB
41 lines
1.8 KiB
class Bird{
|
|
|
|
constructor(x){
|
|
this.x = x;
|
|
this.y = random(height * 0.05, height * 0.3);
|
|
this.v = random([true, false]) ? random(3, 5) : random(-3, -5);
|
|
this.length = random(50, 100);
|
|
}
|
|
|
|
move(){
|
|
this.x += this.v;
|
|
if (this.x - this.length / 2 > worldWidth) this.x = -this.length / 2;
|
|
if (this.x + this.length / 2 < 0) this.x = worldWidth + this.length / 2;
|
|
}
|
|
|
|
show(){
|
|
let wing = sin(0.02 * PI * this.x);
|
|
if (this.x + this.length / 2 > viewPort.x && this.x - this.length / 2 < viewPort.x + width){
|
|
fill(0);
|
|
beginShape();
|
|
vertex(this.x - this.length / 2, this.y);
|
|
vertex(this.x - this.length * 0.4, this.y - this.length * 0.1);
|
|
vertex(this.x + this.length * 0.15, this.y - this.length * 0.1);
|
|
vertex(this.x + this.length * 0.15, this.y - this.length * 0.1 - this.length * 0.4 * wing);
|
|
vertex(this.x + this.length * 0.1, this.y - this.length * 0.1 - this.length * 0.5 * wing);
|
|
vertex(this.x + this.length * 0.05, this.y - this.length * 0.1 - this.length * 0.4 * wing);
|
|
vertex(this.x, this.y - this.length * 0.1 - this.length * 0.5 * wing);
|
|
vertex(this.x - this.length * 0.05, this.y - this.length * 0.1 - this.length * 0.4 * wing);
|
|
vertex(this.x - this.length * 0.1, this.y - this.length * 0.1 - this.length * 0.5 * wing);
|
|
vertex(this.x - this.length * 0.15, this.y - this.length * 0.1 - this.length * 0.4 * wing);
|
|
vertex(this.x - this.length * 0.15, this.y - this.length * 0.1);
|
|
vertex(this.x + this.length * 0.4, this.y - this.length * 0.1);
|
|
vertex(this.x + this.length / 2, this.y);
|
|
vertex(this.x + this.length * 0.4, this.y + this.length * 0.1);
|
|
vertex(this.x - this.length * 0.4, this.y + this.length * 0.1);
|
|
endShape();
|
|
fill(255);
|
|
ellipse(this.x + ((this.v > 0) ? 1 : -1) * this.length * 0.4, this.y - this.length * 0.025, this.length * 0.05);
|
|
}
|
|
}
|
|
} |