首页 > 解决方案 > 如何在 Libgdx java 中拖动 3d 对象?

问题描述

我试图通过覆盖 touchDragged 函数来调用 3D 立方体。我已经找到了如何在 XZ 平面上拖动对象,但我不知道如何在 3D 中拖动对象。

@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
    if (selecting < 0)
        return false;
    if (selected == selecting) {
        Ray ray = cam.getPickRay(screenX, screenY);
        final float distanceY = -ray.origin.y / ray.direction.y;
        final float distanceX = -ray.origin.x / ray.direction.x;
        final float distanceZ = -ray.origin.z / ray.direction.z;
        final float distance;
        if (oldRay!=null){
            float absDifferenceX = Math.abs(ray.direction.x-oldRay.direction.x);
            float absDifferenceY = Math.abs(ray.direction.y-oldRay.direction.y);
            float absDifferenceZ = Math.abs(ray.direction.z-oldRay.direction.z);
            float minAbsDifference =  Math.min(Math.min(absDifferenceX,absDifferenceY),absDifferenceZ);
            if (minAbsDifference == absDifferenceX ){
                distance = distanceX;
            }else if (minAbsDifference == absDifferenceY){
                distance = distanceY;
            }else{
                distance = distanceZ;
            }
        }else{
            distance = (distanceX+distanceY+distanceZ)/3.0f;
        }

        position.set(ray.direction).scl(distance).add(ray.origin);
        objects.get(selected).transform.setTranslation(position);
        oldRay = ray;
    }

    return true;
}

标签: javaandroid3dlibgdx

解决方案


推荐阅读