У меня есть следующий код для создания куба и плоскости.
из импорта ursina * тела = установить() Г = 0,002 приложение = Урсина (render_mode = 'коллайдеры') ground = Entity(model='plane', color=rgb(230,230,230), масштаб=10, коллайдер='сетка') ground.collider.visible = Истина куб = Entity(модель='куб', цвет=rgb(100, 100, 100), масштаб=2, позиция=Vec3(0, 5,0), коллайдер='сетка', вращение=Vec3(45, 45, 45)) Cube.collider.visible = Истина body.add((куб, 0)) обновление защиты(): глобальные организации новые_боди = установить() для тела, v в телах: hit_info = raycast(Vec3(cube.X, Cube.Y, Cube.Z) , Vec3(0, -1, 0), ignore=(body,), distance=body.scale.y, debug=True) если не hit_info.hit: v += Г body.y -= v еще: в = 0 new_bodies.add((тело, v)) тела = новые_боди РедакторКамера() DirectionalLight(parent=Entity(), y=2, z=3, тени=True, вращение=(45, -45, 45)) приложение.run() Я пытаюсь настроить систему гравитации в функции обновления, которая на самом деле равномерно применяется к объекту, в отличие (насколько я могу судить) от уже встроенного контроллера от первого лица. Самый простой способ, который я могу придумать, — это выполнить лучевое приведение вниз от каждой вершины (чтобы это работало для объектов, которые не являются просто кубами).
Есть ли способ найти вершины объекта? Я пробовал body.model.vertices, но это дает мне ошибку (AttributeError: объект 'panda3d.core.NodePath' не имеет атрибута 'vertices'), говорящий, что функция не существует.
Если нет, есть ли более простой способ реализовать гравитацию? Моя главная проблема с существующими способами заключается в том, что все они приводят к чему-то вроде этого:

тогда как на самом деле куб должен просто упасть на пол.
Заранее спасибо.