Я не очень хорошо смыслю в программировании и в целом математике поскольку недавно начал изучать эту отрасль. Мне нужна помощь с разработкой собственной игры. Сама игра является 2D. Мне неизвестно как сделать границы нужных объектов. Так скажем Hitbox. Сама проблема: описать эти границы объектов в последствии, что бы они могли соприкасаться друг с другом и выполнять определённую часть кода. К примеру нанести урон или остановить движение этих объектов. Прошу объяснить как именно это сделать и как происходит создание Хитбокса и как извлекать нужные данные для сравнения "Прикоснулся ли этот объект с другим объектом или нет?". Заранее благодарю за советы и помощь.
Это называется коллизией, например можно просто создать класс CollisionRect объекты которого будут принимать x и y и в этом классе будет метод (ColidesWith например) проверяющий столкновение двух объектов по x и y, ширине и высоте объектов. Сложно звучит, но на самом деле очень просто. Я как раз делаю 2D игру на java на libgdx, вот пример кода этого класса CollisionRect:
package com.imaginegames.mmgame.tools;
public class CollisionRect {
float x, y, width, height;
public CollisionRect(float x, float y, float width, float height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public void move (float x, float y) {
this.x = x;
this.y = y;
}
public boolean CollidesWith (CollisionRect rect) {
return x < rect.x + rect.width && y < rect.y + rect.height && x + width > rect.x && y + height > rect.y;
}
}
А вот уже в процессе игре проверяется на столкновение fireball'a и ракеты которая уничтожает этот фаербол, ракета - bullet:
for (Bullet bullet : bullets) {
for (Fireball fireball : fireballs) {
if (bullet.getCollisionRect().CollidesWith(fireball.getCollisionRect())) {
fireballs_to_remove.add(fireball);
bullets_to_remove.add(bullet);
explosions.add(new Explosion(bullet.x, fireball.x, Bullet.WIDTH, Fireball.WIDTH, bullet.y, fireball.y, Bullet.HEIGHT, Fireball.HEIGHT, 0.5f));
}
}
}
Вот на ютубе ролик, по libgdx правда, но как видишь в CollisionRect не используются библиотеки libgdx.
Надеюсь помог, если что-то не понимаешь - paint в помощь, просто попробуй нарисовать квадрат первого тела и второго и поймешь что цикл в ColidesWith работает в любом случае, встретились тела 1 и 2 или 2 и 1, и неважно с какой стороны.
И если кратко: границы объекта - это X объекта и X + Width и Y и Y + Height Урон - просто если при проверке на соприкосновении двух объектов возвращается true, то параметр например health уменьшается на 20 В общем, посмотри урок, надеюсь ты знаешь английский.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Эта старая проблема: https://stackoverflowcom/questions/46560449/error72-unknown-element-receiver-found
Коллеги, доброго дняНе могу понять, как сделать правильно: Необходимо сделать игру, в которой нужно угадать число компьютера
Здравствуйте, в последних нескольких коммитаъ возникла странная ошибка, так и не получилоьс отследить откуда у нее корни растут, хотя до этого...