一般に、オブジェクトに対してアクションを実行したくありません。たとえば、8 つのインスタンス (0、1、2、3、4、5、6、7) があります。2、5、および 7 に対してのみアクションを実行する必要があります。例どのように??
1 に答える
これは、Construct 2 がソフトウェア エンジニアリングのバックグラウンドから来ていることについて、私を本当に混乱させたものです。
スプライトのどのインスタンスを有効にするかを選択することは、データベースをフィルタリングするようなものです。リスト内のすべてのインスタンスから始めて、条件を使用してそれらを除外します。可能であれば、Construct 2 は必要なインスタンスを自動的に推測します。(EnemySpawn で Enemy をスポーンした場合と同様に、次に参照する Enemy が最後に作成されたものであることがわかります)。
ほとんどの場合、これは魔法のように機能しますが、次のいくつかの条件でオブジェクトのセットを選択できます。
インスタンス変数 の比較 オブジェクトのインスタンス変数の 1 つの現在の値を比較します。
Is boolean instance variable set オブジェクトの boolean インスタンス変数の 1 つが true に設定されているかどうかをテストします。(条件を反転して、false かどうかをテストします。)
一意の ID (UID) で選択 特定の一意の ID (UID) 番号に一致するインスタンスを選択します。
私の経験では、インスタンス変数を追加して、スプライトのサブセットまたはスプライトの状態を追跡するように設定することは、アクションを特定のスプライト グループに制限する最もクリーンな方法です。
Scirra マニュアルのオブジェクト式も参照してください。
0 から始まるオブジェクト インデックスを追加して、さまざまなオブジェクト インスタンスから式を取得できます。たとえば、Sprite(0).X は最初の Sprite インスタンスの X 位置を取得し、Sprite(1).X は 2 番目のインスタンスの X 位置を取得します。詳細については、共通機能のインデックス ID (IID) を参照してください。インデックスに別の式を渡すこともできます。負の数は反対側から始まるため、Sprite(-1).X は最後のスプライトの X 位置を取得します。
これらは「特定の」オブジェクト ID (コンストラクト 2 ではインデックス ID または IID と呼ばれます) ではなく、作成された順序でそのタイプのすべてのオブジェクトを参照します。
つまり
Enemy(0)
、最初
Enemy(-1)
のものは最新の
Enemy(5)
ものであり、作成された 6 番目の敵であり、破壊されたスプライトは無視されます (以下を参照)。
ただし、IID 3 のオブジェクトを破棄すると、それ以降のすべてのオブジェクトがリスト内で移動し、それらの IID が 1 つ減少することに注意してください。(LinkedList データ構造のように)
インスタンス D を破壊すると、他のインスタンスがシフトします
Instance |A|B|C|D|E|F| --> |A|B|C|E|F|
IID |0|1|2|3|4|5| --> |0|1|2|3|4|
これらの方法の 1 つが、必要なものを手に入れるのに役立つことを願っています。