Tween Behavior Issue After Update to Version 3.8.7

After updating to Cocos Creator version 3.8.7, we’ve encountered a regression in how tween behaves when targeting inactive nodes.

In previous versions, tweens would still execute even if the target node was active = false, which allowed us to run delayed logic like the following:

node.active = false;
tween(node)
.delay(0.25)
.call(() => {
node.active = true;
})
.start();

This behavior was critical to our animation flow and worked perfectly in prior versions. However, as of 3.8.7, it appears that if the node is inactive when the tween starts, the tween does not run at all, breaking all related logic across our project.

This change has caused significant issues and broken many existing systems that rely on tween-based activation sequences.

We’d like to ask:

  1. Is this an intentional change in 3.8.7?
  2. If yes, could you please point us to the related changelog or documentation?
  3. If not, we believe this is a bug and would appreciate it being addressed as soon as possible.

Thank you for your support, and we look forward to your guidance.

We appreciate your continued work on improving the engine.

1 Like

Pls note that the behavior you mention, has already discussed in the topic of 引擎从3.8.3升级到3.8.6后,tween缓动细节差异导致bug - Creator 3.x - Cocos中文社区

If the target of the tweet is Node, then the pause, resume, and destroy states of the tweet need to be associated with Node. I think the behavior of Creator 2. x is reasonable, otherwise users would need to manage various states of their own Tween. If a node is in a disabled state with active set to false, it is illogical for its properties to continue to be updated by TweenSystem. So in v3.8.4, we made this optimization to maintain consistency with Creator 2. x.

The Release Note v3.8.4 states this:

Considering that there are still some users who may not want Tween to associate with Node status, we plan to add an interface in 3.8.7 for users to close this association. See:

Thank you for your response.

I believe this behavior should be explicitly exposed as an engine macro setting.

This feature has a critical impact on how tween-based logic functions across projects, and changes to it can easily cause widespread unintended side effects if not properly controlled.

Making it configurable via a clearly named engine macro would allow developers to opt in or out intentionally, depending on the version or project needs.

Thanks again for your continued support.

yes good post, loved to read about it, will come again soon to get the updated news

Hi @Tom_k , custom enginge like this ?


To custom engine(3.8.6) is to solve issue in order to output ACB result as the same as result in 3.8.3.
For you, pls just merge the changed files in PR.

Hi @Tom_k , im using cocos 3.8.7 not 3.8.6. i dont want to use bindNodeState(false) in tween ( too much code tween) , so i think i should custom engine like this


element.paused, it’s used for pause the action while the target is not active. I think you are right & I have never tried this before, you can have a try.