hw2 helper

sprite animation

by oKLo

HTML

<div id="info">Sprite Animation
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>

CSS

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

body {
  overflow: hidden;
}

JavaScript

var camera, scene, renderer;
var stArray = [];
var baseS = 0;
var counter = 0;

init();
animate();

function setUpStArray() {
  for (var i = 0; i < 3; i++) {
    var row = [];
    for (var j = 0; j < 6; j++)
      row.push(new THREE.Vector2(j * 0.2, 1 - 0.5 * i));
    stArray.push(row);
  }
}

function init() {
  renderer = new THREE.WebGLRenderer({
    antialias: true
  });
  renderer.setClearColor(0x888888);

  renderer.setSize(window.innerWidth, window.innerHeight);
  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);
  //////////////////////////////////////////////////////////////////////////////

  setUpStArray();

  // loading texture from imgur.com
  THREE.ImageUtils.crossOrigin = '';
  texture = THREE.ImageUtils.loadTexture('https://i.imgur.com/a1TiPHX.png');
  texture.wrapS = THREE.RepeatWrapping;

  // setting up texMat
  var texMat = new THREE.MeshBasicMaterial({
    map: texture,
    transparent: true,  // cutout texture: set transparent: true
    side: THREE.DoubleSide
  });

  var geometry = new THREE.Geometry();
  geometry.vertices.push(
    new THREE.Vector3(-15, -15, 0),
    new THREE.Vector3(15, -15, 0),
    new THREE.Vector3(15, 15, 0),
    new THREE.Vector3(-15, 15, 0)
  );

  var face;
  face = new THREE.Face3(0, 1, 2);
  geometry.faces.push(face);
  face = new THREE.Face3(0, 2, 3);
  geometry.faces.push(face);

  geometry.faceVertexUvs[0].push([stArray[1][0], stArray[1][1], stArray[0][1]]);
  geometry.faceVertexUvs[0].push([stArray[1][0], stArray[0][1], stArray[0][0]]);

  geometry.computeBoundingSphere();
  geometry.computeFaceNormals();
  geometry.computeVertexNormals();

  sprite = new THREE.Mesh(geometry, texMat);
  scene.add(sprite);

	// for character moving left
	//sprite.rotation.y = Math.PI;
}

function onWindowResize() {
 ...