Книга: Программирование КПК и смартфонов на .NET Compact Framework
Столкновения батона и мяча
Столкновения батона и мяча
Хотя код вполне нормально работает, все-таки хочется больше реализма. Отвлечемся на минутку и рассмотрим пример столкновений мячей с круглым предметом (рис. 11.5).
Рис. 11.5. Столкновение круглых объектов
Когда мяч ударяется о круглый объект, он отскакивает обратно, как показано на рисунке. Программа должна уметь определять вид столкновения для каждого мяча. По схожему принципу должна работать и наша программа.
На рис. 11.6 показаны использующиеся три вида столкновений. Первое столкновение происходит при наезде правой нижней части сыра на прямоугольник батона. Во втором случае оба нижних угла изображения сыра одновременно пересекаются с прямоугольником батона. И третий случай реализуется, когда изображение сыра левой частью попадает на блокирующий прямоугольник.
Рис. 11.6. Виды столкновений
Нужно снова переписать код метода updatePosition
для новой реализации модели столкновений, как показано в листинге 11.22.
Листинг 11.22
if (goingDown) {
// если сыр движется вниз
if (cheeseRectangle.IntersectsWith(breadRectangle)) {
// столкновение
bool rightIn =
breadRectangle.Contains(cheeseRectangle.Right, cheeseRectangle.Bottom);
bool leftIn =
breadRectangle.Contains(cheeseRectangle.Left, cheeseRectangle.Bottom);
// способ отражения
if (rightIn & leftIn) {
// отражается вверх
goingDown = false;
} else {
// отражается вверх
goingDown = false;
// в зависимости от вида столкновений
if (rightIn) {
goingRight = false;
}
if (leftIn) {
goingRight = true;
}
}
}
}
Обратите внимание на то, что сыр отскакивает только при движении в нижнюю часть экрана. Используя подобный подход, можно создать игру, в которой пользователь будет стараться не дать сыру упасть на дно экрана, отбивая его батоном.
- Начало работы
- Добавление изображения в программу
- Использование встроенных ресурсов
- Вывод картинки на экран
- Создание анимации
- Отражения
- Управление скоростью движения объекта
- Добавляем новый объект
- Устранение мерцания
- Хлеб — всему голова
- Обнаружение столкновений
- Столкновения батона и мяча
- Новые объекты
- Размещение помидоров
- Уничтожение томатов
- Счет игры
- Ведение счета
- Звуковые эффекты
- Дальнейшие улучшения
- И опять добавляем новые объекты
- Управление таблицей результатов
- Переключение между формами
- Отображение дочернего окна
- Получение имени игрока
- Хранение лучших результатов
- Улучшение графики
- Спрайты