В этой статье мы рассмотрим две темы: управление игровыми объектами и их взаимодействие. Мячик у нас уже летает, осталось сделать, чтобы он отражался от стен и ракеток; также стоит реализовать управление нижней ракетки игроком, а верхней — неким алгоритмом. Итак, приступим.Движение мячикаДля начала добавим в 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
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-ом. Итак, рассмотрим сначала такую ситуацию:
0 comments:
Post a Comment