168 lines
10 KiB
JavaScript
168 lines
10 KiB
JavaScript
// Исправление отображения коллизионных объектов в игре
|
||
// Файл: test-game-collider-visibility-fix.js
|
||
|
||
console.log('🔧 Исправление отображения коллизионных объектов в игре');
|
||
console.log('');
|
||
|
||
console.log('❓ Проблема:');
|
||
console.log('Коллизионные объекты до сих пор видны, не смотря на то, что их непрозрачность равна нулю');
|
||
console.log('');
|
||
|
||
console.log('🔍 Причина проблемы:');
|
||
console.log('');
|
||
|
||
console.log('1. 🎮 Разная логика в редакторе и игре:');
|
||
console.log(' - В редакторе: коллайдеры используют прозрачность из базы данных');
|
||
console.log(' - В игре: коллайдеры создаются с фиксированной прозрачностью 0.001');
|
||
console.log(' - Игра не учитывает настройки прозрачности из БД');
|
||
console.log('');
|
||
|
||
console.log('2. 🔧 Фиксированная прозрачность в игре:');
|
||
console.log(' - const material = new THREE.MeshBasicMaterial({ opacity: 0.001 })');
|
||
console.log(' - Все коллизионные объекты имеют одинаковую прозрачность');
|
||
console.log(' - Не учитывается значение opacity из базы данных');
|
||
console.log('');
|
||
|
||
console.log('3. 👁️ Отсутствие логики невидимости:');
|
||
console.log(' - В игре нет проверки opacity === 0');
|
||
console.log(' - Нет установки material.visible = false');
|
||
console.log(' - Нет использования alphaTest для правильной прозрачности');
|
||
console.log('');
|
||
|
||
console.log('✅ Исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🎮 Использование прозрачности из базы данных:');
|
||
console.log(' - const opacity = c.opacity !== undefined ? c.opacity : 0.001');
|
||
console.log(' - Каждый коллайдер использует свою прозрачность из БД');
|
||
console.log(' - Fallback на 0.001 для старых коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('2. 👁️ Логика невидимости:');
|
||
console.log(' - if (opacity === 0) { material.visible = false; alphaTest = 0; }');
|
||
console.log(' - else { material.visible = true; alphaTest = 0.1; }');
|
||
console.log(' - Правильная обработка полностью прозрачных объектов');
|
||
console.log('');
|
||
|
||
console.log('3. 🔧 Дополнительные функции для отладки:');
|
||
console.log(' - window.updateColliderOpacity(opacity) - обновить прозрачность всех коллайдеров');
|
||
console.log(' - window.toggleColliderVisibility(visible) - включить/выключить видимость');
|
||
console.log(' - window.reloadAllColliders() - перезагрузить все коллайдеры');
|
||
console.log('');
|
||
|
||
console.log('🔧 Технические детали:');
|
||
console.log('');
|
||
|
||
console.log('🎮 Логика создания коллайдеров в игре:');
|
||
console.log('- Использование прозрачности из базы данных: c.opacity');
|
||
console.log('- Fallback на 0.001 для совместимости');
|
||
console.log('- Проверка opacity === 0 для невидимости');
|
||
console.log('- Установка material.visible и alphaTest');
|
||
console.log('');
|
||
|
||
console.log('👁️ Обработка прозрачности:');
|
||
console.log('- opacity = 0: material.visible = false, alphaTest = 0');
|
||
console.log('- opacity > 0: material.visible = true, alphaTest = 0.1');
|
||
console.log('- Применяется к каждому коллайдеру индивидуально');
|
||
console.log('');
|
||
|
||
console.log('🔧 Функции отладки:');
|
||
console.log('- updateColliderOpacity(opacity): обновить прозрачность всех коллайдеров');
|
||
console.log('- toggleColliderVisibility(visible): включить/выключить видимость');
|
||
console.log('- reloadAllColliders(): перезагрузить все коллайдеры из БД');
|
||
console.log('- checkCollidersInDB(): проверить состояние БД');
|
||
console.log('');
|
||
|
||
console.log('🧪 Как тестировать исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🎮 Тест прозрачности в игре:');
|
||
console.log(' - Откройте игру: http://localhost:4000');
|
||
console.log(' - Проверьте консоль: window.checkCollidersInDB()');
|
||
console.log(' - Убедитесь, что коллайдеры загружены из БД');
|
||
console.log(' - Коллайдеры с opacity = 0 должны быть невидимы');
|
||
console.log(' - Коллайдеры с opacity > 0 должны быть видимы');
|
||
console.log('');
|
||
|
||
console.log('2. 🔧 Тест функций отладки:');
|
||
console.log(' - window.updateColliderOpacity(0) - сделать все невидимыми');
|
||
console.log(' - window.updateColliderOpacity(0.5) - сделать полупрозрачными');
|
||
console.log(' - window.toggleColliderVisibility(false) - выключить видимость');
|
||
console.log(' - window.toggleColliderVisibility(true) - включить видимость');
|
||
console.log('');
|
||
|
||
console.log('3. 🔄 Тест перезагрузки:');
|
||
console.log(' - window.reloadAllColliders() - перезагрузить все коллайдеры');
|
||
console.log(' - Проверьте, что прозрачность применяется корректно');
|
||
console.log(' - Убедитесь, что коллайдеры с opacity = 0 невидимы');
|
||
console.log('');
|
||
|
||
console.log('4. 📊 Тест синхронизации с редактором:');
|
||
console.log(' - Откройте редактор коллизий');
|
||
console.log(' - Установите прозрачность коллайдера в 0');
|
||
console.log(' - Сохраните изменения');
|
||
console.log(' - Вернитесь в игру');
|
||
console.log(' - Выполните window.reloadAllColliders()');
|
||
console.log(' - Коллайдер должен стать невидимым');
|
||
console.log('');
|
||
|
||
console.log('5. 🎯 Тест с разными значениями прозрачности:');
|
||
console.log(' - Создайте коллайдеры с разной прозрачностью (0, 0.3, 0.7, 1)');
|
||
console.log(' - Сохраните изменения');
|
||
console.log(' - Перезагрузите игру');
|
||
console.log(' - Проверьте, что каждый коллайдер имеет правильную прозрачность');
|
||
console.log('');
|
||
|
||
console.log('🎯 Ожидаемые результаты:');
|
||
console.log('');
|
||
|
||
console.log('✅ Прозрачность в игре:');
|
||
console.log('- [ ] Коллайдеры с opacity = 0 полностью невидимы');
|
||
console.log('- [ ] Коллайдеры с opacity > 0 видимы с правильной прозрачностью');
|
||
console.log('- [ ] Каждый коллайдер использует свою прозрачность из БД');
|
||
console.log('- [ ] Fallback на 0.001 для старых коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('✅ Функции отладки:');
|
||
console.log('- [ ] window.updateColliderOpacity() работает корректно');
|
||
console.log('- [ ] window.toggleColliderVisibility() работает корректно');
|
||
console.log('- [ ] window.reloadAllColliders() обновляет прозрачность');
|
||
console.log('- [ ] window.checkCollidersInDB() показывает правильные данные');
|
||
console.log('');
|
||
|
||
console.log('✅ Синхронизация с редактором:');
|
||
console.log('- [ ] Изменения прозрачности в редакторе отражаются в игре');
|
||
console.log('- [ ] Коллайдеры с opacity = 0 невидимы в обоих местах');
|
||
console.log('- [ ] Отсутствие рассинхронизации');
|
||
console.log('- [ ] Корректная работа автоматического сохранения');
|
||
console.log('');
|
||
|
||
console.log('✅ Производительность:');
|
||
console.log('- [ ] Быстрая загрузка коллайдеров с правильной прозрачностью');
|
||
console.log('- [ ] Отсутствие задержек при перезагрузке');
|
||
console.log('- [ ] Стабильная работа коллизий');
|
||
console.log('- [ ] Корректная работа прозрачности');
|
||
console.log('');
|
||
|
||
console.log('🔍 Отладочная информация:');
|
||
console.log('');
|
||
|
||
console.log('📊 В консоли должно появляться:');
|
||
console.log('- "📊 Коллайдеры в БД: X штук"');
|
||
console.log('- "👁️ Обновляем прозрачность всех коллизионных объектов: Y"');
|
||
console.log('- "✅ Прозрачность обновлена для Z коллизионных объектов"');
|
||
console.log('- "👁️ Переключаем видимость коллизионных объектов: true/false"');
|
||
console.log('- "✅ Видимость коллизионных объектов: включена/выключена"');
|
||
console.log('');
|
||
|
||
console.log('🎯 Проверка в игре:');
|
||
console.log('- Коллайдеры с opacity = 0 не должны быть видны');
|
||
console.log('- Коллайдеры с opacity > 0 должны быть видны с правильной прозрачностью');
|
||
console.log('- Функции отладки должны работать корректно');
|
||
console.log('- Перезагрузка должна обновлять прозрачность');
|
||
console.log('');
|
||
|
||
console.log('🚀 Исправления готовы к тестированию!');
|
||
console.log('Откройте игру: http://localhost:4000');
|
||
console.log('Протестируйте прозрачность коллизионных объектов и функции отладки');
|