game-sound

by Leoooo

HTML

<div id="info">hw2<br>
	<button id="play" style="width:20%">Play</button> 
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js">
</script>
<script src="https://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

<audio id="collisionsound" style="display:none">
<source src="sounds/collision3.wav" type='audio/wav'>
</audio>
<audio id="soundtrack" autoplay loop style="display:none">
<source src="sounds/KennyG.mp3" type='audio/mp3'>
</audio>

CSS

#info {
  position: absolute;
  top: 0px;
  width: 100%;
  padding: 10px;
  text-align: center;
  color: #000000
}

body {
  overflow: hidden;
}

JavaScript

class Ball {
	constructor (mesh, rad = 2, color) {
  
  	this.pos = new THREE.Vector3()
    this.vel = new THREE.Vector3()
    this.force = new THREE.Vector3()
    //this.h=Math.random();
   // this.l=Math.random();
    this.mesh = mesh;
    this.radius = rad;
    this.light = new THREE.PointLight (color, 1, 60);
    scene.add (this.light)
    scene.add (this.mesh)   // add to scene when particle is created
		this.mesh.material.color.copy ( color.clone() );
  }
  update (dt) {
		this.vel.add (this.force.clone().multiplyScalar (dt))
  	this.pos.add (this.vel.clone().multiplyScalar(dt))
    
		this.collidingPlanes (planes,SPlanes)
    this.scollidingPlanes();
    //this.checkCollision(balls) ;
    // simple collision
  /*
  if (this.pos.z > 100 - this.radius) {
    	const CR = 0.9
    	this.pos.z = 100 - this.radius
      this.vel.z = - CR * this.vel.z;
    }
  */  
		this.mesh.position.copy (this.pos)
    this.light.position.copy (this.pos)
    this.light.position.y += 20
  }

	collidingPlanes (planes,SPlanes) 
  {
    const EPS = 1e-3
    const CR = 0.96
  	for (let i = 0; i < planes.length; i++) 
    {
			let plane = planes[i]
			let point = this.pos.clone().sub (plane.ptOnPl)
      if ( point.dot(plane.normal) < EPS + this.radius && point.projectOnPlane (plane.normal).length() < plane.length/2) 
  {
				// position correction
      	this.pos.copy (plane.ptOnPl.clone().add (point.projectOnPlane(plane.normal)) )
        this.pos.add (plane.normal.clone().multiplyScalar(this.radius))
      	// velocity update
      	this.vel.sub (plane.normal.clone().multiplyScalar ((1+CR)*this.vel.dot(plane.normal)))
      	//return;  // assume particle collides with AT MOST one plane
        collisionSound.play();
      }
      }
        	for (let i = 0; i < SPlanes.length; i++) 
          {
			let plane = SPlanes[i]
			let point = this.pos.clone().sub (plane.ptOnPl)
      if ( point.dot(plane.normal) < EPS + this.radius && point.projectOnPlane (plane.normal).length() <...