特性定義 リファレンス ○ 概要  特性定義ファイルでは、ステージ中に出現させるオブジェクトの挙動を定義します。 ここで定義するものは、オブジェクトの設計図であり、オブジェクトそのものでは ない点に注意してください。 オブジェクト指向言語における「クラス定義」と 似たようなものであると考えて、だいたい間違いありません。  キャラクタの特性は、&Define 系のコマンドの内側に定義を記述します。 &Define系 コマンドの外で特性定義用のコマンドを記述するとエラーになります。 ○ リファレンス ---------------------------------------------------------------------- 【記述】 &SetDimension 【パラメータ】 デフォルトの次数 【解説】 定義ファイル中で用いるデフォルトの次数を設定します。 特性定義においては、様々な場面で次数を定義することがありますが、 その記述を省略したときに適用されるデフォルト値を設定します。 なお、デフォルトの次数のデフォルト値は 2 です。 このコマンドは、&Define系コマンドの外にも記述できます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &DefineJiki( , , , ){ ... } &DefineEnemy( , , , ){ ... } &DefineGRP( , , , ){ ... } &DefineShot( , , , ){ ... } &DefineExp( , , , ){ ... } &DefinePiece( , , , ){ ... } &DefineEneShot( , , , ){ ... } &DefineESP( , , , ){ ... } &DefinePlette( , , , ){ ... } &DefineItem( , , , ){ ... } &DefineNumber( , , , ){ ... } &DefineRString( , , , ){ ... } 【パラメータ】 オブジェクトの特性名 移動パターン配列の本数 パラメータ配列の本数 描画パターン配列の本数 【解説】 各オブジェクトの特性定義をします。 定義の内容は、ブレース内に記述します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】※必須 &InstanceDimension( ) 【パラメータ】 オブジェクトの次数 【解説】 オブジェクトの次数を定義します。 オブジェクトの次数とは、 オブジェクトの座標を取り扱うときに使用可能な方向軸の数です。 ステージ中にオブジェクトを出現させるとき、オブジェクトは ここで定義した次数で初期化されます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &Axis( ,,..., ) 【パラメータ】 軸を表す文字列 X : X軸 Y : Y軸 Z : Z軸 RX : X軸まわりの回転 RY : Y軸まわりの回転 RZ : Z軸まわりの回転 【解説】 特性定義で座標指定などをするときに定義するのは、ユーザーが 指定した次数を持ったベクタです。 このコマンドでは、ベクタの各要素が空間上のどの軸に対する値なのか を指定します。 たとえば、ベクタの最初の要素はX座標、次の要素がY座標を表す といった情報を設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SetClipArea( , ),( , ) 【パラメータ】 クリッピングエリア左上の点のX座標 クリッピングエリア左上の点のY座標 クリッピングエリア右下の点のX座標 クリッピングエリア右下の点のY座標 【解説】 キャラクタに対してクリッピングエリアを設定します。 クリッピングエリアを設定すると、キャラクタがクリッピングエリアを 外れたとき、自動的に存在が抹消されるようになります。 必須項目ではありませんが、オブジェクトの削除漏れを防ぐため、 なるべく設定しておくようにしてください。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SetHitArea( , ) , ( , ) 【パラメータ】 あたり判定領域左上の点のX座標 あたり判定領域左上の点のY座標 あたり判定領域右下の点のX座標 あたり判定領域右下の点のY座標 【解説】 キャラクタに当たり判定領域を設定します。 あたり判定は、領域を設定しただけでは機能しません。 特性として &UseHitArea で TRUE を設定するか、もしくは ゲーム中に当たり判定を有効化するコマンドを使用して、はじめて 機能するようになります。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &UseInput 【パラメータ】 入力許可/不許可のフラグ。 TRUE:入力許可 FALSE:入力不許可 【解説】 そのキャラクタが、ジョイスティックやキーボードからの入力を 受け付けるか否かを設定します。 デフォルトは FALSE です。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &UseHitArea 【パラメータ】 あたり判定を有効にするか否か TRUE:有効 FALSE:無効 【解説】 あたり判定を有効にするか否かを設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &UseOwner 【パラメータ】 オーナー情報を使用するか否か TRUE:使用する FALSE:使用しない 【解説】 オブジェクトのオーナー情報を使用するか否かを指定します。 オーナー情報を使うことにより、自分のオブジェクトの出現もと (自機弾に対する自機など)のオブジェクトとの関連性を 取り扱えるようになります。 この機能は未実装であるため、このコマンドで値を設定しても 機能しません。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &AddHitTarget( , , , ) 【パラメータ】 あたり判定の効果対象の種別 以下のいずれかの文字列を指定します。 自機 :JIKI 敵 :ENEMY GRP :GRP 自機弾 :SHOT 爆発 :EXP 破片 :PIECE 敵弾 :ENESHOT ESP :ESP ヒットしたとき、相手に与えるダメージ量 ヒットしたとき、自分に対して実行するコマンドセット 省略可能。 対象のあたり判定有効/無効フラグを無視して処理します。 【解説】 あたり判定が有効なキャラクタ同士が接触したときの挙動を定義します。 このコマンドで当たり判定の対象を定義すると、オブジェクトが のキャラクタに接触したとき、相手にだけのダメージを 与えるようになります。(相手のオブジェクトは、シールド量がだけ 減少します。) また、接触すると同時にで指定されたコマンドセットを 実行します。 このコマンドは、ひとつの特性に対し、複数行設定することが できます。たとえば、敵と敵弾に対して当たり判定を有効にしたい場合は、 が ENEMY と ENESHOT の2種類を定義します。 あたり判定の対象により、相手に与えるダメージ量と自分の挙動を 別々に定義できますので、敵に対する挙動と、敵弾に対する挙動を全く 別の動きにすることもできます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SetShield( ) 【パラメータ】 出現初期のシールド量 【解説】 オブジェクトが持つ、初期のシールド量を設定します。 シールド量は、あたり判定で衝突が発生したとき、相手側が &AddHitTarget で定義した の量だけ減少します。 シールド量が0を切ると、オブジェクトは &OnDestroy で定義した コマンドセットを実行します。 &OnDestroy を定義しないと何も実行されませんが、イベントのトリガ 自体は、常に発生することになります。ですから、シールド量が 0未満の挙動を定義しない場合は、を必ず 1 以上にしておく ようにすることをお勧めします。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SetScore( ) 【パラメータ】 スコア値 【解説】 破壊されたときのスコア加算値を設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SetScoreRatio( ) 【パラメータ】 加算スコアにかかる倍率 【解説】 オブジェクトが破壊されたときに加算されるスコア値(&SetScoreの設定値) にかける値を設定します。 値のタイプ RATEDSCORE を指定したときに使用されます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &Move( ){ ... } &Param( ){ ... } &Draw( ){ ... } [ブレース内部] &Move( ){ DIMENSION = MODE = DEPENDS = ( , , ) CENTERINDEX = MININDEX = MAXINDEX = VALUES = { [ ] , ( , , ) , ( , , ) , ... } } 【パラメータ】 配列のライン番号 ブレース内で定義するベクタの次数 値の更新モード IMMEDIATE : 記述されている値を即値として使用する VECTOR : 記述されている値を相対変化量として使用する 関連項目 COUNT : キャラクタのカウンタによって値を変化させます。 INCREMENT : 増分(要するに1) PARAM(n) : n番目のパラメータの値によって値を変化させます。 演算計数 演算オペレータ = : 値を代入する + : 値を加算する 配列上での、配列ポインタの中央インデックス 配列ポインタの移動範囲の最小インデックス 配列ポインタの移動範囲の最大インデックス 配列中の埋め込みコマンド MARK( ) : 配列にマークをセットします。 JUMP( ) : セットしたマークに配列ポインタを 移動させます。 CHANGELINE( , ) : 配列ポインタが載っている配列のラインを 変更します。 は TRUE/FALSE で 指定します。 DISAPPEAR : オブジェクトを消滅させます。 配列として登録するベクタの要素 要素の繰り返し回数 【解説】 &Move では、移動配列を定義します。 &Param では、パラメータ配列を定義します。 &Draw では、描画パターン配列を定義します。 各配列は、&Define系のコマンドで最初に定義した数だけ定義する 必要があります。 定義する配列のライン番号は、で指定します。 各定義の詳細は、続くブレースの内側で定義します。 [ブレース内の処理] ・DIMENSION DIMENSION では、それ以降に取り扱うベクタの次数をに 設定します。デフォルト値は、&SetDimension で記述した値になります。 インスタンスの次数と配列の次数が異なる場合のみ設定する必要があります。 ・MODE MODE では、配列に定義されている値をどのように扱うかを定義します。 に IMMEDIATE を指定すると、配列内の値を即値として使用します。 配列の要素を、位置や描画パターンのコード番号の値として、直接使用します。 に VECTOR を指定すると、配列内の値を相対変化量として使用します。 配列内の値を、現在設定されている値に加算します。 ・DEPENDS DEPENDS では、配列ポインタの移動方法特性を定義します。 配列のポインタは、が意味する項目に、の 計数をもっての演算を行った結果の位置にポイントされる ことになります。 には、移動のより所となるパラメータの種別を記述します。 に COUNT を使用すると、キャラクタのプロセスカウンタの 値を使用してポインタを移動させます。ただ、COUNTはひたすら大きく なるだけなので、 を指定しておかないと不正な動作をする 可能性があります。 に INCREMENT を使用すると、必ず「1」が評価されます。 これを + で演算すれば、1ずつ進むポインタが作れます。 通常、アニメーションの描画パターンポインタなどは、これを用いて 定義します。 に PARAM(n) を使用すると、パラメータ値を用いて 移動を制御できます。 で、の項目の値に対する 演算方法を定義します。 ・CENTERINDEX に、配列ポインタの移動基準点を設定します。 ・MAXINDEX ・MININDEX 配列ポインタの可動範囲を設定します。ここで値を設定すると、 配列ポインタは の間が可動範囲となります。 値を設定しなかった場合は、が 0 で、は 「とてもおおきな値」となります。 ・VALUES 配列の値を定義します。 VAUES={ ... } の、ブレース内に、配列の要素になるベクタを羅列します。 ここで定義するベクタは、( , , ) という形をとります。で定義した次数、もしくは デフォルトの次数の個数だけ、を記述します。 で定義した値が、配列の要素として使用されます。 スプライトのパターンを定義する場合は、( BMPのページ , SP番号 ) の 2次元ベクタ+カウント、グラフィックを定義する場合は ( GRPのページ番号 ) の1次元ベクタ+カウントを記述します。 には、その要素の繰り返し回数を記述します。 (1,1) , (1,1) , (1,1) , (2,2) , (2,2) という2次元ベクタの 配列を定義する場合は、(1,1,3) , (2,2,2) というように記述する ことになります。省略することはできませんので、繰り返しが無い場合 でも、1 を書いておく必要があります。 ベクタの値がパラメータを意味する場合は、ベクタは2次元でなければ なりません。このとき、ベクタの最初の要素はパラメータのインデックス 番号であり、ふたつめの要素はパラメータの値です。 については、- HARUNA - 側で回数ぶん展開され - SHIORI - に伝達されます。従って、ここで ( 1,1 , 100 ) と 記述すると、記述自体はひとつですが、- SHIORI - に渡される ベクタの個数は100個になります。無駄に繰り返し回数を大きくすると 無駄にメモリを消費することになりますので注意してください。 VALUESでは、埋め込みコマンドというものが定義できます。 これは、配列上の値を処理中に、特定のインデックスにきたときに 特定の処理を実行させるためのものです。 MARK( ) では、これを記述した位置にマークをセットします。 JUMP( ) では、でセットしたマーク位置へ 配列ポインタをジャンプさせます。 CHANGELINE( ) では、現在ポインタが載っているラインを、 で指定したラインに変更することができます。 なお、配列は定義しただけでは意味がありません。 &MovePointer,&ParamPointer,&DrawPointer を使って、配列ポインタを 追加することで、はじめて配列内の値を取り扱うことができるように なります。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &LoopMode( , ) 【パラメータ】 X方向を球面座標系にするか否か Y方向を球面座標系にするか否か 【解説】 GRPに対してのみ有効です。 , に TRUE を設定すると、その方向について 画像が球面座標系で表示されるようになります。 要するに、端と端が繋がって、画像が繰り返されます。 球面座標系にしたくない場合は FALSE を指定します。 デフォルト値は、両方とも FALSE です。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &MovePointer( , ) &ParamPointer( , ) &DrawPointer( , ) 【パラメータ】 各配列のライン番号 配列ポインタが指す配列上の値が何を意味するか POS :座標値 VEL :速度 ACC :加速度 PATTERN :描画パターン ※Parameterポインタのみ PARAM : パラメータ値 ※Drawポインタのみ LAYER :描画レイヤー CHARMATRIX:文字マトリクス 【解説】 配列ポインタを設定します。 配列ポインタは、必要な数だけ自由に 追加することができます。 このコマンドでは、番目の配列を、の値であるとして 取り扱うような配列ポインタを追加します。 このコマンドで配列ポインタを定義することによって、はじめて 配列の値は意味を持つことができます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &AddParam( ){ INITIAL = MAX = MIN = } 【パラメータ】 パラメータにつける名前 追加するパラメータの初期値 パラメータの最大値 パラメータの最小値 【解説】 特性にパラメータを追加します。追加する際に、同時にオブジェクト 生成時の初期値を設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &DrawPriority( ) 【パラメータ】 描画プライオリティ 【解説】 オブジェクトがスレイブオブジェクトを持っているとき、その描画 優先順位を設定します。 本体の表示は、スロット番号が -1 番のスレイブと、 番のスレイブの間に行われます。 には、スロット数以上の値を記述しないようにしてください。 不正な処理を引きおこす原因となります。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SlaveMax( ) 【パラメータ】 スレイブのスロット数 【解説】 スレイブのスロット数を定義します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &Slave{ SLOT = DIMENSION = TYPE = OBJECT = OFFSET = ( ,, ... , ) } 【パラメータ】 スロット番号 オフセットの次数 オブジェクトの種別 以下のいずれかの文字列を指定します。 自機 :JIKI 敵 :ENEMY GRP :GRP 自機弾 :SHOT 爆発 :EXP 破片 :PIECE 敵弾 :ENESHOT ESP :ESP アイテム:ITEM 数値  :NUMBER 文字列 :RSTRING スレイブにするオブジェクトの特性名 オフセットを定義するベクタの要素 【解説】 オブジェクトがスレイブオブジェクトを持つように定義します。 オブジェクトは、出現と同時に のスロットに、で 定義されたオブジェクトをスレイブとして作成します。 出現初期の局所座標は OFFSET で指定した位置になります。 OFFSETとして定義するベクタの次数はで定義した次数か、 定義されていなければデフォルトの次数になります。 ※ で定義するオブジェクトは、&Slave を持つ特性より  前で定義されている必要があります。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &SlaveRelation ( , ) , ( , ) , ( , ) 【パラメータ】 スレイブ側の関連対象 POSITION VELOCITY ACCEL THETA スレイブ側の関連項目 X Y Z マスター側の関連対象 マスター側の関連項目 演算子 = : 直接代入する + : 足し算する 演算時の計数 【解説】 スレイブとマスターの関連づけを行います。 このコマンドで関連づけがされない場合は、マスターとスレイブに 挙動の主従関係は無いことになります。(存在自体の関連性はあります) このコマンドは、定義した特性を持ったオブジェクトが、マスターとなる オブジェクトを持っている場合のみ有効です。(自分がスレイブのとき のみ有効です。) このコマンドで関連を定義すると、オブジェクトの で指定される項目が、 で 指定される項目と関連づけられます。 関連づけは、マスター側の値に対して をかけたものを で指定した演算子で演算し、ソース側の値として代入する という方法で行われます。 関連項目 THETA については、は無視されます。 THETA は、常に Z 軸方向の回転角度値を示します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &AddComSet( ) 【パラメータ】 登録するコマンドセット名 【解説】 キャラクタにコマンドセットを登録します。 オブジェクトは、毎フレーム で指定したコマンドセットを 実行するようになります。 コマンドセットは、ひとつの特性に必要な個数だけ設定することが できます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &Attack{ MARK( ) , LOCK( , , ) , ( [inc COUNTINC], , PARAM( ) [inc DIRINC], [inc SPDINC] , [inc RATIOINC] , [inc XINC] , [inc YINC]) [for FORCOUNT] , ( [inc COUNTINC], , VALUE( ) [inc DIRINC], [inc SPDINC] , [inc RATIOINC] , [inc XINC] , [inc YINC]) [for FORCOUNT] , JUMP( ) , CAHNGELINE( ) } 【パラメータ】 マーク名 ターゲットとなるオブジェクトの種類 ターゲットとなるオブジェクトのインデックス番号 発射カウント 発射する敵弾の特性名 発射方向を格納するパラメータの名前 発射方向 発射速度 発射確率(0〜255 255で常に発射、0 で発射しない) 移動先ライン番号 敵弾の出現オフセット位置X 敵眼の出現オフセット位置Y COUNTINC カウント増分 DIRINC 方向増分 SPDINC 速度増分 RATIOINC 確率増分 XINC X増分 YINC Y増分 FORCOUNT 増分を加算しつつ定義する回数 【解説】 キャラクタに対して、敵弾の発射パターンを定義します。 発射情報については、以下の情報を設定します。 ・ 出現させるカウント。敵弾発射情報カーソルが この値になると発射シーケンスが起動します。 ・ 発射させる敵弾のタイプ ・PARAM( ) 発射方向。PARAM の場合は、指定した名前の  VALUE( ) パラメータに設定されている値を方向値として 使用します。 VALUE の場合は、指定された値をそのまま 方向値として使用します。 ・ 発射速度をピクセル単位で指定します。 ・ 発射確率を 0〜255 の範囲で指定します。 255 だと常に発射。0 だと発射しません。 ・ 敵弾の出現オフセット位置X ・ 敵弾の出現オフセット地位Y 定義する配列の中には、コマンドを入れ込むことができます。 ・MARK( ) 配列のその場所に という名前でマークをつけます。 JUMP コマンドの飛び先位置として使用します。 ・LOCK( , , ) で指定するオブジェクトの、番目の オブジェクトに向かう方向値を、 番目の パラメータに格納します。 ※にパラメータ名を格納できるようにするのは  今後の課題。 ・JUMP( ) 敵弾発射情報の処理カーソルを の位置に変更します。 ・CHANGELINE( ) 敵弾発射情報の処理カーソルを 番目の配列に 変更します。 変更と同時に、カーソル位置を先頭に戻します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &AttackPointer( , ) 【パラメータ】 カーソルを配置する配列のライン番号 カーソルの初期カウント 【解説】 敵弾情報に対して処理カーソルを配置します。 カーソルは、何もしなければ1フレームで1カウントずつ インクリメントされます。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &OnDamage( ) 【パラメータ】 設定するコマンドセット名 【解説】 あたり判定で衝突が発生したときに駆動するコマンドセットを設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &OnDestroy( ) 【パラメータ】 設定するコマンドセット名 【解説】 シールド量が0を切ったときに駆動するコマンドセットを設定します。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &InitialNumber{ SUBJECT = INDEX = COEFFICIENT = DIMENSION = SPACING = ( , , ... , ) } 【パラメータ】 設定する値の項目 POS 位置 VEL 速度 ACC 加速度 PARAM パラメータ MOVEPOINTER 移動配列ポインタ PARAMPOINTER パラメータ配列ポインタ DRAWPOINTER 描画配列ポインタ SHIELD シールド量 ※不要 COUNT カウント ※不要 JIKILEFT 自機の残機数 ※不要 COUNTSTOP スコアのカウントストップ値 ※不要 SCORE スコア ※不要 HIGHSCORE ハイスコア ※不要 SYSTEMVAR システム変数 設定する項目のインデックス番号 によっては不要 係数 スペーシングの次数 スペーシングを表すベクタ 【解説】 数値特性専用のコマンド。他の特性で使用してはいけません。 数値の初期値を設定します。設定される初期値は、 の項目の 番目の値に対して、 倍した値になります。 場合によっては、は不要です。 表示するときの、文字ごとのスペーシングを に指定します。 基本的にはデフォルトの次数と同じになりますが、 で 明示的に示すこともできます。 ※数値特性を定義するときは、必ずこのコマンドを記述してください。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &NumberColumns{ COLUMNS = FILLZERO = } 【パラメータ】 表示桁数 最上位桁まで0で埋めるか否か TRUE : 埋める FALSE: 埋めない 【解説】 数値オブジェクト専用のコマンド。他の特性で使用してはいけません。 数値の表示条件を設定します。 で、表示桁数を指定できます。デフォルトは 10 です。 を TRUE にすると、数値が先頭まで0で埋められます。 たとえば、表示10桁で、値が100の場合、表示は '0000000100' と なります。FALSEの場合は ' 100' です。 ※数値特性を定義するときは、必ずこのコマンドを記述してください。 ---------------------------------------------------------------------- ---------------------------------------------------------------------- 【記述】 &InitialString{ STRING = DIMENSION = SPACING = ( , , ... , ) } 【パラメータ】 設定する文字列 スペーシングの次数 スペーシングを表すベクタ 【解説】 英字文字列特性専用のコマンド。他の特性で使用してはいけません。 このコマンドで、英字文字列の初期の文字列を設定できます。 は、ASCII コード 0x20 〜 0x7F までの値で表現された 文字列でなければなりません。 また、それに対応したスプライトを先頭に持ったビットマップが必要です。 ※英字文字列特性を定義するときは、必ずこのコマンドを記述してください。 ----------------------------------------------------------------------