my simple game created with P5.js consists in a ball that falls affected by a gravity force and bounces on the ground. I would like to add a "compression" animation to the ball when it touches the ground so that it should look more realistic.
How can I do that without making it look weird?
the code is this:
function Ball() {
this.diameter = 50;
this.v_speed = 0;
this.gravity = 0.2;
this.starty = height / 2 - 100;
this.endy = height - this.diameter / 2;
this.ypos = this.starty;
this.xpos = width / 2;
this.update = function() {
this.v_speed = this.v_speed + this.gravity;
this.ypos = this.ypos + this.v_speed;
if (this.ypos >= this.endy) {
this.ypos = this.endy;
this.v_speed *= -1.0; // change direction
this.v_speed = this.v_speed * 0.9;
if (Math.abs(this.v_speed) < 0.5) {
this.ypos = this.starty;
}
}
}
this.show = function() {
ellipse(this.xpos, this.ypos, this.diameter);
fill(255);
}
}
var ball;
function setup() {
createCanvas(600, 600);
ball = new Ball();
}
function draw() {
background(0);
ball.update();
ball.show();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.js"></script>