6.9 KiB
6.9 KiB
Конфигурация системы коллайдеров
Обзор изменений
Система коллайдеров была обновлена для обеспечения полного покрытия объектов коллизиями. Теперь коллайдеры создаются с увеличенными размерами, чтобы покрывать весь объект, а не только его часть.
Основные изменения
1. Конфигурация коллайдеров
const COLLIDER_CONFIG = {
sizeMultiplier: 2.0, // Коэффициент увеличения размеров (100% больше)
debugMode: false, // Режим отладки для визуализации
minSize: 0.5, // Минимальный размер коллайдера
maxSize: 50.0, // Максимальный размер коллайдера
adaptiveScaling: true // Адаптивное масштабирование
};
2. Обновленная функция создания коллайдеров
createVisualColliderFromModel()теперь использует увеличенные размеры для JSON данных- Приоритет отдается реальным размерам мешей из 3D модели
- Fallback к JSON данным с коэффициентом увеличения
3. Адаптивное масштабирование
Система автоматически определяет оптимальный коэффициент масштабирования на основе размеров объекта:
- Маленькие объекты (< 1.0): коэффициент 3.0x или больше
- Средние объекты (1.0-5.0): стандартный коэффициент 2.0x
- Большие объекты (> 5.0): уменьшенный коэффициент 1.6x
4. Динамическая настройка
Добавлены расширенные функции для настройки коллайдеров:
// Изменить коэффициент размера коллайдеров
window.updateColliderSize(3.0); // Увеличить на 200%
// Переключить адаптивное масштабирование
window.toggleAdaptiveScaling();
// Установить ограничения размеров
window.setColliderLimits(1.0, 20.0); // мин: 1.0, макс: 20.0
// Переключить режим отладки
window.toggleColliderDebug();
// Получить текущую конфигурацию
console.log(window.colliderConfig);
// Протестировать коллизии
window.testCollisions();
// Быстрый тест всех функций
window.quickTest();
// Управление цветом и прозрачностью коллайдеров
window.setColliderColor(0, 1, 0); // Зеленый цвет (RGB 0-1)
window.setColliderOpacity(0.5); // Полупрозрачность (0-1)
window.randomizeColliderColors(); // Случайные цвета
// Управление цветом и прозрачностью объектов интерьера
window.setInteriorObjectColor(1, 0, 0); // Красный цвет объектов (RGB 0-1)
window.setInteriorObjectOpacity(0.7); // Полупрозрачность объектов (0-1)
Использование
Базовое использование
Коллайдеры автоматически загружаются из colliders_city_1.json с увеличенными размерами.
Настройка размеров
Если коллайдеры слишком большие или маленькие, можно изменить коэффициент:
// В консоли браузера
window.updateColliderSize(1.0); // Оригинальные размеры
window.updateColliderSize(1.2); // +20% (по умолчанию)
window.updateColliderSize(1.5); // +50%
Отладка
Для визуализации коллайдеров включите режим отладки:
window.colliderConfig.debugMode = true;
Технические детали
Алгоритм создания коллайдеров
- Поиск соответствующего меша в 3D модели по позиции
- Если меш найден - использование его реальных размеров
- Если меш не найден - использование JSON данных с коэффициентом увеличения
- Создание Box3 для проверки коллизий
- Создание визуального представления
Проверка коллизий
- Используется AABB (Axis-Aligned Bounding Box) для эффективной проверки
- Игрок представлен как цилиндр с радиусом 0.35 и высотой 1.6
- Проверка пересечения Box3 объектов
Файлы конфигурации
colliders_city_1.json
{
"colliders": [
{
"type": "box",
"position": { "x": 0, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0 },
"scale": { "x": 2, "y": 2, "z": 2 },
"color": { "r": 1.0, "g": 0.0, "b": 0.0 },
"opacity": 0.3
}
]
}
Параметры:
position,rotation,scale- стандартные параметры трансформацииcolor- RGB цвет в диапазоне 0.0-1.0 (опционально)opacity- прозрачность в диапазоне 0.0-1.0 (опционально)
Размеры в JSON будут автоматически увеличены на коэффициент sizeMultiplier.
Рекомендации
- Начальная настройка: Используйте коэффициент 1.2 (20% увеличение)
- Тонкая настройка: Тестируйте разные значения от 1.0 до 1.5
- Отладка: Включите
debugModeдля визуальной проверки коллайдеров - Производительность: Большие коэффициенты могут снизить производительность
Устранение неполадок
Коллайдеры слишком маленькие
window.updateColliderSize(1.3); // Увеличить коэффициент
Коллайдеры слишком большие
window.updateColliderSize(1.1); // Уменьшить коэффициент
Проблемы с производительностью
window.updateColliderSize(1.0); // Вернуться к оригинальным размерам