ゲーム内に、既に実行が開始された後に追加のアクションをキューに入れたいノードがあります。これは可能性さえありますか?
4 に答える
進行中にシーケンスを変更できるとは思いませんが、「CCCallXYZ」アクションを追加して、オブジェクトのアクションの新しいシーケンスを定義するなど、任意のアクションを実行できるクラスメソッドを「ワンショット」スケジュールすることができます。タイミングと制御は難しいかもしれません:)
はい、可能です。CCSequence (シーケンスで実行される一連のアクション) と CCSpawn (シーケンスを使用する場合に特に役立つ、新しいアクションの生成) を調べます。
唯一してはいけないことは、同じ種類の 2 つのアクションを同時に実行することです。たとえば、複数の CCMove* または CCTint* アクション。これは、互いの変更を上書きし、奇妙な動作につながるためです。
明確にしていただけますか?すでにアクションを実行しているスプライトにアクションを追加できます。後でアクションを実行する場合は、scheduleOnce を使用できます。これにより、指定された期間の後にメソッドを実行できます。
単なるアイデアで、まだ試していません。CCSequence を最後のアクションとしてビルドすると、CCCallBlock がブロック内に配置され、実行時に追加のアクションを取得するためのメカニズムがブロック内に作成されます。私はここでオンザフライで疑似コードを書いています。アクションとしてのブロック追加は次のようになります。
{
CCSequence *additionalActions = [MyRuntimeActionClass getAdditionalActionsForObject:spriteRunningTheAction];
if(additionalActions)
[spriteRunningTheAction runAction:additionalActions]
}
オブジェクトの追加のアクションを保存している場合は、シーケンスを取得して実行します。additionalActions は、実行するオブジェクトのアドレス (spriteRunningTheAction) をキーに、追加する CCSequence の値を持つ Dictionary を格納できます。