Spaces:
Running
Running
cutechicken
commited on
Update game.js
Browse files
game.js
CHANGED
@@ -394,7 +394,7 @@ class Game {
|
|
394 |
}
|
395 |
|
396 |
setupEventListeners() {
|
397 |
-
// 키보드
|
398 |
document.addEventListener('keydown', (event) => {
|
399 |
if (this.isLoading) return;
|
400 |
switch(event.code) {
|
@@ -402,7 +402,6 @@ class Game {
|
|
402 |
case 'KeyS': this.keys.backward = true; break;
|
403 |
case 'KeyA': this.keys.left = true; break;
|
404 |
case 'KeyD': this.keys.right = true; break;
|
405 |
-
case 'Escape': break; // controls 관련 코드 제거
|
406 |
}
|
407 |
});
|
408 |
|
@@ -416,34 +415,43 @@ class Game {
|
|
416 |
}
|
417 |
});
|
418 |
|
419 |
-
// 마우스 움직임
|
420 |
document.addEventListener('mousemove', (event) => {
|
421 |
-
if (this.isLoading) return;
|
422 |
-
|
423 |
-
// 화면 중앙 기준으로 마우스 위치 계산
|
424 |
-
const centerX = window.innerWidth / 2;
|
425 |
-
const centerY = window.innerHeight / 2;
|
426 |
|
427 |
-
|
428 |
-
this.mouse.
|
|
|
429 |
});
|
430 |
|
431 |
-
//
|
432 |
document.addEventListener('click', () => {
|
433 |
-
|
434 |
-
|
435 |
-
|
|
|
|
|
|
|
|
|
436 |
}
|
437 |
});
|
438 |
|
439 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
window.addEventListener('resize', () => {
|
441 |
this.camera.aspect = window.innerWidth / window.innerHeight;
|
442 |
this.camera.updateProjectionMatrix();
|
443 |
this.renderer.setSize(window.innerWidth, window.innerHeight);
|
444 |
});
|
445 |
}
|
446 |
-
|
447 |
handleMovement() {
|
448 |
if (!this.tank.isLoaded) return;
|
449 |
|
|
|
394 |
}
|
395 |
|
396 |
setupEventListeners() {
|
397 |
+
// 키보드 이벤트는 그대로 유지
|
398 |
document.addEventListener('keydown', (event) => {
|
399 |
if (this.isLoading) return;
|
400 |
switch(event.code) {
|
|
|
402 |
case 'KeyS': this.keys.backward = true; break;
|
403 |
case 'KeyA': this.keys.left = true; break;
|
404 |
case 'KeyD': this.keys.right = true; break;
|
|
|
405 |
}
|
406 |
});
|
407 |
|
|
|
415 |
}
|
416 |
});
|
417 |
|
418 |
+
// 마우스 움직임 이벤트를 수정
|
419 |
document.addEventListener('mousemove', (event) => {
|
420 |
+
if (this.isLoading || !document.pointerLockElement) return;
|
|
|
|
|
|
|
|
|
421 |
|
422 |
+
// movementX/Y를 사용하여 마우스 회전 계산
|
423 |
+
this.mouse.x += event.movementX * 0.002;
|
424 |
+
this.mouse.y += event.movementY * 0.002;
|
425 |
});
|
426 |
|
427 |
+
// 클릭 이벤트 수정 - 포인터 락과 발사를 함께 처리
|
428 |
document.addEventListener('click', () => {
|
429 |
+
if (!document.pointerLockElement) {
|
430 |
+
document.body.requestPointerLock();
|
431 |
+
} else {
|
432 |
+
const bullet = this.tank.shoot(this.scene);
|
433 |
+
if (bullet) {
|
434 |
+
// 총알 발사 효과음이나 시각효과 추가 가능
|
435 |
+
}
|
436 |
}
|
437 |
});
|
438 |
|
439 |
+
// 포인터 락 상태 변경 이벤트 추가
|
440 |
+
document.addEventListener('pointerlockchange', () => {
|
441 |
+
if (!document.pointerLockElement) {
|
442 |
+
// 포인터 락이 해제되었을 때의 처리
|
443 |
+
this.mouse.x = 0;
|
444 |
+
this.mouse.y = 0;
|
445 |
+
}
|
446 |
+
});
|
447 |
+
|
448 |
+
// 창 크기 변경 이벤트는 그대로 유지
|
449 |
window.addEventListener('resize', () => {
|
450 |
this.camera.aspect = window.innerWidth / window.innerHeight;
|
451 |
this.camera.updateProjectionMatrix();
|
452 |
this.renderer.setSize(window.innerWidth, window.innerHeight);
|
453 |
});
|
454 |
}
|
|
|
455 |
handleMovement() {
|
456 |
if (!this.tank.isLoaded) return;
|
457 |
|