физика в Ursina
пытаюсь создать физику для объектов Ursina, чтобы куб при падении катился и переворачивался:
import ursina
import random
app = ursina.Ursina()
# Создание куба с физическим телом
cube = ursina.Entity(model='cube', collider='box', texture='white_cube', position=(0,2,0),scale=(1,1,1))
#cube.body = ursina.RigidBody(cube, mass=1, shape=ursina.BoxCollider(entity=cube.model))
cube.body = ursina.RigidBody(cube, mass=1, shape=ursina.BoxCollider(entity=cube.model))
# Создание пола с физическим телом
floor = ursina.Entity(model='plane', texture='white', collider='box', position=(0,-1,0), scale=(20,1,20))
floor.body = ursina.RigidBody(floor, mass=1e6, shape=ursina.PlaneCollider(entity=floor))
def update():
# Обновление вращения куба
cube.rotation_x += 10 * time.dt
cube.rotation_y += 10 * time.dt
cube.rotation_z += 10 * time.dt
# Проверка столкновения с полом
raycast_hit_info = ursina.raycast(cube.position, direction=Vec3(0,-1,0), ignore=[cube])
if raycast_hit_info.hit:
# Определение угла падения объекта
impact_angle = -90 + math.degrees(math.atan2(raycast_hit_info.normal[2], raycast_hit_info.normal[0]))
# Применение вращения к кубу
cube.rotation_z = impact_angle
app.run()
Выводится сообщение об ошибке:
Traceback (most recent call last):
File "<pyshell#5>", line 11, in <module>
cube.body = ursina.RigidBody(cube, mass=1, shape=ursina.BoxCollider(entity=cube.model))
File "C:\Python310\lib\site-packages\ursina\rigidbody.py", line 143, in __init__
self.node_path.node().addShape(_convert_shape(shape, entity, dynamic=not self.rigid_body_node.isStatic()))
File "C:\Python310\lib\site-packages\ursina\rigidbody.py", line 183, in _convert_shape
raise Exception('To use a mesh shape you must specify at least one entity or mesh!')
Exception: To use a mesh shape you must specify at least one entity or mesh!