3d game

by Eduard Kulikov

HTML

<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

CSS

* {
  padding: 0;
  margin: 0;
  overflow: hidden;
}

JavaScript

//задаем начальные переменные
var canvas, context, player, bg,
    keyBoard = {}, globalX = 0, gameOver = false,
    startTime = new Date().getTime(), finishTime = 0;
var level = [
  [-1000, 100], [-500, 0], [210, 10],
  [250, -100], [300, -100], [350, 10],
  [1500, 40], [1600, -140], [1700, 40],
  [3700, 200], [4800, 80], [5500, 150],
  [5600, 90], [5700, -500], [6000, 40],
  [6800, 250], [7400, 150], [7550, 150],
  [7600, -160], [7700, -160], [7950, 60],
  [8700, 260], [10700, 100], [13000, 300],
];
var container, renderer, scene, camera, controls;

init();
animate();

function init() {
  // renderer
  renderer = new THREE.WebGLRenderer({ antialias: false });
  renderer.setSize(window.innerWidth, window.innerHeight);
  renderer.setClearColor(0xccccff);
  container = document.createElement('div');
  document.body.appendChild(container);
  container.appendChild(renderer.domElement);

  // scene
  scene = new THREE.Scene();

  // camera
  camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
  camera.position.set(0, 200, 800);
  camera.lookAt(scene.position);

  controls = new THREE.OrbitControls(camera, renderer.domElement);

  // light    
  var light = new THREE.PointLight(0xffffff);
  light.position.set(100, 250, 250);
  scene.add(light);
  
  THREE.ImageUtils.crossOrigin = '';

  bg = create2d(
  	'https://i.imgur.com/bV59MYh.jpg', 
    { width: 4096, repeatX: 4, repeatY: 1 }
  );
  
  /*for (var i = 0; i < level.length; i++) {
      var e = clone(level[i]);
      context.lineTo(e[0] + globalX, canvas.height - e[1]);
      context.moveTo(e[0] + globalX, canvas.height - e[1]);
  }*/
  
  player = new GameObject(create2d('https://i.imgur.com/2WXI9ZR.png'), 0, 0);
  
  player.width = player.image.material.map.image.width;
  player.image.position.z += 1;
  
  scene.add(bg);
  scene.add(player.image);

  window.addEventListener('resize', onWindowResize, false);
}

function create2d (image, params) {
	params = params ||...