Spaces:
Running
Running
Update game.js
Browse files
game.js
CHANGED
@@ -2504,6 +2504,43 @@ class Game {
|
|
2504 |
}
|
2505 |
}
|
2506 |
checkCollisions() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2507 |
// ํ๋ ์ด์ด ํํ vs ์ ๊ธฐ ์ถฉ๋
|
2508 |
for (let i = this.fighter.bullets.length - 1; i >= 0; i--) {
|
2509 |
const bullet = this.fighter.bullets[i];
|
|
|
2504 |
}
|
2505 |
}
|
2506 |
checkCollisions() {
|
2507 |
+
// ํ๋ ์ด์ด์ ์ ๊ธฐ์ ์ง์ ์ถฉ๋ ์ฒดํฌ (์ต์ฐ์ )
|
2508 |
+
for (let i = this.enemies.length - 1; i >= 0; i--) {
|
2509 |
+
const enemy = this.enemies[i];
|
2510 |
+
if (!enemy.mesh || !enemy.isLoaded) continue;
|
2511 |
+
|
2512 |
+
const distance = this.fighter.position.distanceTo(enemy.position);
|
2513 |
+
// ์ง์ ์ถฉ๋ ํ์ (100m ์ด๋ด)
|
2514 |
+
if (distance < 100) {
|
2515 |
+
console.log('Direct collision detected! Distance:', distance);
|
2516 |
+
|
2517 |
+
// ์์ชฝ ๋ชจ๋์ ์์น ์ ์ฅ
|
2518 |
+
const playerExplosionPos = this.fighter.position.clone();
|
2519 |
+
const enemyExplosionPos = enemy.position.clone();
|
2520 |
+
|
2521 |
+
// ์์ชฝ ๋ชจ๋ ์ฆ์ ํ๊ดด
|
2522 |
+
// 1. ์ ๊ธฐ ํ๊ดด
|
2523 |
+
this.createExplosionEffect(enemyExplosionPos);
|
2524 |
+
enemy.destroy();
|
2525 |
+
this.enemies.splice(i, 1);
|
2526 |
+
this.score += 100;
|
2527 |
+
|
2528 |
+
// 2. ํ๋ ์ด์ด ํ๊ดด
|
2529 |
+
this.createExplosionEffect(playerExplosionPos);
|
2530 |
+
this.fighter.health = 0;
|
2531 |
+
|
2532 |
+
// ์ถฉ๋์ ์ฌ์
|
2533 |
+
try {
|
2534 |
+
const collisionSound = new Audio('sounds/bang.ogg');
|
2535 |
+
collisionSound.volume = 1.0;
|
2536 |
+
collisionSound.play().catch(e => {});
|
2537 |
+
} catch (e) {}
|
2538 |
+
|
2539 |
+
this.endGame(false, "COLLISION WITH ENEMY");
|
2540 |
+
return; // ์ถฉ๋ ์ฒ๋ฆฌ ํ ์ฆ์ ์ข
๋ฃ
|
2541 |
+
}
|
2542 |
+
}
|
2543 |
+
|
2544 |
// ํ๋ ์ด์ด ํํ vs ์ ๊ธฐ ์ถฉ๋
|
2545 |
for (let i = this.fighter.bullets.length - 1; i >= 0; i--) {
|
2546 |
const bullet = this.fighter.bullets[i];
|