我正在使用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;
}
}
}
答案 0 :(得分:0)
如果您只是想改变模型的方向,那么我建议您查看this question on StackOverflow。忽略他用手机做的事情,它显示了如何改变旋转。
如果您试图让轮换更加渐进,您可能需要查看Vector3#lerp()
,Vector3#slerp()
或Vector3#interpolate()
,所有这些都可以让您在模型的当前方向和代码中定义的direction
之间逐步旋转模型。