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;
},
mission12-01 guide.md파일 누락
0
6
1
자료집 관련
0
12
2
13. (App 2) 기본기 훈련 에서
0
21
1
챌린지 시작일 문의
0
26
0
2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중
0
23
1
player, mob, background 이미지
0
138
2
이미지가 불러와지지 않습니다.
1
187
2
node 버전 문의드립니다.
1
221
2
노드.js 버전 질문
0
482
2
npm start 관련 에러 질문
0
421
2
catnip 이펙트 범위가 이상하네요
0
289
2
addAttackEvent 속도가 너무 빠르면 이런 오류가 발생하네요
0
324
2
hello world 강의 질문이요~
1
456
2
npm start 에러코드가 나와 문의드립니다.
1
557
2
npm start 에러나와 문의드립니다.
2
425
2
[참고] Uncaught Error: createEmitter removed. See ParticleEmitter docs for info : 에러에 대한 해결 방법 공유
2
451
2
Phaser3 질문드립니다!!
2
801
2
모바일 크롬 브라우저에서 동작을 안하는데 PC 에서만 가능한가요 ?
1
318
1
엌ㅋㅋ 클리어를 못하실거 같다고 말씀하시는게 왜케 재밋죠
2
358
0
보스스테이지에서 멈춥니다
1
465
1
[참고] 33강 캣닢어택 강화시 버그 관련
2
666
1
배포 파이프라인
1
481
2
[참고] hello world 강의 중 에셋 사용시 baseURL 수정 필요합니다.
3
479
1
CHAPTER3.1 몹만들기
3
386
1

