NGT Shooter - NGT_Shooter.js

▼NGT Shooter(ベルファーレ長田様作) - NGT_Shooter.js
https://plugin.fungamemake.com/archives/13706
指定した方向に弾を発射します。
ふりがな:しゅーたー
機能概要: 指定した方向に弾を発射します。
利用規約(ライセンス): MITライセンス
作者:ベルファーレ長田
作者サイト:https://x.com/velfare_nagata
ダウンロードページ:https://raw.githubusercontent.com/VelfareNagata/RPG-Mak…
ファイル名:NGT_Shooter.js
プラグインのヘルプ:
/*:ja
* @plugindesc 指定した方向に弾を発射します。
*
* @help このプラグインの使い方は下記のサンプルゲームにて紹介しています。
* https://game.nicovideo.jp/atsumaru/games/gm9334
*
* ▼簡単な使い方---------------------------------------------------------------
* 1.プラグインパラメータ:bulletDataList を設定して、
* 発射する弾オブジェクトの設定を行う。
* 2.プラグインコマンド:SHOOT_TO_DEGREE または SHOOT_TO_POINT を実行し、
* 指定した弾を任意の方向に発射する。
* 3.発射した弾を消す場合は、プラグインコマンド:DELETE_BULLET を実行する。
* -----------------------------------------------------------------------------
*
* ▼プラグインコマンド---------------------------------------------------------
* 0.予備知識
* ・プラグインコマンドの引数には、下記のフォーマットで変数を指定することができます。
* v[{0}]
* {0}:変数の番号
*
* ・プラグインコマンドの引数には、下記のフォーマットで変数を指定することができます。
* v[{0}]
* {0}:変数の番号
*
*
* 1.弾を指定した角度で発射する場合
* ・SHOOT_TO_DEGREE {0} {1} {2} {3}
* ・角度指定発射 {0} {1} {2} {3}
* {0}:弾オブジェクトID
* {1}:発射開始位置 X座標
* {2}:発射開始位置 Y座標
* {3}:発射角度
*
* 実際の発射方向と角度の関係性は下記の通りとなっています。
* 0: 上
* 45:右上
* 90: 右
* 135:右下
* 180: 下
* 225:左下
* 270: 左
* 315:左上
*
*
* 2.弾を指定した発射開始位置から終了位置までの角度で発射する場合
* ・SHOOT_TO_POINT {0} {1} {2} {3}
* ・位置指定発射 {0} {1} {2} {3}
* {0}:弾オブジェクトID
* {1}:発射開始位置 X座標
* {2}:発射開始位置 Y座標
* {3}:発射方向位置 X座標
* {4}:発射方向位置 Y座標
*
* プラグインコマンド:SHOOT_TO_DEGREE とほぼ同様の動作を行いますが、
* 角度計算を行わなくても直感的に弾を発射することができます。
*
*
* 3.指定したインデックス値の弾を削除する場合
* ・DELETE_BULLET {0}
* ・弾丸削除 {0}
* {0}:弾オブジェクトインデックス値
*
* 引数に指定する弾オブジェクトインデックス値は、下記の方法で取得できます。
*
* A.プラグインコマンド:SHOOT_TO_DEGREE または SHOOT_TO_POINT を実行すると、
* プラグインパラメータ:PointerOfBulletIndex で指定した変数に格納される。
*
* B.NGT_CollisionManager(当たり判定プラグイン)と連携している場合、
* 発射した弾の当たり判定が行われると、
* プラグインコマンド:COLLISION_RESULT_GET 実行時に、
* プラグインパラメータ:判定結果(対象オブジェクト インデックス) 格納変数番号
* または 判定結果(衝突オブジェクト インデックス) 格納変数番号 で
* 指定した変数に格納される。
*
*
* 2.当たり判定を終了する場合
* ・COLLISION_CHECK_STOP
* ・当たり判定_終了
*
* 当たり判定処理を終了します。
*
*
* 3.当たり判定結果を取得する場合
* ・COLLISION_RESULT_GET
* ・当たり判定_結果_取得
*
* 現在のフレーム内で発生した当たり判定の結果を取得します。
* 結果はプラグインパラメータ:〇〇格納変数番号 で設定した変数に格納されます。
* 当たり判定結果が無い場合は全ての変数に-1が格納されます。
*
*
* 4.指定したオブジェクトの当たり判定を一時的に無効化する場合
* ・COLLISION_INVINCIBLE_ADD {0} {1} {2}
* ・当たり判定_無敵_追加 {0} {1} {2}
* {0}:対象オブジェクト インデックス
* {1}:衝突オブジェクト インデックス
* {2}:無敵時間(フレーム)
*
* 指定した時間、指定したオブジェクト同士の当たり判定を行わないようにします。
* 同じオブジェクト同士で連続で当たり判定が行われないように、
* 無敵時間を設けるために使用します。
* 対象オブジェクト インデックス 及び 衝突オブジェクト インデックス は
* プラグインコマンド:COLLISION_RESULT_GET で取得することを想定しています。
*
*
*
* ▼備考---------------------------------------------------------------------
* 1.当たり判定の親子関係について
* ・collisionDatas.fileNameで指定した画像のオブジェクトを基準に、
* collisionDatas.collisionTargetsで指定した画像のオブジェクトに対して
* 当たり判定判定処理を行います。
*
* オブジェクトA・Bで当たり判定を行うとき、
* fileNameにA、collisionTargetsにBを設定した場合は、
* 別途fileNameにB、collisionTargetsにAなどと設定する必要はありません。
* そのようにした場合、AとBの当たり判定は二重に行われてしまいます。
*
* 2.めりこみ量算出処理について
* めりこみ量の算出は、移動方向によって取得内容が異なります。
* X軸のめりこみ量は、左右に移動している時に当たった場合に取得できます。
* Y軸のめりこみ量は、上下に移動している時に当たった場合に取得できます。
*
* 正直めりこみ距離の算出処理が全然宜しくないので、誰か助言ください。
*
* ----------------------------------------------------------------------------
*
* @author ベルファーレ長田(゜∀゜)◆AHYA/HaiA.
*
* @param maxBulletCount
* @desc 一度に表示される最大弾数を指定します。
* 最大段数を超える場合、弾は発射されません。
* @type number
* @default 1000
*
* @param bulletDataList
* @desc 発射する弾のデータを定義します。
* @type struct<bullet>[]
* @default []
*
* @param PointerOfBulletIndex
* @desc 弾が発射された時に、弾オブジェクトインデックス値が格納される変数の番号を指定します。
* @type number
* @default 0
*/
/*~struct~bullet:ja
* @param fileName
* @desc 弾画像のファイル名を指定します。
* @type string
* @default
*
* @param aliveTime
* @desc 弾の生存時間(フレーム数)を指定します。
* @type number
* @default 0
*
* @param speed
* @desc 弾の速度を指定します。
* @type struct<speed>
* @default {”value”:”0”,”accelerationList”:”[]”}
*
* @param enlargeSpeed
* @desc 弾の拡大速度を指定します。
* @type struct<enlargeSpeed>
* @default {”value”:”0”,”increaseList”:”[]”}
*
* @param rotationSpeed
* @desc 弾の回転速度を指定します。
* @type struct<rotationSpeed>
* @default {”value”:”0”,”increaseList”:”[]”}
*
* @param subShootList
* @desc 弾から発射する弾の情報一覧を指定します。
* @type struct<subShoot>[]
* @default []
*
* @param isFixationPoint
* @desc trueの場合、プラグインコマンドの引数に依らず発射位置を固定化します。
* @type boolean
* @default false
*
* @param point
* @desc 弾の発射位置の補正値を指定します。
* @type struct<point>
* @default {”x”:”{”value”:”0”,”min”:”0”,”max”:”0”}”,”y”:”{”value”:”0”,”min”:”0”,”max”:”0”}”,”radius”:”0”}
*
* @param isFixationDegree
* @desc trueの場合、プラグインコマンドの引数に依らず発射角度を固定化します。
* @type boolean
* @default false
*
* @param degree
* @desc 弾の発射角度の補正値を指定します。
* @type struct<randomRange>
* @default {”value”:”0”,”min”:”0”,”max”:”0”}
*
* @param sound
* @desc 弾を発射する時の音声情報を指定します。
* @type struct<audioFile>
* @default {”name”:””,”volume”:”90”,”pitch”:”100”,”pan”:”0”}
*
* @param isLowerPicture
* @desc trueの場合、ピクチャレイヤの下側に表示されます。
* falseの場合、ピクチャレイヤの上側に表示されます。
* @type boolean
* @default false
*
* @param animation
* @desc 弾のアニメーション情報を指定します。
* @type struct<animation>
* @default {”isAnimation”:”false”,”animationFrameRate”:”1”,”frameWidth”:”1”,”frameHeight”:”1”}
*
* @param isLinear
* @desc trueの場合、弾は発射角度に対応して画像角度が変化します。
* @type boolean
* @default false
*
* @param isLay
* @desc trueの場合、弾が移動経路に沿って一直線に並んで表示されます。
* @type boolean
* @default false
*/
/*~struct~subShoot:ja
* @param bulletId
* @desc 発射する弾のIDを指定します。
* @type number
* @min 1
* @max 999
* @default 1
*
* @param frame
* @desc 弾を発射するフレーム数を指定します。
* @type number
* @default 0
*
* @param isFixationPoint
* @desc trueの場合、弾の現在位置に依らず発射位置を固定化します。
* @type boolean
* @default false
*
* @param point
* @desc 弾の発射位置の補正値を指定します。
* @type struct<point>
* @default {”x”:”{”value”:”0”,”min”:”0”,”max”:”0”}”,”y”:”{”value”:”0”,”min”:”0”,”max”:”0”}”,”radius”:”0”}
*
* @param isFixationDegree
* @desc trueの場合、弾の現在角度に依らず発射角度を固定化します。
* @type boolean
* @default false
*
* @param degree
* @desc 弾の発射位置の補正値を指定します。
* @type struct<randomRange>
* @default {”value”:”0”,”min”:”0”,”max”:”0”}
*/
/*~struct~point:ja
* @param x
* @desc x座標を指定します。
* @type struct<randomRange>
* @default {”value”:”0”,”min”:”0”,”max”:”0”}
*
* @param y
* @desc y座標を指定します。
* @type struct<randomRange>
* @default {”value”:”0”,”min”:”0”,”max”:”0”}
*
* @param radius
* @desc 発射角度に対する座標までの半径を指定します。
* @type number
* @default 0
*/
/*~struct~randomRange:ja
* @param value
* @desc 乱数に依らない固定値を指定します。
* @type number
* @default 0
*
* @param min
* @desc 乱数範囲の最小値を指定します。
* @type number
* @default 0
*
* @param max
* @desc 乱数範囲の最大値を指定します。
* @type number
* @default 0
*/
/*~struct~speed:ja
* @param value
* @desc 弾の速度を指定します。
* @type number
* @default 0
*
* @param accelerationList
* @desc 弾の加速情報一覧を指定します。
* @type struct<acceleration>[]
* @default []
*/
/*~struct~enlargeSpeed:ja
* @param value
* @desc 弾の拡縮速度を指定します。
* @type number
* @default 0
* @min -100
* @max 100
*
* @param increaseList
* @desc 弾の拡大加速情報一覧を指定します。
* @type struct<increase>[]
* @default []
*/
/*~struct~rotationSpeed:ja
* @param value
* @desc 弾の回転速度を指定します。
* @type number
* @default 0
* @min -360
* @max 360
*
* @param increaseList
* @desc 弾の回転加速情報一覧を指定します。
* @type struct<increase>[]
* @default []
*/
/*~struct~acceleration:ja
* @param value
* @desc 1フレームあたりの弾の加速度を指定します。
* @type number
* @default 0
*
* @param isFixationDegree
* @desc trueの場合、弾の発射角度に依らず加速角度を固定化します。
* @type boolean
* @default false
*
* @param degree
* @desc 弾の加速角度の補正値を指定します。
* @type number
* @min -360
* @max 360
* @default 0
*
* @param startFrame
* @desc 弾が発射されてから加速を開始するまでのフレーム数を指定します。
* @type number
* @min 0
* @max 9999
* @default 0
*
* @param endFrame
* @desc 弾が発射されてから加速を終了するまでのフレーム数を指定します。
* @type number
* @min 0
* @max 9999
* @default 0
*/
/*~struct~increase:ja
* @param value
* @desc 1フレームあたりの増加値を指定します。
* @type number
* @default 0
*
* @param startFrame
* @desc 弾が発射されてから増加を開始するまでのフレーム数を指定します。
* @type number
* @min 0
* @max 9999
* @default 0
*
* @param endFrame
* @desc 弾が発射されてから増加を終了するまでのフレーム数を指定します。
* @type number
* @min 0
* @max 9999
* @default 0
*/
/*~struct~audioFile:ja
* @param name
* @desc 音声ファイル名を指定します。
* @type string
* @default
*
* @param volume
* @desc 音量を指定します。
* @type number
* @min 0
* @max 100
* @default 90
*
* @param pitch
* @desc ピッチを指定します。
* @type number
* @min 50
* @max 150
* @default 100
*
* @param pan
* @desc 位相を指定します。
* @type number
* @min -100
* @max 100
* @default 0
*/
/*~struct~animation:ja
* @param isAnimation
* @desc trueの場合、弾画像をスプライトシートとして扱い、複数フレームでの分割アニメーションを行います。
* @type boolean
* @default false
*
* @param animationFrameRate
* @desc 弾アニメのフレームレートを指定します。
* ※ アニメフラグがtrueの場合のみ使用されます。
* @type number
* @min 1
* @default 1
*
* @param frameWidth
* @desc 弾画像スプライトシートの1フレームの横幅を指定します。
* ※ アニメフラグがtrueの場合のみ使用されます。
* @type number
* @min 1
* @default 1
*
* @param frameHeight
* @desc 弾画像スプライトシートの1フレームの縦幅を指定します。
* ※ アニメフラグがtrueの場合のみ使用されます。
* @type number
* @min 1
* @default 1
*/
