请教节点角度旋转,遥感如何控制节点匀速旋转。

大佬们,我模拟一个遥感,一个圆的Node, 监听 TouchMove 事件。
遥感Node的TouchMove处理代码,

onTouchMove(event) {
    let location = this.node.convertToNodeSpaceAR(event.getLocation());
    // 算出旋转的弧度
    this.radians = Math.atan2(location.y, location.x);
    // 将弧度转换成角度
    this.rotation = -this.radians * 180 / Math.PI;
    // ...省略处理滑动的偏移量等。
}

通过上面的函数,已知滑动的角度。

有一个可旋转360度的炮台Node, 如何通过角度 匀速的旋转炮台呢?

现在是炮台Node.rotation = 遥感得出角度;
但是这样,控制遥感的速度越快,炮台旋转的都飞起来了。

如何才能匀速控制炮台旋转呢?
请教大佬们。

我思考,是不是可以通过 runAction(cc.rotateTo(秒,角度)) 这种去控制。 但是动作在执行中改变角度怎么办。。。

stop掉原来的,重新action,时间用固定的算法比如设置速度是a度/秒,需要旋转b度,那时间就是b/a

在update中修改 角度的。

update(dt) {
    let rotateSpeed = 400 * Math.PI;
    let rotateDuration = Math.abs(遥感角度 * (1 / rotateSpeed));
    if (this.rotateAction) {
        this.node.stopAction(this.rotateAction);
    }
    this.rotateAction = cc.rotateTo(rotateDuration, rotation);
    this.node.runAction(this.rotateAction);
}

这样修改角度,会混乱。。 我现在思路也好混乱了。。。

本雷锋在给你写了,等一会。。。

限制转速最大值,再来个惯性效果

做好了。。。应该满足你的需求

angle.rar (594.1 KB)

今天开始你就是我大哥,谢谢大哥。