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;
},
백오피스를 개발할 때 아키텍처 구성에 대한 질문
0
25
2
ai가 만든 강의인가요?
0
47
1
VSCode 설정 문의
0
33
2
PPT 코드 관련 질문
0
31
2
state 객체로 묶기
0
28
1
player, mob, background 이미지
0
67
2
이미지가 불러와지지 않습니다.
1
153
2
node 버전 문의드립니다.
1
184
2
노드.js 버전 질문
0
433
2
npm start 관련 에러 질문
0
356
2
catnip 이펙트 범위가 이상하네요
0
253
2
addAttackEvent 속도가 너무 빠르면 이런 오류가 발생하네요
0
290
2
hello world 강의 질문이요~
1
415
2
npm start 에러코드가 나와 문의드립니다.
1
522
2
npm start 에러나와 문의드립니다.
2
396
2
[참고] Uncaught Error: createEmitter removed. See ParticleEmitter docs for info : 에러에 대한 해결 방법 공유
2
416
2
Phaser3 질문드립니다!!
2
762
2
모바일 크롬 브라우저에서 동작을 안하는데 PC 에서만 가능한가요 ?
1
295
1
엌ㅋㅋ 클리어를 못하실거 같다고 말씀하시는게 왜케 재밋죠
2
345
0
보스스테이지에서 멈춥니다
1
434
1
[참고] 33강 캣닢어택 강화시 버그 관련
2
612
1
배포 파이프라인
1
438
2
[참고] hello world 강의 중 에셋 사용시 baseURL 수정 필요합니다.
3
444
1
CHAPTER3.1 몹만들기
3
362
1





