Delete bolts that are far away

master
Tanner Collin 3 years ago
parent bd7b0ac62f
commit 8874850b2f
  1. 5
      webclient/src/spaceport/Laser.js
  2. 12
      webclient/src/spaceport/Ship.js
  3. 5
      webclient/src/spaceport/scene.js

@ -6,6 +6,7 @@ export class Laser {
constructor(ship) {
const position = new THREE.Vector3();
this.direction = ship.direction;
this.kill = false;
ship.mesh.getWorldPosition(position)
@ -28,5 +29,9 @@ export class Laser {
update({ deltaTime }) {
this.mesh.position.z += 0.5 * this.direction;
if (Math.abs(this.mesh.position.z > 475/2)) {
this.kill = true;
}
}
}

@ -52,10 +52,11 @@ export class Ship {
this.life -= deltaTime;
if (!this.flyIn) {
const xs = Math.sin(this.life*0.5 + this.x);
this.mesh.position.y = this.y + Math.sin(this.life + this.y) * 0.08;
this.mesh.position.x = this.x + xs * 0.08;
this.mesh.rotation.y = xs*0.25;
const xs = Math.sin(this.life * 0.5 + this.x);
const yrot = Math.sin(this.life + this.x + (3.14/2 * this.direction));
this.mesh.position.y = this.y + Math.sin(this.life + this.y) * 0.2;
this.mesh.position.x = this.x + xs * 0.15;
this.mesh.rotation.x = yrot * 0.15;
this.mesh.position.z += 0.01 * this.direction;
this.nextShot -= deltaTime;
if (this.nextShot <= 0) {
@ -69,6 +70,9 @@ export class Ship {
this.mesh.position.z += a * 2 * this.direction;
this.mesh.scale.z = a * 4;
this.firing = false;
this.mesh.rotation.y = 0;
this.mesh.rotation.x = 0;
}
if (Math.abs(this.mesh.position.z > 475/2)) {

@ -82,9 +82,14 @@ export const scene = ({ ref }) => {
for (const bolt of bolts) {
bolt.update({ deltaTime });
if (bolt.kill) {
scene.remove(bolt.mesh);
}
}
ships = ships.filter((s) => !s.kill);
bolts = bolts.filter((s) => !s.kill);
requestAnimationFrame(animate);
renderer.render(scene, camera);

Loading…
Cancel
Save