inflearn logo
강의

講義

知識共有

[JS] Phaser ゲーム制作 - ヴァンパイア・サバイバーズ風クローン

レベルに応じて攻撃を強化して追加しましょう3

[참고] 33강 캣닢어택 강화시 버그 관련

解決済みの質問

607

ACACIA

投稿した質問数 6

2


재현경로

현재결과

기대결과

재현빈도

테스트환경

 

 

 

 



상황

https://paullabworkspace.notion.site/3-23-d2df6742dd0141d6bcad23902b9c3c20

현재 강의 자료에서 공격 이벤트를 추가하기 위해 addAttackEvent()선언 시 아래와 같은 로직으로 캣닢을 m_attackEvents에 담고 있습니다.

이후 공격 범위를 증가시키는 로직은 아래와같이 정의되어 있습니다.


강의 자료 내에서는 레벨 4에 캣닢 공격의 스케일을 확장합니다.

 

현상

강의 자료 내에서는 레벨 4에 캣닢 공격의 스케일을 확장합니다.

이때 catnip이라는 class 구성에는 damage 값이 없어서 문제가 발생합니다. 공격 범위 증가 로직 작동 시 아래의 값이 undefined가 되게 됩니다.

scene.m_attackEvents.catnip.damage

 

캣닢에서의 데미지는 m_damage로 선언되어 있기 때문입니다. 이는 오버레이 등 여러 로직과 엮여있는 컨벤션이므로 건들기 난해합니다.

다른 공격 액션 또한 m_damage로 class가 구성되어 있으나, 다른 액션들은 이벤트 등록 시 damage가 있는 객체로 전달해서 큰 문제가 없습니다.

결국 damage를 undefined 로 받은 캣닢은 레벨 4 이후 범위를 확장시키면서 데미지가 사라지는 현상이 나타나게 됩니다. 아무리 맞춰도 죽지 않습니다. 뼈를 내어주고 살을 얻습니다.

JS인지라 damage가 undefined라고 에러는 나타나지 않지만 버그입니다.
첫 강의 소개당시 왕까지 어렵게 가신 가장 큰 이유가 아닐까 싶습니다.


해결

방법이야 많겠지만 일단 무식하게 damage를 포함한 객체로 전달했습니다.(겸사겸사 동일한 에러를 도출할 것으로 보이는 scale과 repeatGap도 포함합니다.)

/attackManager.js

이 상태에서는 기존 catnip 자체를 저장하던 때와 비교하여 destroy() 메서드를 사용 할 수 없게 되므로 사이드이펙트 해소를 위해 아래와 같이 수정했습니다.

객체에 destroy 함수만 넘길지 고민 많이 되더군요.

/attackManager.js

javascript phaser

回答 1

4

ahracho

안녕하세요 하준님. 먼저 버그로 인해 학습에 불편함을 드린 점 죄송합니다.
해당 버그 확인하였으며, 해결법 또한 제시해주셔서 감사드립니다.
빠른 시일 내로 적절한 수정법을 찾아 버그 수정 강의로 업데이트하고 알려드리도록 하겠습니다. 감사합니다!

0

hoho952791

해결법은아직일까요?

3

ahracho

안녕하세요 오일님, 해결법 제공이 늦어져 죄송합니다.
해당 파트 강의 자료 하단에 버그 수정법을 업데이트 하였습니다.
감사합니다.
https://paullabworkspace.notion.site/3-23-d2df6742dd0141d6bcad23902b9c3c20

3강 질문

0

18

1

74. 데이터 캐시 - 1 (이론) 강의 영상 누락

0

29

1

2강 nodejs 3단계 설명 질문

0

34

1

imagesLoaded에 관한 질문

0

19

2

useEffect와 lifecycle문의

0

27

2

physics.closest()는 중심점 기준인가요, 충돌 영역 기준인가요?

0

82

1

player, mob, background 이미지

0

64

2

이미지가 불러와지지 않습니다.

1

148

2

node 버전 문의드립니다.

1

180

2

노드.js 버전 질문

0

431

2

npm start 관련 에러 질문

0

352

2

catnip 이펙트 범위가 이상하네요

0

252

2

addAttackEvent 속도가 너무 빠르면 이런 오류가 발생하네요

0

289

2

hello world 강의 질문이요~

1

413

2

npm start 에러코드가 나와 문의드립니다.

1

520

2

npm start 에러나와 문의드립니다.

2

393

2

[참고] Uncaught Error: createEmitter removed. See ParticleEmitter docs for info : 에러에 대한 해결 방법 공유

2

414

2

Phaser3 질문드립니다!!

2

759

2

모바일 크롬 브라우저에서 동작을 안하는데 PC 에서만 가능한가요 ?

1

295

1

엌ㅋㅋ 클리어를 못하실거 같다고 말씀하시는게 왜케 재밋죠

2

343

0

보스스테이지에서 멈춥니다

1

433

1

배포 파이프라인

1

434

2

[참고] hello world 강의 중 에셋 사용시 baseURL 수정 필요합니다.

3

443

1

CHAPTER3.1 몹만들기

3

361

1