rDrama/files/assets/events/homoween/js/blood.js

53 lines
1.2 KiB
JavaScript
Raw Normal View History

2023-09-28 23:58:09 +00:00
/*
A Bloody Mess by Rob Glazebrook
By default, canvas does not clear between frames. I'm taking advantage of that to create the running blood effect.
This pen was inspired by Katy Decorah's BLOOD: https://codepen.io/katydecorah/pen/Lkogi
*/
let i = 0;
const stabs = document.getElementById('stabs').value
let blood = Sketch.create({autoclear: false, autopause: false}),
drops = [],
dropCount = stabs*10,
maxDrops = dropCount+1,
Drop = function() {
this.x = random(0,blood.width);
this.radius = random(10,20);
this.y = -this.radius - random(50,100);
this.vy = this.radius/6;
this.r = ~~random(240,255);
this.g = ~~random(0,20);
this.b = ~~random(0,20);
};
blood.update = function() {
let d = drops.length;
while(d < dropCount && i < maxDrops) {
let drop = new Drop();
drops.push(drop);
d++;
i++;
}
while(d-- && i < maxDrops) {
let drop = drops[d];
drop.y += drop.vy;
if(drop.y - drop.radius > blood.height) {
drops.splice(d,1);
}
}
}
blood.draw = function() {
let d = drops.length;
while(d-- && i < maxDrops) {
let drop = drops[d];
blood.beginPath();
blood.fillStyle = 'rgba('+drop.r+','+drop.g+','+drop.b+',.8)';
blood.arc(drop.x,drop.y,drop.radius,0,TWO_PI);
blood.fill();
}
}