変数・フラグの使い方

『インディゲームクリエイター Clickteam Fusion 2.5(以下CF2.5)』には『変数』と『フラグ』という、ゲーム作成に欠かせない2つの大事な機能があります。
今回は、その『変数』と『フラグ』について簡単ではありますが解説したいと思います。

■『変数』とは
まず『変数』についてですが、CF2.5には『カウンターオブジェクト』があるのは既にご存知でしょうか?『カウンター』は画面上に配置して、視覚的に数値情報を表示するためのオブジェクトです。イベントで数値を増減したり特定の値に変更したりすることができますよね。
『変数』というものも『可変できる数値』という意味で、『画面に表示されない、システムやオブジェクトが内部に持っているカウンター』と理解してもらえれば簡単です。もちろん、カウンターオブジェクトをつかって、変数の内容を取得すれば画面上に表示することも可能です。

変数には『オブジェクトが持っている変数』『グローバル変数』の2種類があります。

■オブジェクトの変数

アクティブオブジェクトを始めとした各々のオブジェクトが持っている変数のことです。オブジェクトのプロパティを表示して『値』タブがあれば、そのオブジェクトは変数を持っています。
プロパティからは、変数の初期値と、変数の名前を変更することができます。オブジェクトが持てる変数の数は無制限ですが、初期値や名前の設定ができるのは『変数 A』〰『変数 Z』までの26個までです。27番目以降の変数を利用する方法は、以前のブログ記事にて解説しております。

その下にある『可変文字列』は、変数と似た感じではありますが、変数が『数値』を格納するものであるのに対し、こちらは『文字列(テキスト)』を格納することができます。

■グローバル変数

『グローバル変数』はシステムが持っている変数です。『アプリケーションプロパティ』の『値』タブにあります。『グローバル』とは、『フレームを跨いでも内容が維持される』という意味です。フレームとは『ストーリーボードエディタ』で管理するアプリケーションの各場面のことです。例えば、フレーム1にてグローバル変数Aの値を100に変更すると、フレーム2や3に移っても内容はリセットされずに維持されます。プレイヤーのスコアやライフもフレームを跨いで維持されますが、それと同じような感覚で使用することができます。
『グローバル変数』『グローバル文字列』の数は無制限で、オブジェクトの変数と違って全ての初期値と名前をプロパティから変更することができます。

■変数の利用例:敵キャラに耐久力を設定する
変数の利用方法の一例として、敵キャラに耐久力を設定する方法をご紹介します。

敵の耐久力が1の場合は、プレイヤーの攻撃と敵が衝突した時に敵を破壊するようにすれば良いのですが、数回当てなければ倒せない敵を設定する場合は、変数を使用して耐久力を設定します。

– サンプルプログラム
cf25_blog_2014-12-28_enemylife.zip

1.耐久力用に変数を用意する

 

敵キャラのオブジェクトのプロパティで変数を追加し、名前を「耐久力」に変更

      します。また、

初期値には設定したい耐久力の値を入力

      します。今回は仮に3とします。

2.攻撃を当てた時に耐久力が減少するイベントを組む

プレイヤーの攻撃と敵が衝突した時にダメージとして敵の耐久力を減らすイベントを組みます。

敵キャラオブジェクトの『変数』→『減少する』アクションを選択し、変数の種類に『耐久力』を選択して、与えたいダメージの数を入力します。

3.敵の耐久力が0以下になったら敵を破壊する
敵を倒したことにするには、『敵の耐久力が0以下になった時』という条件を設定して敵オブジェクトを『破壊』します。
比較方法を『等しい(=)』ではなく『以下(<=)』にする理由は、プレイヤーの武器に攻撃力に違いのあるもの、例えば1ダメージを与える攻撃と2ダメージを与える攻撃の2種類が存在した場合に、敵の耐久力が0ピッタリではなくマイナスになってしまうことがあるからです。

■変数・文字列の取得方法

変数や可変文字列を取得して、カウンターや文字列オブジェクトに表示したりして利用する場合は、数式エディタ下部のリストからオブジェクトを右クリックして、『値』を選択します。

数式には、『値を受け付ける数式』と『文字列を受け付ける数式』の2種類があり、入力するデータにも値と文字列があります
基本的に値を入力する数式に文字列を入力することはできませんし、その逆も然りですが、値を文字列扱いに、文字列を値扱いに変換する関数があり、それを使えば変数を文字列オブジェクトに表示することなどが可能です。
『Val』が文字列を数値扱いに変換する関数、『Str$』関数が値を文字列扱いに変換する関数です。数式エディタ内の各ボタンをクリックして関数を挿入し、括弧内に変換したい変数もしくは可変文字列を入れます。
『グローバル変数』および『グローバル文字列』を取得する場合は、数式エディタ下部の一番左の『特別』を右クリックし、『グローバル変数を読み出し』『グローバル文字列を読み出し』を選択します。

■『フラグ』とは

『フラグ』とは、『有効(ON)』と『無効(OFF)』の2種類の状態で、オブジェクトの状態を定義することができる機能です。
簡単に言えば、『0と1にしか変化しない変数』だと思ってください。実際、数式でフラグの状態を取得すると、無効時は0、有効時は1が返ってきます。

↑フラグの状態を取得する関数。中身にはフラグの番号を入力。

■フラグの仕様
1つのオブジェクトが持てるフラグの数は0〰31までの32個です。数式では32番以降の数字も入力できますが、例えば32番を指定すると実際の動作では0番のフラグが操作されてしまいます。同様に33番だと1番が、34番だと2番のフラグが操作され、64番でまた0番になる、という仕様があります。ですので、フラグに番号は0〰31の間でだけ指定するようにして下さい。

■フラグの『切り替え』アクションについて
先程、『フラグは0と1にしか変化しない変数』と説明しましたが、それなら変数でも0と1だけを使えばフラグと同じことができます。前述のようにフラグの数には限りがあるので、無限に使える変数をフラグ代わりにするのも勿論アリです。しかし、フラグには変数には無い機能として『切り替え』があります。
『切り替え』を実行すると、指定したフラグの状態を反転させることができます。フラグが無効の時に切り替えると有効に、有効の時に切り替えると無効に変わります。これを使用して、例えば、プレイヤーが触れるとON/OFFが切り替わるスイッチのような動作を組みたい場合、『プレイヤーとスイッチが衝突したときにスイッチのフラグを切り替え』というイベントを組めば、これ1つでプレイヤーがスイッチに衝突する度にフラグの状態が切り替わるようになるので、フラグをONにするイベント、OFFにするイベントの2つ用意する必要がありません。

1 thought on “変数・フラグの使い方

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.