adoの日記

全員に公開(未登録会員含む)

2017年
09月28日
00:38

【10/23更新】モンスターのProjectiles(弾)の作り方

今回はモンスターを作る上でかなり重要なことについて書きます。
ShootのBehaviorを設定する上で必要不可欠です。

※9/30 projectile要素の説明にAmplitude、Frequency、Parametric、Wavyタグに関する説明の記述漏れがあったので加筆
※10/23 Magnitude、Boomerang、FaceDirタグに関する説明を加筆

--------

まず、弾のテクスチャを設定する上で必要なことについて説明します。
弾のテクスチャを設定するために、classがProjectileのオブジェクトを作成しなければなりません。
また、要素はモンスターのXML要素の中に入れずに独立させてください。

<Object type="0x001a" id="Yellow Star">
<Class>Projectile</Class>
<Texture><File>lofiObj</File><Index>0x76</Index></Texture>
<Rotation>100</Rotation>
<AngleCorrection>0</AngleCorrection>
</Object>


<Object type="0x001a" id="Yellow Star">
typeはナンバーです。ポ○モンの図鑑ナンバーみたいな感じです。
idはテクスチャの名前です。ポケ○ンの名前みたいな感じです。
typeもidもどちらも他のテクスチャと被らないように設定しなければなりません。

<Class>Projectile</Class>
このオブジェクトの種類です。
Projectileと書かれているのでこのオブジェクトは弾のテクスチャだとシステム上で分類されます。

<Texture><File>lofiObj</File><Index>0x76</Index></Texture>
スプライトのファイル名とスプライトの位置です。
Fileタグで挟まれている部分はスプライトシートのファイル名で、この場合はlofiObjという名前のファイルがスプライトシートとして使用されます。
<strike>名前の後ろに16x8もしくは16x16と書くと(例:lofiObj16x16)16x8用もしくは16x16用のスプライトシートとして判断されるようになります。</strike>
※憶測で書いているので誤っている可能性あり。

Indexタグで挟まれている部分は、スプライトシートから切り抜く場所を示しています。
0xYX(16進)と書かれている場合、左からXマス目、上からYマス目の部分をテクスチャとして使用します。
Zと整数で書かれている場合、左から順にZマス目のマスをテクスチャとして使用します。

左:16進で記述した場合 右:10進で記述した場合

<Rotation>100</Rotation>
テクスチャの回転速度。
値を大きくすればするほど速く回転するようになります。

<AngleCorrection>0</AngleCorrection>
先端が右に向いているスプライトをテクスチャとして設定する場合は0にしてください。
先端が右斜め上に向いているスプライトをテクスチャとして設定する場合は1にしてください。

--------

次は本格的に弾の威力や速度などを設定していきます。
これは弾を設定したいモンスターのXML要素の中に入れてください。

<Projectile id="0">
<ObjectId>Yellow Star</ObjectId>
<Damage>120</Damage>
<Speed>35</Speed>
<LifetimeMS>6000</LifetimeMS>
<Amplitude>0.5</Amplitude>
<Frequency>2</Frequency>
<Size>150</Size>
<ConditionEffect duration="3.5">Quiet</ConditionEffect>
<MultiHit/>
<Parametric/>
<PassesCover/>
<Magnitude>2.0</Magnitude>
<Wavy/>
<ArmorPiercing/>
<Boomerang/>
<FaceDir/>
</Projectile>


<Projectile id="0">
IDです。
ショットに番号を振ります。ShootBehaviorでいろいろ設定する際にここで設定した番号を書くことになります。

<ObjectId>Yellow Star</ObjectId>
設定するテクスチャのIDです。

<Damage>120</Damage>
ショットのダメージです。
振れ幅をつけたい場合、以下のタグを代わりに記述してください。
<MinDamage>最小ダメージ</MinDamage>
<MaxDamage>最大ダメージ</MaxDamage>

<Speed>35</Speed>
ショットの速度です。
10で1秒につき1タイル進みます。

<LifetimeMS>6000</LifetimeMS>
ショットが残り続ける時間です。
単位はミリ秒です。

<Amplitude>0.5</Amplitude>
ショットの振幅です。
0より大きくすることでショットが正弦波状に飛ぶようになります。

<Frequency>2</Frequency>
波の周期です。
ショットが何周期分揺れるかを示します。

<Size>150</Size>
テクスチャの大きさです。
標準サイズは100です。

<ConditionEffect duration="3.5">Quiet</ConditionEffect>
ショットによって付与されるステータスエフェクトです。
duration属性にはエフェクトの効果時間を実数で書いてください。単位は秒です。
付与したいステータスの内容をConditionEffectタグで挟み込んでください。
タグを複数記述することで効果を複数付けることが出来ます。

<MultiHit/>
これを記述するとショットがキャラクターを貫通するようになります。

<Parametric/>
これを記述すると軌道がBulwarkと同じになります。
ショットの速度はSpeedの数値ではなくLifetimeMSの数値によって変化します。
このタグとWavyタグ、Ampritudeタグがすべてが要素に含まれている場合、Parametricタグが優先され、WavyやAmpritudeタグの効果は無効になります

<Magnitude>2.0
Parametricタグを記述している場合、このタグでショットが半径何tileの円を描きながら飛ぶかを指定することができます。

<PassesCover/>
これを記述するとショットが障害物を貫通するようになります。

<Wavy/>
これを記述するとショットが進んでいくにつれて大きく揺れるように進むようになります。このタグとAmpritudeタグ両者が要素に含まれていた場合、Wavyタグが優先され、Ampritudeタグは無効になります

<ArmorPiercing/>
これを記述するとショットがキャラクターのDEFを無視するようになります。

<Boomerang/>
これを記述するとショットがブーメランのように行って返ってくるようになります。

<FaceDir/>
これを記述するとショットのテクスチャが進行方向を向くようになります。

※おまけ
<RandomTexture></RandomTexture>
Projectileオブジェクトを記述する際、このタグを使うことでテクスチャを複数設定することができ、設定した中からランダムでショットのテクスチャが選ばれるようになります。

使用例
<RandomTexture>
<Texture>
<File>lofiObj3</File>
<Index>0x44f</Index>
</Texture>
<Texture>
<File>lofiObj3</File>
<Index>0x450</Index>
</Texture>
<Texture>
<File>lofiObj3</File>
<Index>0x451</Index>
</Texture>
<Texture>
<File>lofiObj3</File>
<Index>0x452</Index>
</Texture>
</RandomTexture>



参考リンク

Projectiles
https://sites.google.com/decagames.com/xml-documentation/...

XML Guide
https://sites.google.com/decagames.com/xml-documentation/...
  • XML

いいね!

Realm of the Mad Godコミュニティサイト」は、「SNS作成サービス!そーしゃるぱーく(無料)」で作成された、PC(パソコン)・FP(フィーチャーフォン※ガラケー)・SP(スマートフォン)・TB(タブレット)対応のSNS(ソーシャル・ネットワーキング・サービス)です。
広告等のお問い合わせは「各種お問い合わせ」までお願い致します。
  • このエントリーをはてなブックマークに追加