LibGDX BoundingBox + pickRay问题

时间:2016-01-15 12:25:32

标签: java libgdx

我一直在关注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的一个问题,但我不确定所谓的是什么样的。

有什么建议吗?

0 个答案:

没有答案