Update index.html
Browse files- 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:
|
110 |
material: {color: color, opacity: 0.7},
|
111 |
-
position:
|
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 (
|
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() {
|