2014-12-14 3 views
0

나는 내 레이싱 코스가 직사각형 도넛과 비슷한 레이싱 카 게임을 만들고 있습니다. 직사각형의 가운데에는 벽으로 작용하는 또 다른 작은 직사각형이 있습니다. 내 차가 내벽과 충돌 할 수 있도록 내벽에 충돌 감지 기능을 추가하려고합니다. 아래는 내부 벽의 기본 측정과 트랙 개념을 보여주는 그림입니다.충돌 감지 - 피하 상자

- 번역 x 14-18 단위는 직사각형의 너비입니다.

-60에서 60 단위까지의 변환 y는 사각형의 전체 길이입니다.

현재 x 위치가 원점 (또는 y)에서 14 단위로 벽을 칠 때 자동차 충돌을 시도하면 전체 x 또는 y 행에 충돌이 발생합니다. 예를 들어, x 방향으로 14 개의 유닛이있는 벽을 치면 레이스 코스의 전환점 중 하나에서 그 위치에 도달하면 통과시키지 않습니다. 나는 지금 다음을 시도하고있다.

void checkColl(){ 
    if (posX < -14){ 
     velocityX *= -1 //bounce off the wall on the far left side of the picture 
    } 
    if (posX > 48){ 
     velocityX *= -1 //bounce off wall on far right 
    } 
    if ((posY > 60 || posY < -60) && (posX > 14 && posX < 18)){ //bounce off the rectangle in middle of race course 
     velocityY = velocityY * -1; 
     velocityX = velocityX * -1; 
    } 
} 

enter image description here

+0

'||'을'&&'로 바꾸어보세요. – Juxhin

답변

1

y 좌표의 검사가 고장이다. 이것을보십시오 :

if ((posY > -60 && posY < 60) && (posX > 14 && posX < 18)){ 
     //bounce off the rectangle in middle of race course 

"도넛"의 구멍 인 검은 사각형 안에 포인트를 정의합니다.

+0

와우, 나는 그게 뭔가 다른 줄 알았지 만 그걸 고쳤다. 그렇게 간단하지 않은 코드라고 생각할 수 없습니다. – Valrok