cat bounce composite
perf enhance
by Nick Hulea
HTML
<script src="https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/pathseg.js"></script>
<script src="https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/decomp.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.12.0/matter.min.js"></script>
<button id="makeItRainbow" class="btn">Make It Rainbow</button>
<audio id="audio2">
<source src="https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/sound_2.ogg" type="audio/ogg">
<source src="http://aa8f47fcc01b7584f779-b57f388ffba74a9d5600392ce75da4b1.r13.cf2.rackcdn.com/cats/sound_2.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
SCSS
body {
overflow: hidden;
margin: 0px;
width: 100vw;
height: 100vh;
background: -webkit-gradient(linear, left top, left bottom, from(#ef31f9), to(rgba(125, 185, 232, 0)));
background: linear-gradient(180deg, #ef31f9, rgba(125, 185, 232, 0));
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ef31f9", endColorstr="#007db9e8", GradientType=0)
}
body,
html {
height: 100vh;
width: 100vw;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
margin: 0;
overflow: hidden
}
.btn {
position: fixed;
top: 0;
margin: 1rem;
-webkit-appearance: none;
border: none;
outline: none;
padding: 10px 20px;
cursor: pointer;
background: none;
color: #fff;
font-weight: 900;
text-transform: uppercase;
font-size: 1.5rem;
}
#makeItRain {
right: 0;
}
#makeItRainbow {
left: 0;
}
JavaScript
console.log(Matter);
var cats = [
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_1.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_2.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_3.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_4.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_5.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_6.png"
];
var rainbow_cats = [
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_1_red.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_2_yellow.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_3_purple.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_4_green.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_5_blue.png",
"https://3681a2d2784956323369-b57f388ffba74a9d5600392ce75da4b1.ssl.cf2.rackcdn.com/cats/cat_6_orange.png"
];
var Engine = Matter.Engine;
var Render = Matter.Render;
var World = Matter.World;
var Bodies = Matter.Bodies;
var Events = Matter.Events;
var Body = Matter.Body;
var Svg = Matter.Svg;
var Vertices = Matter.Vertices;
var Composites = Matter.Composites;
var MouseConstraint = Matter.MouseConstraint;
var Mouse = Matter.Mouse;
var engine = Engine.create();
var _restitution = 1.0001;
var _friction = 1;
var _frictionAir = 0.0001;
var _frictionStatic = 15;
var _density = 0.01;
var mirainbow = $("#makeItRainbow");
var defaultCategory = 0x0001;
var redCategory = 0x0002;
var greenCategory = 0x0004;
var blueCategory = 0x0008;
var cArr = [];
var rainbow = false;
var width =...