旋转变换以指向矢量

时间:2017-01-03 16:43:37

标签: 3d libgdx

我正在使用libgdx框架。我有一个character modelInstance和一个Vector3对象数组。字符modelInstance正在数组中的每个Vector3对象之间进行转换。我遇到的问题是将modelInstance旋转到指向它正朝向的向量。怎么可能一次完成这个?下面是我移动模型实例的工作代码(此方法在每个渲染周期调用,而isMoving属性等于true):

public void move(float delta){

        Vector3 start = new Vector3();
        modelInstance.transform.getTranslation(start);

        Vector3 end = pathVectors.get(0);

        float distance = start.dst(end);
        Vector3 direction = new Vector3(end);
        direction.sub(start).nor();

        modelInstance.transform.trn(direction.x * moveSpeed * delta, direction.y * moveSpeed * delta, direction.z * moveSpeed * delta);

        Vector3 currentPosition = new Vector3();
        modelInstance.transform.getTranslation(currentPosition);

        if(start.dst(currentPosition) >= distance){

            modelInstance.transform.setTranslation(end);

            pathVectors.remove(0);
            if(pathVectors.isEmpty()){
                isMoving = false;
            }

        }

    }

1 个答案:

答案 0 :(得分:0)

如果您只是想改变模型的方向,那么我建议您查看this question on StackOverflow。忽略他用手机做的事情,它显示了如何改变旋转。

如果您试图让轮换更加渐进,您可能需要查看Vector3#lerp()Vector3#slerp()Vector3#interpolate(),所有这些都可以让您在模型的当前方向和代码中定义的direction之间逐步旋转模型。