我有以下代码来创建一个立方体和一个平面。
from ursina import *
bodies = set()
G = 0.002
app = Ursina(render_mode='colliders')
ground = Entity(model='plane', color=rgb(230,230,230), scale=10, collider='mesh')
ground.collider.visible = True
cube = Entity(model='cube', color=rgb(100, 100, 100), scale=2, position=Vec3(0, 5,0), collider='mesh', rotation=Vec3(45, 45, 45))
cube.collider.visible = True
bodies.add((cube, 0))
def update():
global bodies
new_bodies = set()
for body, v in bodies:
hit_info = raycast(Vec3(cube.X, cube.Y, cube.Z) , Vec3(0, -1, 0), ignore=(body,), distance=body.scale.y, debug=True)
if not hit_info.hit:
v += G
body.y -= v
else:
v = 0
new_bodies.add((body, v))
bodies = new_bodies
EditorCamera()
DirectionalLight(parent=Entity(), y=2, z=3, shadows=True, rotation=(45, -45, 45))
app.run()
我正在尝试在更新函数中设置一个重力系统,该系统实际上均匀地应用于对象,这与(据我所知)已经内置的第一人称控制器不同。 我能想到的最简单的方法是从每个顶点向下进行光线投射(这样它适用于不仅仅是立方体的对象)。
有没有办法找到实体的顶点? 我已经尝试过
body.model.vertices
但这给了我一个错误(AttributeError: 'panda3d.core.NodePath' object has no attribute 'vertices'
),说该函数不存在。
如果没有,是否有更简单的方法来实现重力? 我对现有方法的主要问题是它们最终都会得到这样的结果: 而实际上立方体应该掉到地板上。
提前谢谢您。
只需使用:
body.combine().vertices