« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга

Тестирование 64-битных приложений

ПнВтСрЧтПтСбВс
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
    Популярное
Горячие клавиши

Шаблон программы под Windows

Передача бинарного файла клиенту из JSP

Как избавиться от ошибок в ПО

Класс туре (Тип)

Использование опции Exclude

Исследование Perl модулей, часть 2. Рисуем диаграммы с использованием GD Graph

Функция AccessResource

Работа с Bluetooth в Delphi. Часть 1

О настройке конфигурации SQL Server 7.0




    Архив файлов



    Сообщества



    Документация

Статьи:: Delphi :: Игры. Построение игр. :: Collision


отправить ссылку другу версия для печати  Обсудить на форуме

Collision





Итак, у нас есть спрайты. Они рисуются, двигаются, но не взаимодействуют друг с другом. И вот для того, что бы мячики отскакивали, пули попадали во врага, а герои не проваливались сквозь пол, в DelphiX есть замечательная вещь как проверка на столкновение, которая в большинстве случаев поможет избежать написание собственного движка.
Есть два метода определение столкновений.
1. Проверка столкновения рамок: Простой тип, слежение идет за взаимным положением рамок спрайтов. При обнаружении пересечения координат, ябъявляется событие "столкновение"
2. Проверка столкновения точек: Сложный тип. Слежение ведется не только за взаимным положением рамок спрайтов, но и за взаимным положением самих изображений. Событие "столкновение" объявляется при обнаружении пересечения точек изображений.

Рамка
Рамка определят размер спрайта, что дает взаимодействовать спрайтам друг с другом. Так же рамка нужна для определения момента обрезания спрайта, при выходе за экран. Одним словом вещь крайне важная. Если не указать ширину и высоту рамки, DelphiX будет выводить спрайт, но не сможет определять столкновения
Проверка на столкновение рамок 1


столкновение есть
Столкновение рамок
Как вы видите столкновение произошло. Но сами спрайты не коснулись друг-друга.Это не очень красиво, но зато очень быстро.

столкновения нет



столкновение есть

Проверка на столкновение рамок 2

Есть ещё один способ проверки столкновения без PixelCheck.

const Border = ...;
with TAnyObject.Create(MyForm.DXSpriteEngine.Engine) do
begin
Image:=...;
Width:=Image.PatternWidth - 2*Border;
Height:=Image.PatternHeight - 2*Border;
...
end;

В этом случае картинка будет выводиться полностью, но квадрат столкновений уменьшится. Необходимо изменить также и DoMove, ведь X = OldX + Border и Y = OldY + Border. Именно этот способ как правило используется в аркадах.
Проверка на столкновение точек


столкновения нет
Проверка на столкновение точек
Более точный и красивый. Проверка на столкновение самих изображений. Больше подходит для сложных спрайтов. Требует большей загрузки процессора..
Проверка на столкновение точек


столкновение есть
Более точное определение столкновения
Два пиксела проверяют спрайты на столкновение. Как видно рамки давно столкнулись, но событие поизошло только когда столкнулись непрозрачные части.
Проверка на столкновение рамки и точки


столкновения нет
Смешивание типов обнаружения столкновения
Спрайты, использующие разные методы определения столкновения то-же будут сталкиваться друг с другом. Один спрайт использует определение по рамке, другой по точке. Иногда смешиванием можно добиться неплохих, реалистичных результатов..
Проверка на столкновение рамки и точки


столкновение есть
Альтернатива -(не лучшее решение, но альтернативное...)
Как вы видите это не слишком великолепно. Игрок может видет, что спрайты не столкнулись на самом деле, а игра будет определять, что стокновение произошло после попадания рамки одного спрайта на непрозрачную точку другого.

Выбор метода зависит от игры. Если это активная Аркада, то Проверка на столкновение точек в ней ни к чему. Глаз не будет успевать замечать, что столкновения произошло на пяток пикселей раньше, чем положено. А если это размеренная, несуетливая РПГ, то без этого метода не обойтись.

Настройка обнаружения столкновений
Основные шаги, необходимые для этого.
· Создаем класс спрайта в обычном порядке
· Включаем DoMove процедуру
· Включаем (override)DoCollision процедуру
· Устанавливаем высоту и ширину спрайта.
· В процедуре DoMove вызываем метод Collision.
· В методе DoCollision, помещаем код, для обработки последствий столкновения.
· Выбираем метод обнаружения столкновений.







9 правил для начинающего Ajax-разработчика.

AJAX

Эти девять правил несложны, никаких кусков кода — только общие советы начинающим Ajax-разработчикам. Крайне вольный перевод 9 AJAX Tips & Tricks.


Подробнее... | Рубрика: AJAX | Добавлено: 25.08.2008

ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения.

AJAX

Приветствуем наших читателей. Что-то в последнее время много новостей и я даже не успеваю все отобрать и написать о самых интересных технологиях и продуктах. А ведь ещё и работать иногда надо. Но мимо этой новости мы просто не могли пройти - ведь AJAX и ExtJS как его наглядное воплощения это наша основная технологическая платформа. А буквально вчера вышла следующая версия в текущей ветке 2.х - 2.2 Что же там нового, полезного и интересного мы сейчас и рассмотрим.


Подробнее... | Рубрика: AJAX | Добавлено: 25.08.2008

Windows 7: под покровом тайны.

Windows 7

О преемнице Windows Vista, носящей кодовое имя Windows 7, известно очень мало. Корпорация Microsoft, наученная горьким опытом, с крайней неохотой делится с журналистами информацией о разрабатываемой системе, дабы у пользователей и разработчиков программного обеспечения не сложилось искаженное представление о продукте, которое бы повлияло на продажи новой операционки, как это случилось с "Вистой". Тем не менее, некоторые скупые сведения хоть и изредка, но просачиваются из стен редмондского гиганта.


Подробнее... | Рубрика: Windows 7 | Добавлено: 25.08.2008

Остальные статьи:

Apache mod_ndb - MySQL кластер с доступом через HTTP и Ajax
Поиск уязвимостей в программах с помощью анализаторов кода
Как появилась библиотека VivaCore
Это сложно
ASP.NET и немного поисковой оптимизации
Protocol buffers: библиотека обмена данными для C++, Java, Python от Google
Описание VivaVisualCode
JQuery: Пара сотен плагинов в одной заметке
Касание сетки
Разработка элементов управления ASP.NET на примере навигационной панели
Сохранения параметров приложения в .Net
Custom cursors в .Net
Бегун убегает от хозяина
"Битрикс" выпустил седьмую версию CMS
Выбираем систему управления сайтом
Рынок CMS в Европе или впечатления с CeBIT 2008


Цитата дня (все,добавить):



    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование

Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 106
Пользователей: 0