У меня столкновение в моей игре javascipt между игроком, пулями и врагами. Раньше пули были прямоугольниками, но теперь у меня есть изображения. Изображения плотно вписываются в прямоугольную коробку, ожидается, что работа 2D-столкновения будет работать. Вот изображение: Почему это 2D-столкновение полностью не работает для моих изображений?
Пуля несколько прямоугольная. Я использую эту логику в моей системе столкновения:
return rect1.x <= rect2.x+rect2.width
&& rect2.x<=rect1.x+rect1.width
&& rect1.y<=rect2.y+rect2.height//if all statements are true, they are colliding
&& rect2.y<=rect1.y+rect1.height;
Collision несколько работ, однако, пуля может быть значительно ниже игрока и по-прежнему вызывает столкновение, и это может быть значительно третьим путем внутри игрока из верхних без инициируя столкновение. Есть ли что-нибудь, что я могу сделать, чтобы исправить это? Система столкновений работала безупречно с прямоугольниками и должна быть достаточно близко здесь, но она недостаточно хороша. Вот ссылка на мою фактическую игру в разработке, если вы хотите увидеть исходный код и проблему для себя: JS Game
Я пробовал использовать ваш код, и результат был тот же. Это работает с прямоугольниками, но по какой-то причине оно смещается с изображением. Я пытался играть со значениями. Если rect1y
Тогда кажется, что ваша проблема может быть скорее в размещении ваших изображений, чем при обнаружении конфликтов. Как вы вставляете свое изображение в свой (невидимый) прямоугольник? – Jankapunkt
Вы правы, это проблема размещения. Верхний левый угол изображения был у его x и y, однако при столкновении было сделано для того, чтобы эти координаты находились в центре. Я сделал это сейчас: drawImage (img, x-width/2, y-height/2, width, height). спасибо –