【问题标题】:Rotate transform to point to vector旋转变换以指向矢量
【发布时间】:2017-01-03 16:43:36
【问题描述】:

我正在使用 libgdx 框架。我有一个字符模型实例和一个 Vector3 对象数组。字符 modelInstance 在数组中的每个 Vector3 对象之间进行转换。我遇到的问题是旋转模型实例以指向它正在移动的向量。曾经怎么可能做到这一点?下面是我移动模型实例的工作代码(这个方法在每个渲染周期被调用,而 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;
            }

        }

    }

【问题讨论】:

    标签: 3d libgdx


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多