awacke1 commited on
Commit
d244154
1 Parent(s): 5e53152

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +17 -8
index.html CHANGED
@@ -101,32 +101,41 @@
101
  updateDisplays();
102
  }
103
 
104
- function fireLaser(source, color, target) {
105
  const sourcePosition = source.object3D.position;
106
  const targetPosition = target.object3D.position;
 
 
 
 
 
107
  const laser = createEntity('laser', {
108
  class: 'laser',
109
- geometry: {primitive: 'cylinder', radius: 0.05, height: 100},
110
  material: {color: color, opacity: 0.7},
111
- position: sourcePosition
112
  });
113
 
114
- const direction = new THREE.Vector3().subVectors(targetPosition, sourcePosition).normalize();
115
  laser.object3D.lookAt(targetPosition);
116
 
 
 
 
 
 
117
  laser.setAttribute('animation', {
118
  property: 'scale',
119
  to: '1 0.01 1',
120
- dur: 1000,
121
  easing: 'linear'
122
  });
123
 
124
  setTimeout(() => {
125
  scene.removeChild(laser);
126
- }, 1000);
127
 
128
  // Check for collisions
129
- if (source === player) {
130
  const targets = document.querySelectorAll('.enemy, .spawner');
131
  targets.forEach(target => {
132
  const targetPos = target.object3D.position;
@@ -203,7 +212,7 @@
203
  }
204
 
205
  const dummyTarget = { object3D: { position: targetPosition } };
206
- fireLaser(camera, '#00FF00', dummyTarget);
207
  }
208
 
209
  function updateGame() {
 
101
  updateDisplays();
102
  }
103
 
104
+ function fireLaser(source, color, target, isPlayer = false) {
105
  const sourcePosition = source.object3D.position;
106
  const targetPosition = target.object3D.position;
107
+ const direction = new THREE.Vector3().subVectors(targetPosition, sourcePosition).normalize();
108
+
109
+ const laserLength = isPlayer ? 100 : 10; // Player lasers are longer
110
+ const midPoint = new THREE.Vector3().addVectors(sourcePosition, direction.multiplyScalar(laserLength / 2));
111
+
112
  const laser = createEntity('laser', {
113
  class: 'laser',
114
+ geometry: {primitive: 'cylinder', radius: 0.05, height: laserLength},
115
  material: {color: color, opacity: 0.7},
116
+ position: midPoint
117
  });
118
 
 
119
  laser.object3D.lookAt(targetPosition);
120
 
121
+ // Rotate the laser to be horizontal for player, keep vertical for enemies
122
+ if (isPlayer) {
123
+ laser.object3D.rotateZ(Math.PI / 2);
124
+ }
125
+
126
  laser.setAttribute('animation', {
127
  property: 'scale',
128
  to: '1 0.01 1',
129
+ dur: isPlayer ? 1000 : 2000, // Enemy lasers are slower
130
  easing: 'linear'
131
  });
132
 
133
  setTimeout(() => {
134
  scene.removeChild(laser);
135
+ }, isPlayer ? 1000 : 2000);
136
 
137
  // Check for collisions
138
+ if (isPlayer) {
139
  const targets = document.querySelectorAll('.enemy, .spawner');
140
  targets.forEach(target => {
141
  const targetPos = target.object3D.position;
 
212
  }
213
 
214
  const dummyTarget = { object3D: { position: targetPosition } };
215
+ fireLaser(camera, '#00FF00', dummyTarget, true);
216
  }
217
 
218
  function updateGame() {