Actionに他のターゲットのアクションを混ぜて実行する

Cocos2d-xで、例えば
スプライト1を指定の座標に移動

スプライト2を指定の座標に移動

スプライト1をフェードアウト
のように、他のターゲットのActionを混ぜて実行する方法のメモ。

今回使用したバージョン

  • Cocos2d-x 3.2

そんなに難しくなく、runActionを実行する以外のノードではTargetedActionを使うだけでいけそうです。
たとえば上の例であれば

	sprite1->runAction(Sequence::create(MoveTo::create(0.5f,Vec2(100,100)),
										TargetedAction::create(sprite2,MoveTo::create(0.5f,Vec2(200,200))),
										FadeIn::create(0.5f),
										NULL));

CallFuncNなどを使った処理もできます。

	sprite1->runAction(Sequence::create(TargetedAction::create(sprite2, FadeTo::create(0.5f,100)),
									 CallFunc::create([&]()
										{
											// なにか処理を実行
										}),
									 DelayTime::create(1.5f),
									 TargetedAction::create(sprite2, FadeOut::create(0.5f)),
									 TargetedAction::create(sprite2,CallFuncN::create([](Node *n)
										{
											n->removeFromParentAndCleanup(true);
										})),
									 NULL));