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 ||...