有没有办法找到Ursina实体所有顶点的坐标?

问题描述 投票:0回答:1

我有以下代码来创建一个立方体和一个平面。

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'
),说该函数不存在。

如果没有,是否有更简单的方法来实现重力? 我对现有方法的主要问题是它们最终都会得到这样的结果: 而实际上立方体应该掉到地板上。

提前谢谢您。

python python-3.x 3d ursina
1个回答
0
投票

只需使用:

body.combine().vertices

© www.soinside.com 2019 - 2024. All rights reserved.