Как перетащить 3D-объект в Libgdx Java? - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь перетащить куб в 3D, вызвав переопределенную функцию touchDragged. Я нашел, как перетащить объект на плоскости 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;
}
...