HomeWork8
by omgazero
HTML
<div id="info">
homework8
W/A/S/D/Q/E/R/F/SPACE
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
</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 frame, scene, light, camera, renderer, controls, stats;
var keyboard = new KeyboardState();
var bullets = [], bulletNum = 0;
class bullet{
constructor(m, pos, v){
this.ball = new THREE.Mesh(new THREE.SphereGeometry (3,20,20), new THREE.MeshNormalMaterial()) ;
this.m = m;
this.force = new THREE.Vector3 (0, -9.8, 0).multiplyScalar (this.m);
this.clock = new THREE.Clock();
this.clock.start();
this.pos = pos;
this.ball.position.copy (this.pos);
this.vel = v.clone().multiplyScalar( 5 ).applyAxisAngle (new THREE.Vector3(0,0,0), Math.PI/4);
}
update() {
this.vel.add ( this.force.clone().divideScalar(this.m).multiplyScalar (this.clock.getElapsedTime()*0.1) );
this.pos.add ( this.vel.clone().multiplyScalar (this.clock.getElapsedTime()*0.1) );
this.ball.position.copy (this.pos);
}
}
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.z = 200;
controls = new THREE.OrbitControls(camera, renderer.domElement);
stats = new Stats();
stats.showPanel(0);
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild(stats.domElement);
light = new THREE.PointLight(0xffffff);
light.position.set(100, 300, 200);
scene.add(light);
var gridXZ = new THREE.GridHelper(2000, 200, 'red', 'grey');
scene.add(gridXZ);
frame = createTank();
frame[0].position.y = 5;
scene.add(frame[0]);
}
function animate() {
stats.begin();
controls.update();
keyboard.update();
if(keyboard.pressed('W')){
frame[0].translateX(0.5) ;
}
if(keyboard.pressed('S')){
...