For this weeks assignment, I decided to go with a bee’s movement as I was inspired by the flies around campus annoying me around the palms but wanted something a bit cuter. I wanted to make sure the bee’s movement wasn’t smooth and a bit static. I also want to incorporate images in my second IM. project so learnt how to handle images. The following is a bee video of the inspiration.
https://www.youtube.com/watch?v=-d_pQ3DyzHg
This was my initial code but it made the bee images simply move smoothly.
class Bee { constructor(x, y) { this.position = createVector(x, y); this.velocity = createVector(random(-0.65, 0.5), random(-0.75, 0.5)); this.acceleration = createVector(0, 0); this.img = bee_img; } update() { this.acceleration.limit(3); // Update velocity and position based on acceleration this.velocity.add(this.acceleration); this.position.add(this.velocity);
I added some additional behaviours and randomness, alongside a ‘slow down’ vector to have the acceleration decrease whenever the acceleration was a bit too high.
constructor(x, y) { this.position = createVector(x, y); //positioning of the bee this.velocity = createVector(random(-0.65, 0.5), random(-0.75, 0.5)); this.acceleration = createVector(0, 0); // start acceleration 0 this.personality = random(-0.1, 0.25); // random multiplier this.slow_down = createVector(-1.5,-1); //for when the bee comes close to y-borders this.img = bee_img; } update() { let randomForce = createVector(random(-5, 5), random(-5, 5));//even chnace randomForce.mult(this.personality); this.acceleration.add(randomForce); this.acceleration.limit(3); //no faster than 3 this.velocity.add(this.acceleration); this.position.add(this.velocity); this.velocity.mult(random(0.55,0.65)); //slow down as a way of showing air resistance if (this.position.x > width) this.position.x = 0; if (this.position.x < 0) this.position.x = width; if (this.position.y > 350) this.position.y -= 150; //if hits top/bottom borders if (this.position.y < 50) this.position.y += 150; if(this.acceleration.x > 2.6) //if acceleration too high { this.acceleration.add(this.slow_down); } }
I also had some problems when it came to uploading images from the URL so I learnt how to get it from GitHub making sure it would always work on any device.
What would I do differently next time?
I want to try and add some more insects and items in nature that attract bees like honey so that there is a chance the bee will buzz around a certain area.
>
My final code
https://editor.p5js.org/kk4827/full/1Mx0g_u9n