respondToCollision(response) {
		// the overlap vector
		const overlap = response.overlapV;

		// FIXME: Respond proportionally to object mass

		// Move out of the other object shape
		this.ancestor.pos.sub(overlap);

		// adjust velocity
		if (overlap.x !== 0) {
			this.vel.x = ~~(0.5 + this.vel.x - overlap.x) || 0;
			if (this.bounce > 0) {
				this.vel.x *= -this.bounce;
			}
		}
		if (overlap.y !== 0) {
			this.vel.y = ~~(0.5 + this.vel.y - overlap.y) || 0;
			if (this.bounce > 0) {
				this.vel.y *= -this.bounce;
			}

			if (!this.ignoreGravity) {
				// cancel the falling an jumping flags if necessary
				const dir = this.falling === true ? 1 : this.jumping === true ? -1 : 0;
				this.falling = overlap.y >= dir;
				this.jumping = overlap.y <= -dir;
			}
		}
	}
the built-in function to solve the collision response
@param {ResponseObject} response - the collision response object
@see {@link ResponseObject}