physics.closest()는 중심점 기준인가요, 충돌 영역 기준인가요?
this.physics.closest()가 Mob과 플레이어의 거리를 계산할 때
단순히 중심 좌표 기준으로 계산되는 건지, 아니면 물리엔진에서 사용하는 충돌 영역 기준으로 계산되는 건지 헷갈립니다.
回答 1
0
안녕하세요.this.physics.closest()는 단순히 중심 좌료 기준으로 계산됩니다.
Phaser에서 closest 함수가 실제로 어떻게 구현되어 있는지 링크에서 확인해보시면, 다음과 같이 source에 물리엔진 body가 있다면 body의 center(중심점)을 사용하고 있는 것을 확인하실 수 있습니다!
따라서 몹의 히트박스가 크기가 다양하다면 예상대로 동작하지 않을 확률이 크고, 그런 경우에는 edge to edge로 거리를 구하는 커스텀 로직을 작성하셔야 합니다.
closest: function (source, targets)
{
if (!targets)
{
targets = this.world.bodies.entries;
}
var min = Number.MAX_VALUE;
var closest = null;
var x = source.x;
var y = source.y;
var len = targets.length;
for (var i = 0; i < len; i++)
{
var target = targets[i];
var body = target.body || target;
if (source === target || source === body || source === body.gameObject || source === body.center)
{
continue;
}
var distance = DistanceSquared(x, y, body.center.x, body.center.y); // center 사용
if (distance < min)
{
closest = target;
min = distance;
}
}
return closest;
},
3강 질문
0
18
1
74. 데이터 캐시 - 1 (이론) 강의 영상 누락
0
29
1
2강 nodejs 3단계 설명 질문
0
33
1
imagesLoaded에 관한 질문
0
19
2
useEffect와 lifecycle문의
0
26
2
player, mob, background 이미지
0
63
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
[참고] 33강 캣닢어택 강화시 버그 관련
2
607
1
배포 파이프라인
1
434
2
[참고] hello world 강의 중 에셋 사용시 baseURL 수정 필요합니다.
3
443
1
CHAPTER3.1 몹만들기
3
361
1

