2014-12-14 4 views
0

Я делаю гоночный автомобиль, где мой гоночный ход похож на прямоугольный пончик. В середине прямоугольника у меня есть еще один меньший прямоугольник, который действует как стена. Я пытаюсь добавить обнаружение столкновения на мою внутреннюю стену, чтобы мои машины столкнулись с внутренними стенами. Ниже приведены некоторые основные измерения внутренней стены, а также изображение, показывающее концепцию дорожки:Обнаружение столкновений - избегать коробки

-Транслированный x от 14 до 18 единиц - это ширина прямоугольника.

-Трансляция от -60 до 60 единиц - это общая длина прямоугольника.

В настоящее время проблема заключается в том, что я пытаюсь заставить машины столкнуться, когда позиция x попадает в стену на 14 единиц от начала координат (или с y), что создает столкновение для всей линии x или y. Так, например, как только я ударил стену, на которой расположены 14 единиц в направлении x, это не позволяет мне пройти, если я должен добраться до этого места в одном из поворотных моментов в гоночной трассе. На данный момент я пытаюсь сделать следующее.

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

Проверка на координате у сломана. Попробуйте следующее:

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

Это определяет точки внутри черного прямоугольника - отверстие «пончика».

+0

Ничего себе, я думал, что это что-то еще, но это исправлено. Не могу поверить, что это было так просто, что я ошибался в своем коде. – Valrok

Смежные вопросы