В этой статье мы рассмотрим две темы: управление игровыми объектами и их взаимодействие. Мячик у нас уже летает, осталось сделать, чтобы он отражался от стен и ракеток; также стоит реализовать управление нижней ракетки игроком, а верхней — неким алгоритмом.
Итак, приступим.
Движение мячика
Для начала добавим в GameObject следующие полезные функции:
GameObject.java
/** Верхняя граница объекта */
public int getTop() { return mPoint.y; }
/** Нижняя граница объекта */
public int getBottom() { return mPoint.y + mHeight; }
/** Левая граница объекта */
public int getLeft() { return mPoint.x; }
/** Правая граница объекта */
public int getRight() { return mPoint.x + mWidth; }
/** Центральная точка объекта */
public Point getCenter() { return new Point(mPoint.x + mWidth / 2, mPoint.y + mHeight / 2); }
/** Высота объекта */
public int getHeight() { return mHeight; }
/** Ширина объекта */
public int getWidth() { return mWidth; }
/** @return Прямоугольник, ограничивающий объект */
public Rect getRect() { return mImage.getBounds(); }
/** Проверяет, пересекаются ли два игровых объекта */
public static boolean intersects(GameObject obj1, GameObject obj2)
{
return Rect.intersects(obj1.getRect(), obj2.getRect());
}
Игровые объекты ничего не знают ни о друг друге, ни об игровом поле, поэтому все столкновения будут обрабатываться GameManager-ом. Итак, рассмотрим сначала такую ситуацию:
Read more: Virtual Reality Online
Итак, приступим.
Движение мячика
Для начала добавим в GameObject следующие полезные функции:
GameObject.java
/** Верхняя граница объекта */
public int getTop() { return mPoint.y; }
/** Нижняя граница объекта */
public int getBottom() { return mPoint.y + mHeight; }
/** Левая граница объекта */
public int getLeft() { return mPoint.x; }
/** Правая граница объекта */
public int getRight() { return mPoint.x + mWidth; }
/** Центральная точка объекта */
public Point getCenter() { return new Point(mPoint.x + mWidth / 2, mPoint.y + mHeight / 2); }
/** Высота объекта */
public int getHeight() { return mHeight; }
/** Ширина объекта */
public int getWidth() { return mWidth; }
/** @return Прямоугольник, ограничивающий объект */
public Rect getRect() { return mImage.getBounds(); }
/** Проверяет, пересекаются ли два игровых объекта */
public static boolean intersects(GameObject obj1, GameObject obj2)
{
return Rect.intersects(obj1.getRect(), obj2.getRect());
}
Игровые объекты ничего не знают ни о друг друге, ни об игровом поле, поэтому все столкновения будут обрабатываться GameManager-ом. Итак, рассмотрим сначала такую ситуацию:
Read more: Virtual Reality Online