나는 대학 과제로 game에서 일하고 있습니다. 그 아이디어는 당신이 을 방어하는 선 (그림을 그리기 위해 &을 놓아 라)을 그리는 것으로 들어오는 소행성 (선)의 중심 원을 방어하는 것입니다. 소행성이 줄을 때리면 둘 다 소행성을 파괴해야합니다.JavaScript의 캔버스에서 충돌 감지
현재 문제는 충돌이 감지되지 않는다는 것입니다.
두 행의 객체 배열을 가지고 있습니다. & 소행성입니다. 라인은 간단히 시작 & 끝 x & y로 구성되어 있으며 소행성은 임의의 속도 & 임의의 각도 (수신 각도)로 구성됩니다. 컨텍스트가 회전되고 소행성이 그려지고 & 다음 줄로 재설정됩니다. "나는 천국 -
내가 색상이 빨간색 인 경우 (기본적으로, 자신의 속도) &,이 소행성을 파괴 할 것이다 그러나 많은 픽셀 라인이 그 반복에서 진행됩니다 소행성의 앞에 getImageData & 체크를 사용, 충돌을 감지하려면 그 선을 파괴하는 것에는 t 라운드가있다, 내가 그것에 올 때 그 장애물을 감당할 것이다 (제안은 환영 받는다).function asteroids_draw() {
for (var i = 0; i < asteroids.length; i++) {
// Drawing setup
context.save();
context.translate(width/2, height/2);
context.rotate(asteroids[i].angle);
// Detecting close asteroids
if ((asteroids[i].distance - asteroids[i].speed) < planet.size) {
asteroids.splice(i, 1);
game_life_lost();
context.restore();
return;
} else if ((asteroids[i].distance - asteroids[i].speed) < 150){
asteroids[i].colour = '#FF0000';
}
// Scanning ahead for lines
for (var j = 0; j < asteroids[i].speed; j++) {
if (context.getImageData(asteroids[i].distance - j, 0, 1, 1).data[0] == 255) {
asteroids.splice(i, 1);
context.restore();
return;
}
}
// Drawing asteroid
context.beginPath();
context.moveTo(asteroids[i].distance -= asteroids[i].speed, 0);
context.lineTo(trig, 0);
context.strokeStyle = asteroids[i].colour;
context.stroke();
context.closePath();
context.restore();
}
}
문제는, 소행성은 결코 나는 내 인생이 왜 참조, 또는 그 일을 다른 간단한 방법을 볼 수의 라인 &과 충돌하지 않습니다. 어떤 충고라도 미리 감사드립니다.
귀하의 문제는 이해하기에는 너무 복잡합니다. 가능한 경우 간단하게하십시오 –