在 Ursina,我寻找十字路口。一切都在循环中进行。我正在尝试使用 Numpy 摆脱循环,但 Ursina 对数组发誓。如何使用 Numpy 的功能而不使用循环?
from ursina import *
import numpy as np
app = Ursina()
cube_1 = Entity(model='cube', collider='box')
cube_2 = Entity(model='cube', collider='box')
cube_3 = Entity(model='cube', collider='box')
lst = []
lst.append(cube_2)
lst.append(cube_3)
for m in range(2):
if cube_1.intersects(lst[m]).hit:
print('intersects 1')
arr = np.asarray(lst)
np.where(cube_1.intersects(arr).hit == True)
可能
numpy在这里帮不了你。该方法intersect需要一个场景对象作为输入,而不是一个数组,因此循环是最自然的方式。如果你坚持
numpy并且没有循环,那么你需要对方法进行矢量化intersect(没有测试它!):np.vectorize将普通函数转换为向量函数。由于
ndarray您不能从数组中获取对象属性,因此您hit必须将对属性的访问包装在lambda.我怀疑
np.where在这种情况下会有一个较慢的周期。