Я делаю гоночный автомобиль, где мой гоночный ход похож на прямоугольный пончик. В середине прямоугольника у меня есть еще один меньший прямоугольник, который действует как стена. Я пытаюсь добавить обнаружение столкновения на мою внутреннюю стену, чтобы мои машины столкнулись с внутренними стенами. Ниже приведены некоторые основные измерения внутренней стены, а также изображение, показывающее концепцию дорожки:Обнаружение столкновений - избегать коробки
-Транслированный 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;
}
}
Попробуйте заменить '||' на '&&'. – Juxhin