Merge pull request #58 from Protospace/optimize-footer

Optimize footer
This commit is contained in:
Tanner Collin 2021-08-14 18:23:10 -06:00 committed by GitHub
commit 35d2dd22f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 13 deletions

View File

@ -9,25 +9,32 @@ const geometry = new THREE.BoxGeometry(
LASER_SIZE
);
const badLaserMat = new THREE.MeshStandardMaterial(0xffffff, {
flatShading: true,
color: new THREE.Color(`hsl(0,100%,70%)`),
});
const goodLaserMat = new THREE.MeshStandardMaterial(0xffffff, {
flatShading: true,
color: new THREE.Color(`hsl(180,100%,70%)`),
});
export class Laser {
constructor(ship) {
constructor(ship, count) {
const position = new THREE.Vector3();
this.direction = ship.direction;
this.kill = false;
this.life = 10;
this.stepX = (Math.random() - 0.5) * BULLET_SPREAD;
this.stepY = (Math.random() - 0.5) * BULLET_SPREAD;
ship.mesh.getWorldPosition(position);
const material = new THREE.MeshStandardMaterial(0xffffff, {
flatShading: true,
});
this.mesh = new THREE.Mesh(geometry, material);
this.mesh.material.color.set(
new THREE.Color(`hsl(${ship.direction > 0 ? 0 : 180},100%,70%)`)
this.mesh = new THREE.Mesh(
geometry,
ship.direction > 0 ? goodLaserMat : badLaserMat,
count
);
this.mesh.position.set(position.x, position.y, position.z);
@ -37,9 +44,8 @@ export class Laser {
this.mesh.position.x += this.stepX;
this.mesh.position.y += this.stepY;
this.mesh.position.z += 0.5 * this.direction;
this.life -= deltaTime;
if (Math.abs(this.mesh.position.z > 475 / 2)) {
this.kill = true;
}
if (this.life < 0) this.kill = true;
}
}

View File

@ -50,7 +50,7 @@ export const scene = ({ ref }) => {
ref.current.addEventListener('mousemove', (e) => {
const x = e.clientX;
const ratio = x / ref.current.clientWidth;
camera.position.set(5, 2, ratio*4 - 2);
camera.position.set(5, 2, ratio * 4 - 2);
camera.lookAt(new THREE.Vector3(0, 0, 0));
});
@ -72,6 +72,7 @@ export const scene = ({ ref }) => {
if (ship.firing) {
const bolt = new Laser(ship);
bolts.push(bolt);
scene.add(bolt.mesh);
ship.firing = false;