Rotation渐变,物体z的厚度会变成卡片效果。

v1.2.0

public look(target: Vec3) {
let q_tmp: Quat = this.lookRotation(target);
tween(this.node)
.to(0.8, { rotation: q_tmp })
.start()
}

public lookRotation(target: Vec3) {
    const dir = target.clone().subtract(this.node.getWorldPosition()).normalize();
    const q_tmp = new Quat()
    Quat.rotationTo(q_tmp, v3(0, 0, 1), dir)
    return q_tmp;
}

一个递归,让人物沿指定点运动,look方法调整人物朝向,
private follow(points: Array): void {
this.animation.play(“walk");
let self = this;
let fun = function () {
if (0 === points.length) {
return;
}

        let to: Vec3 = points.shift();
        self.look(to);  
        tween(self.node)
            .to(1, { position: to },
                {
                    onComplete: () => {
                            self.dopatrol(); //生成points,调用follow方法
                        } else {
                            fun();
                        }
                    }
                })
            .start();
    }
    fun();
}

正常漫游,是这样的:

偶尔会变成这样,这只是个中间态,像个卡片。没有scale设置,会是啥原因啊?

rotation肯定不能用tween直接变化啊,最简单的你在position的变化里面onUpdate来做rotation的变化,不要两个tween分开来执行。不过我也没确定Quat的tween是不是直接是用了插值来算,看你的表现是类似的问题。简单点的话应该用欧拉角来做,Quat插值应该是要你实现的,简单两个Quat引擎也不知道你是绕着哪个轴旋转的。