JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://threejs.org/build/three.min.js"></script>
<script src="http://cdn.jsdelivr.net/keyboardjs/0.4.2/keyboard.js"></script>
<p>Press 'a','s','d' or 'w' to move, and spacebar to shoot</p>
CSS
body {
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var geometry, material, mesh;
var distance, tank, tank2;
var bullet = {
rotationY:0,
toCreate: false,
}
KeyboardJS.on('space', function() {
bullet.toCreate = true;
});
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.z = 20;
camera.position.y = 4;
scene = new THREE.Scene();
tank = new THREE.Object3D();
material = new THREE.MeshBasicMaterial({
color: 0x005f00,
wireframe: false,
//opacity: 0.5
});
geometry = new THREE.CubeGeometry(6, 2, 10);
tankMesh1 = new THREE.Mesh(geometry, material);
tank.add(tankMesh1);
geometry = new THREE.CubeGeometry(3, 2, 5);
tankMesh2 = new THREE.Mesh(geometry, material);
tankMesh2.position.y = 2;
tank.add(tankMesh2);
geometry = new THREE.CubeGeometry(1, 1, 5);
tankMesh3 = new THREE.Mesh(geometry, material);
tankMesh3.position.y = 2;
tankMesh3.position.z = -5;
tank.add(tankMesh3);
tank.rotation.y = 3.141/3;
tank2 = new THREE.Object3D();
material = new THREE.MeshBasicMaterial({
color: 0x00005f,
wireframe: false,
//opacity: 0.5
});
geometry = new THREE.CubeGeometry(6, 2, 10);
tankMesh1 = new THREE.Mesh(geometry, material);
tank2.add(tankMesh1);
geometry = new THREE.CubeGeometry(3, 2, 5);
tankMesh2 = new THREE.Mesh(geometry, material);
tankMesh2.position.y = 2;
tank2.add(tankMesh2);
geometry = new THREE.CubeGeometry(1, 1, 5);
tankMesh3 = new THREE.Mesh(geometry, material);
tankMesh3.position.y = 2;
tankMesh3.position.z = -5;
tank2.add(tankMesh3);
tank2.rotation.y = -3.141/3;
tank2.position.z = -10;
tank2.position.x = 10;
scene.add(tank);
scene.add(tank2);
geometry = new THREE.SphereGeometry(1);
bulletMesh = new...