224просмотров
90.7%от подписчиков
15 декабря 2025 г.
Score: 246
💥ОБРАБОТКА СТОЛКНОВЕНИЙ💥 В Ursina Engine обработка столкновений строится вокруг коллайдеров и нескольких удобных способов проверки столкновений. ✅Что такое столкновение в Ursina
Столкновение возникает, когда коллайдер одного объекта пересекается с коллайдером другого. У объекта есть:
➖model — визуальное представление
➖collider — физическая форма для столкновений
❗️ Без collider объект не участвует в столкновениях. ✅Типы коллайдеров 🔹 Автоматический
Entity(model='cube', collider='box')
Entity(model='sphere', collider='sphere') 🔹 Ручной (точный контроль)
Entity(collider=BoxCollider(entity, size=(1,2,1)))
Entity(collider=SphereCollider(entity, radius=0.5)) 🔹 MeshCollider (влияет на производительность)
Entity(model='model.obj', collider='mesh') ‼️Используй mesh только если box или sphere не подходят. ✅Проверка столкновений через intersects() Самый простой и часто используемый способ.
if player.intersects(enemy).hit: print("Столкновение!") def update(): if player.intersects().hit: print("Игрок во что-то врезался")
⚠️ intersects() без аргументов проверяет все коллайдеры сцены. 🔻Что возвращает intersects():
➖.hit — True / False
➖.entity — с чем столкнулись
➖.point — точка удара
➖.normal — нормаль поверхности
➖.distance — расстояние ✅Визуализация коллайдера (для отладки) a = Entity(model = 'cube',color = color.red, collider = 'box', ) a.collider.visible = True ✅Частые ошибки ❌ Нет collider
Entity(model='cube') # столкновений не будет ❌ Проверка в input вместо update
def input(key): if player.intersects().hit: # плохая идея ❌ MeshCollider в большом количестве
➡️ падение FPS