Files
rltn/test-game-collider-visibility-fix.js

168 lines
10 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Исправление отображения коллизионных объектов в игре
// Файл: 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('Протестируйте прозрачность коллизионных объектов и функции отладки');