cutechicken commited on
Commit
b96edd4
·
verified ·
1 Parent(s): 612e991

Update game.js

Browse files
Files changed (1) hide show
  1. game.js +24 -16
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
- this.mouse.x = (event.clientX - centerX) / centerX;
428
- this.mouse.y = (event.clientY - centerY) / centerY;
 
429
  });
430
 
431
- // 발사 이벤트 (포인터 관련 코드 제거)
432
  document.addEventListener('click', () => {
433
- const bullet = this.tank.shoot(this.scene);
434
- if (bullet) {
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