JavaScript로 2D 게임을 만들고 있습니다. 이를 위해서는 내 선수 들간의 충돌을 "완벽하게"점검 할 수 있어야합니다 (게임에는 두 명의 플레이어가 있습니다. 사진을 열어주세요)와 벽! 내 말은, 실제로 작동하는 기능이 있지만, 벽에 뛰어 들게되면 벽을 통과하고 다른 지역에 도달하거나 캔버스를 떠날 때까지 계속 움직입니다! 또한, 그들이 쓰러지고 벽과 충돌하게 만들면, 그곳에서 멈추게됩니다. 정말 도움이 필요합니다. 그것은 대학 프로젝트이고 나는 정말로 빨리 핀란드 화해야합니다!플레이어와 벽의 픽셀 완전 충돌 감지를 수행하는 방법 (JavaScript 게임)
내가 가진 충돌 감지 기능은 여기에 있습니다 :
function blockRectangle (objA, objB) {
var distX = (objA.x + objA.width/2) - (objB.x + objB.width/2);
var distY = (objA.y + objA.height/2) - (objB.y + objB.height/2);
var sumWidth = (objA.width + objB.width)/2;
var sumHeight = (objA.height + objB.height)/2;
if (Math.abs(distX) < sumWidth && Math.abs(distY) < sumHeight) {
var overlapX = sumWidth - Math.abs(distX);
var overlapY = sumHeight - Math.abs(distY);
if (overlapX > overlapY) {
objA.y = distY > 0 ? objA.y + overlapY : objA.y - overlapY;
}
else {
objA.x = distX > 0 ? objA.x + overlapX : objA.x - overlapX;
}
}
}
for (var i in walls) {
var wall = walls[i];
if ((player.x < (wall.x + wall.width)) && ((player.x + player.width) > wall.x) && (player.y < (wall.y + wall.height)) && ((player.height + player.y) > wall.y)) {
player.falling = false;
}
blockRectangle(player, wall);
}
제발 도와주세요! 다들 감사 해요!
충돌 탐지를 올바르게 수행하는 방법에 대한 전체 서적이 있습니다. 읽어 보셨습니까? –
위의 내용에 대한 간단한 설명을 제공하십시오. 너무 비싸지 않습니다. –
질문 : 바운딩 박스를 사용하고 정확한 픽셀에 가깝게 가야합니다. 질문 : 벽 타일 기반 (벽의 직사각형 조각은 실제로 여러 사각형 조각으로 구성되어 있습니까)입니까?그렇다면 플레이어를 가장 짧은 방향으로 선회하면 플레이어가 다른 벽 세그먼트로 분리됩니다. –