hw2 helper
side scrolling
by Rebecca Chen
HTML
<div id="info">Side-Scrolling Control
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="http://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<div id="dataString"></div>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
#dataString {
position: absolute;
bottom: 10%;
width: 100%;
padding: 10px;
text-align: center;
color: #ff0000
}
body {
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var ballFrame;
var keyboard = new KeyboardState();
var ballX = -20;
var ball;
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
//renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.OrthographicCamera(-50, 50, 50, -50, -10, 100);
camera.position.z = 10;
scene.add(camera);
window.addEventListener('resize', onWindowResize, false);
////////////////////////////////////////////////////////////////////////////////////////////
var back = new THREE.Mesh(new THREE.PlaneGeometry(100, 100),
new THREE.MeshBasicMaterial({color:0xffffff*Math.random()}));
for (var i = 0;i < 4;i++) {
var backi = back.clone();
scene.add (backi);
backi.position.x += 100*i;
backi.material = new THREE.MeshBasicMaterial({color:0xffffff*Math.random()});
}
var floor = new THREE.Mesh (new THREE.PlaneGeometry(400,50), new THREE.MeshBasicMaterial());
scene.add (floor);
floor.position.y = -35;
floor.position.x = 150;
ball = new THREE.Mesh (new THREE.CircleGeometry (10,20), new THREE.MeshBasicMaterial({color:0x999900}));
scene.add (ball);
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
function myClamp (x, xlo, xhi) {
if (x < xlo) return xlo;
if (x > xhi) return xhi;
return x;
}
function animate() {
keyboard.update();
if (keyboard.down("right")) {
ballX += 8;
} else if (keyboard.down("left")) {
ballX -= 8;
}
ballX = myClamp (ballX, -50, 350);
ball.position.x = ballX;
camera.position.x = myClamp (ballX, 0, 300);
requestAnimationFrame(animate);
render();
$("#dataString").text ("camera.x = " + camera.position.x);
}
function render() {
renderer.render(scene,...