# Конфигурация системы коллайдеров ## Обзор изменений Система коллайдеров была обновлена для обеспечения полного покрытия объектов коллизиями. Теперь коллайдеры создаются с увеличенными размерами, чтобы покрывать весь объект, а не только его часть. ## Основные изменения ### 1. Конфигурация коллайдеров ```javascript 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. Динамическая настройка Добавлены расширенные функции для настройки коллайдеров: ```javascript // Изменить коэффициент размера коллайдеров 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` с увеличенными размерами. ### Настройка размеров Если коллайдеры слишком большие или маленькие, можно изменить коэффициент: ```javascript // В консоли браузера window.updateColliderSize(1.0); // Оригинальные размеры window.updateColliderSize(1.2); // +20% (по умолчанию) window.updateColliderSize(1.5); // +50% ``` ### Отладка Для визуализации коллайдеров включите режим отладки: ```javascript window.colliderConfig.debugMode = true; ``` ## Технические детали ### Алгоритм создания коллайдеров 1. Поиск соответствующего меша в 3D модели по позиции 2. Если меш найден - использование его реальных размеров 3. Если меш не найден - использование JSON данных с коэффициентом увеличения 4. Создание Box3 для проверки коллизий 5. Создание визуального представления ### Проверка коллизий - Используется AABB (Axis-Aligned Bounding Box) для эффективной проверки - Игрок представлен как цилиндр с радиусом 0.35 и высотой 1.6 - Проверка пересечения Box3 объектов ## Файлы конфигурации ### colliders_city_1.json ```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. **Начальная настройка**: Используйте коэффициент 1.2 (20% увеличение) 2. **Тонкая настройка**: Тестируйте разные значения от 1.0 до 1.5 3. **Отладка**: Включите `debugMode` для визуальной проверки коллайдеров 4. **Производительность**: Большие коэффициенты могут снизить производительность ## Устранение неполадок ### Коллайдеры слишком маленькие ```javascript window.updateColliderSize(1.3); // Увеличить коэффициент ``` ### Коллайдеры слишком большие ```javascript window.updateColliderSize(1.1); // Уменьшить коэффициент ``` ### Проблемы с производительностью ```javascript window.updateColliderSize(1.0); // Вернуться к оригинальным размерам ```