我一直在关注this教程,试图检测我是否点击了3D模型,但遇到了一些问题。
这就是我所拥有的 -
public GameObject getObject (int screenX, int screenY) {
Ray ray = perspectiveCamera.getPickRay(screenX, screenY);
GameObject result = null;
for (int i = 0; i < modelInstanceArray.size; ++i) {
final GameObject selectedModelInstance = modelInstanceArray.get(i);
if (Intersector.intersectRayBounds(ray, selectedModelInstance.boundingBox, null)) {
result = selectedModelInstance;
}
}
return result;
}
@Override
public boolean touchDown (int screenX, int screenY, int pointer, int button) {
getObject(screenX, screenY);
return true;
}
..其中GameObject
扩展ModelInstance
以获取modelInstance的calculateBoundingBox(new BoundingBox()).mul(this.transform)
,因为它正在...错误.. instanced 。
当我打印ray
时,我得到了一些东西 -
ray [(1.7015453E-4,8.619284E-4,1.0):(1.8586617E-4,-1.0,0.0)]
哪个看起来很小..小?我不确定这看起来是否正确..
我的边界框是正确的,它打印为 -
[(-120.62405,-197.27795,-57.81021)|(147.17102,202.70493,42.185677)]
但getObject 总是返回数组中的(仅用于现在)对象,因此出现了问题。我觉得这是Ray
的一个问题,但我不确定所谓的是什么样的。
有什么建议吗?