当サイトの運営者です。ゲーム制作とプラグイン開発が好きで、コミュニティに貢献したいと考えています。
RPGツクールMZでゲームを制作中です。
※プログラマ・エンジニアではありません。
シューティング - TMShooting.js
シェア用テキスト:
▼シューティング(tomoaky様作) - TMShooting.js
https://plugin.fungamemake.com/archives/2309
プレイヤーとイベントに弾を発射する機能を追加します。
ふりがな:しゅーてぃんぐ
機能概要: プレイヤーとイベントに弾を発射する機能を追加します。
利用規約(ライセンス): MITライセンス
作者:tomoaky
作者サイト:https://x.com/tomoaky
直接ダウンロード:Zipファイルダウンロードページ:https://raw.githubusercontent.com/munokura/tomoaky-MV-p…
ファイル名:TMShooting.js
プラグインのヘルプ:
/*:
* @plugindesc プレイヤーとイベントに弾を発射する機能を追加します。
*
* @author tomoaky (https://hikimoki.sakura.ne.jp/)
*
* @param shot
* @type struct<InputSetting>
* @default {”text”:”ショット”,”mandatory”:”true”,”keys”:”AGHJ”,”padButton”:”6”}
*
* @param hold
* @type struct<InputSetting>
* @default {”text”:”ホールド”,”mandatory”:”false”,”keys”:”D”,”padButton”:”-1”}
*
* @param holdType
* @type select
* @option SWITCH
* @option HOLD
* @desc 向き固定方式。SWITCH なら向き固定キーを押すたびに切り替え、
* HOLD なら押している間だけ切り替え。
* @default SWITCH
*
* @param deadSwitch
* @type string
* @desc イベントが戦闘不能になったときにオンになるセルフスイッチ
* 初期値: A
* @default A
*
* @param resetDeadSwitch
* @type boolean
* @desc マップ移動時に deadSwitch をオフにする
* 初期値: ON ( true = ON 有効 / false = OFF 無効 )
* @default true
*
* @param bulletBlockTag
* @type number
* @min -1
* @desc 弾が通行できない地形タグ番号
* 初期値: -1 ( 0 ~ 7 = 該当タグ通行不可 / -1 = 無効 )
* @default -1
*
* @param bulletBlockRegion
* @type number
* @min -1
* @desc 弾が通行できないリージョン番号
* 初期値: -1 ( 0 ~ 255 = 該当リージョン通行不可 / -1 = 無効 )
* @default -1
*
* @param leaderShotSe
* @desc プレイヤー弾発射効果音のファイル名。
* 初期値: Shot1
* @default Shot1
* @require 1
* @dir audio/se/
* @type file
*
* @param leaderShotSeParam
* @type struct<SeParam>
* @desc プレイヤー弾発射効果音のパラメータ。
* @default {”volume”:”70”, ”pitch”:”150”, ”pan”:”0”}
*
* @param defaultDeadAnimeId
* @desc 戦闘不能時に表示するアニメーション番号の初期値
* 初期値: 67
* @default 67
* @require 1
* @type animation
*
* @param levelUpAnimeId
* @desc レベルアップ時に表示するアニメーション番号
* 初期値: 52
* @default 52
* @require 1
* @type animation
*
* @param playerDeadEventId
* @type common_event
* @desc 先頭のアクターが戦闘不能時に実行するコモンイベント番号
* 初期値: 0 ( 0 = 無効 / 1以上 = 該当するコモンイベント起動 )
* @default 0
*
* @param invincibleFollower
* @type boolean
* @desc フォロワーを無敵にする。
* 初期値: OFF ( true = ON 無敵 / false = OFF 通常 )
* @default false
*
* @param useGameover
* @type boolean
* @desc 全滅時にゲームオーバーシーンへ移行するかどうか
* 初期値: ON ( true = ON 移行する / false = OFF 移行しない )
* @default true
*
* @param maxPlayerBullet
* @type number
* @desc 同時に存在できるプレイヤー弾の最大数
* 初期値: 128
* @default 128
*
* @param maxEnemyBullet
* @type number
* @desc 同時に存在できるエネミー弾の最大数
* 初期値: 128
* @default 128
*
* @param bulletSizeTable
* @type string
* @desc 弾の当たり判定の大きさ(ドット数)
* 初期値: 6,6,6,6,6,6,6,6
* @default 6,6,6,6,6,6,6,6
*
* @param bulletBlendTable
* @type string
* @desc 弾のブレンドモード
* 初期値: 0,0,0,0,0,0,0,0
* @default 0,0,0,0,0,0,0,0
*
* @param equipDummyX
* @type number
* @min -9999
* @desc 装備シーンに表示するダミーのX座標
* 初期値: 408
* @default 408
*
* @param equipDummyY
* @type number
* @min -9999
* @desc 装備シーンに表示するダミーのY座標
* 初期値: 312
* @default 312
*
* @param useLevelUpMessage
* @type boolean
* @desc レベルアップメッセージを表示するか
* 初期値: true ( false = OFF 表示しない / true = ON 表示する )
* @default true
*
* @noteParam shotSeName
* @noteRequire 1
* @noteDir audio/se/
* @noteType file
* @noteData weapons
*
* @requiredAssets img/system/shootingBullet1
* @requiredAssets img/system/shootingBullet2
* @requiredAssets img/system/shootingBullet3
* @requiredAssets img/system/shootingBullet4
* @requiredAssets img/system/shootingBullet5
* @requiredAssets img/system/shootingBullet6
* @requiredAssets img/system/shootingBullet7
* @requiredAssets img/system/shootingBullet8
*
* @help
* TMPlugin - シューティング ver1.3.7
*
* 使い方:
*
* このプラグインを動作させるには、プレイヤーやイベントが発射する弾の画像
* が必要になります。
*
* 弾画像は shootingBullet1.png というファイル名で img/system フォルダに
* 入れてください。ひとつのファイルには、横に8つ、縦に任意の数の弾画像を
* 入れることができます。
* ファイル名の数字部分を変えて複数のファイルを使用することもできます、
* サイズが違う弾、当たり判定が違う弾を作る場合など、必要に応じてファイル
* を増やしてください。
* shootingBullet8.png まで、最大 8 つのファイルを利用できます。
*
* 準備ができたらデータベースで武器のメモ欄に以下のタグを挿入します。
* <shotWay:1>
* <shotCount:45>
* <shotSpeed:0.1>
* <shotInterval:15>
* <shotType:1>
* <shotIndex:8>
*
* この武器をアクターに装備させて、Aキーを押せば弾が発射されます。
* 弾が当たる敵イベントのメモ欄には <enemy:3> のようなタグを挿入します。
* これでこのイベントに 3 番の敵キャラのパラメータが適用され、弾を当てて
* HPが 0 になるとセルフスイッチ A がオンになります。
*
* このプラグインは RPGツクールMV Version 1.6.1 で動作確認をしています。
*
* このプラグインはMITライセンスのもとに配布しています、商用利用、
* 改造、再配布など、自由にお使いいただけます。
*
*
* プラグインパラメータ補足:
*
* bulletSizeTable
* 弾画像ファイルごとに当たり判定を設定します、初期設定の 6,6,6,6,6,6,6,6
* は shootingBullet1.png ~ shootingBullet8.png までのすべての弾が、弾の
* 中心から半径6ドットの当たり判定をもつという設定になります。
*
* bulletBlendTable
* 弾画像の合成方法を設定します、値と合成方法の対応は下記のとおりです。
* ( 0 = 通常 / 1 = 加算 / 2 = 乗算 / 3 = スクリーン )
* bulletSizeTable と同様に弾画像ファイルの数だけ設定する必要があります。
*
* useLevelUpMessage
* 弾による敵イベントの撃破で経験値を獲得した際に、アクターのレベルアップ
* をメッセージウィンドウで表示するかどうかを設定します。
* アクション要素が強いゲームでは非表示にすることをおすすめします。
*
*
* プラグインコマンド:
*
* startAutoShot
* このコマンドが実行されるとプレイヤーキャラクターが自動的に弾を撃つよう
* になります。この変更はパーティメンバーにも適用されます。
*
* stopAutoShot
* このコマンドが実行されるとプレイヤーキャラクターの自動射撃が止まります、
* この変更はパーティメンバーにも適用されます。
*
* nwayShot 3 0.4 0 0.1 60 1 3 1
* このコマンドを実行したイベントが弾を発射します、コマンド名に続く数値は
* 左から 弾数、間隔、角度、速度、寿命、タイプ、インデックス、スキル番号
* となります。
* タイプが 1 で、インデックスが 3 なら、弾画像として shootingBullet1.png
* の最上段、左から4つ目を使用します。(インデックスは 0 が先頭です)
*
* nwayAim 3 0.4 0 0.1 60 1 3 1
* このコマンドを実行したイベントが自機狙いの弾を発射します。
* 角度が 0 以外の場合は、自機がいる方向にその値を加算した角度で発射され
* ます。
*
* nallShot 8 0 0.1 60 1 3 1
* このコマンドを実行したイベントが全方位に弾を発射します、コマンド名に
* 続く数値は左から 弾数、角度、速度、寿命、タイプ、インデックス、
* スキル番号 となります。
* 弾の間隔は全方位に発射されるように自動で調整されます。
*
* nallAim 8 0 0.1 60 1 3 1
* nallShotの自機狙い版です。
*
* stopPlayerShot
* プレイヤー(パーティメンバー含む)の弾発射を手動、自動問わず禁止します。
*
* startPlayerShot
* プレイヤー(パーティメンバー含む)の弾発射禁止状態を解除します。
*
* stopPlayerShot message
* イベントコマンド『文章の表示』実行中のみプレイヤー(パーティメンバー含む)
* の発射弾を手動、自動問わず禁止します。
*
* startPlayerShot message
* stopPlayerShot message の効果を解除します。
*
* stopEnemyShot
* イベントの弾発射を禁止します、並列イベントで弾を発射している場合は
* 弾発射のコマンドのみが無効化され、そのほかのコマンドは実行されます。
*
* startEnemyShot
* イベントの弾発射禁止状態を解除します。
*
* stopEnemyShot message
* イベントコマンド『文章の表示』実行中のみイベントの弾発射を禁止します。
*
* startEnemyShot message
* stopEnemyShot message の効果を解除します。
*
* deletePlayerBullets
* プレイヤー(パーティメンバー含む)が発射したすべての弾を消去します。
*
* deleteEnemyBullets
* イベントが発射したすべての弾を消去します。
*
* forceShot 0
* プレイヤーのショット操作を強制実行します。このコマンドはディレイを
* 無視して弾を発射します。数値はパーティの先頭を 0 とした並び順です、
* 0 が指定されていれば先頭のキャラクターのみが弾を発射します。
* 数値を省略した場合はパーティ全員が弾を発射します。
*
* bulletPause
* すべての弾を一時的に停止させます。
* bulletPause off
* で一時停止が解除されます。
*
* setCollision 1 0.375 0.75
* イベント 1 番の当たり判定の横幅を 0.375、高さを 0.75 に設定します。
* このコマンドの効果はイベントページが切り替わるタイミングで消失します。
*
* setShiftFiringY 1 -24
* イベント 1 番の弾発射位置を上に 24 ドットずらします。
* このコマンドの効果はイベントページが切り替わるタイミングで消失します。
*
*
* メモ欄タグ(アクター、装備、ステート):
*
* <shotWay:3>
* 一度に発射される弾の数を設定します。
*
* <shotSpace:0.4>
* 一度に発射される弾同士の間隔(角度)を設定します。
*
* <shotSpeed:0.1>
* 弾の移動速度を設定します。
*
* <shotCount:60>
* 弾が消えるまでの時間をフレーム数で設定します。
*
* <shotInterval:20>
* 再発射までの発射不可時間をフレーム数で設定します。
*
* <shotInvincible:60>
* 被弾により発生する無敵時間をフレーム数で設定します。
*
*
* メモ欄タグ(装備、ステート):
*
* <shotIntervalRate:1.4>
* 再発射までの発射不可時間を倍率で設定します。
* shotInterval による加算補正よりも後に計算されます。
*
* メモ欄タグ(武器、ステート):
*
* <shotType:1>
* 弾のグラフィックとして使う画像ファイルを設定します。値が 1 なら
* shootingBullet1.png を使用します。
* 武器とステートの両方にこのタグがある場合、ステートのものを優先します。
*
* <shotIndex:3>
* shotTypeタグで選択した画像ファイルの何番目の弾を使用するか設定します。
* 武器とステートの両方にこのタグがある場合、ステートのものを優先します。
*
* <shotSkill:1>
* 弾が相手に当たったときのダメージ計算に使うスキルを設定します。
* 武器とステートの両方にこのタグがある場合、ステートのものを優先します。
*
*
* メモ欄タグ(武器):
*
* <shotSeName:Shot1>
* <shotSeVolume:70>
* <shotSePitch:150>
* このタグがついている武器を装備している間だけ、弾の発射音を変更します。
* それぞれ、ファイル名、音量、ピッチを設定することができます。
*
*
* メモ欄タグ(スキル):
*
* <mapThrough>
* マップの通行不可タイルと接触しても弾が消えなくなります。
*
* <penetrate>
* キャラクターと接触しても弾は消えずに貫通します。キャラクターが同じ弾に
* 複数回ダメージを受けることはありません。
*
* <bulletAnime:1>
* 弾がキャラクターにヒットした際に、指定した番号のアニメーションを
* 被弾したキャラクターに表示します。
*
*
* メモ欄タグ(イベント):
*
* <enemy:1>
* イベントのパラメータとして利用する敵キャラ番号を設定します。
*
* <cw:0.375>
* イベントと弾の当たり判定サイズ(横幅)をイベントの中心から左(右)端
* までの長さで設定します。値は 1.0 でマップのタイル1マス分になります。
* このタグがない場合は初期値として 0.375 を使用します。
*
* <ch:0.75>
* イベントと弾の当たり判定サイズ(高さ)をイベントの足元から上端までの
* 長さで設定します。値は 1.0 でマップのタイル1マス分になります。
* このタグがない場合は初期値として 0.75 を使用します。
*
* <shiftFiringY:0>
* イベントの弾発射位置(Y座標)を指定したドット数だけずらします。
* 値が正なら下、負なら上方向へずらします。
* 通常は当たり判定の矩形の中心から弾が発射されますが、不都合がある場合は
* このタグで調整してください。
*
*
* メモ欄タグ(アクター):
*
* <cw:0.375>
* イベント用のものと同じです。
*
* <ch:0.75>
* イベント用のものと同じです。
*
* <shiftFiringY:0>
* イベント用のものと同じです。
*
* <deadCharacter:!Flame,5>
* このアクターが戦闘不能になったとき、歩行グラフィックを変更します。
* この例では !Flame.png の下段、左から2番目のグラフィックが採用されます。
*
*
* メモ欄タグ(アクター、敵キャラ):
*
* <deadAnime:67>
* 戦闘不能ステートが付加されたときに表示するアニメーションを設定します。
*
*
* 併用可能(動作確認済み)プラグイン:
*
* SAN_AnalogMove.js ver1.4.3
* SAN_AnalogMove.js ver3.0.3
* SAN_AnalogStick.js ver1.0.0
* SAN_MapGenerator.js ver1.1.8
* 作者: サンシロさん(http://rev2nym.blog.fc2.com/)
*
* CharacterPopupDamage.js Version 1.5.0
* 作者: トリアコンタンさん(http://triacontane.blogspot.jp/)
*
* CommonPopupCore.js ver1.05
* GetInformation.js ver1.15
* 作者: Yanaさん(https://twitter.com/yanatsuki_)
*
* Mano_InputConfig.js ver0.9.0
* 作者: しぐれんさん (https://twitter.com/Sigureya/)
*
* 導入する際は TMShooting.js よりも上(プラグイン管理の表示順)へ
* 挿入してください。順番が違うと正常に動作しない場合があります。
* 上記プラグインを併用したことによる不具合の報告は、併用プラグインの
* 作者様ではなく、必ずtomoakyへお願いします。
*
*
* その他注意点など:
*
* shotWay や shotSpace などのメモ欄タグは、アクター、装備、ステートの
* 合計値が採用されます。shotWay が 0 の場合、または shotCount が 0 の
* 場合は弾が発射されないか、発射後すぐに消滅してしまいます、素手の状態
* でも弾を撃ちたい場合はアクターにも shotWay と shotCount タグを設定する
* 必要があります。
*
* nwayShot などのコマンドに味方対象のスキルを設定した場合、イベント同士
* での攻撃が表現できますが、スキルの設定によっては命中判定が正しく機能
* しません。
* 弾が当たらない場合はスキルの使用効果にステート付加 0 %などの無意味な
* 効果を設定することでこの問題を回避することができます。
*
* パッドボタン配置は save フォルダ内の config.rpgsave に保存されます、
* このファイルが削除されるまでは初期配置の設定を変更しても適用されません。
*/
/*~struct~SeParam:
*
* @param volume
* @type number
* @max 100
* @desc 音量
* 初期値: 70 ( 0 ~ 100 )
* @default 70
*
* @param pitch
* @type number
* @min 50
* @max 150
* @desc ピッチ
* 初期値: 100 ( 50 ~ 150 )
* @default 100
*
* @param pan
* @type number
* @min -100
* @max 100
* @desc 位相
* 初期値: 0 ( -100 ~ 100 )
* @default 0
*/
/*~struct~InputSetting:
*
* @param text
* @desc コマンド名称です
* Mano_InputConfigで参照するために使います
*
* @param mandatory
* @desc Mano_InputConfigの方で必須指定されたものとして扱います。
* @type boolean
* @default false
*
* @param keys
* @desc キーボードの割り当てです
* @type string
*
* @param padButton
* @desc ゲームパッドの割り当てです
* カッコ内はツクールのデフォルトでの割り当てです
* @type select
* @default -1
* @option non(割り当てなし)
* @value -1
* @type select
* @option button6
* @value 6
* @option button7
* @value 7
* @option button8
* @value 8
* @option button9
* @value 9
* @option button10
* @value 10
* @option button11
* @value 11
* @option button0(ok/決定)
* @value 0
* @option button1(cancel/キャンセル)
* @value 1
* @option button2(shift/ダッシュ)
* @value 2
* @option button3(menu/メニュー)
* @value 3
* @option button4(pageup)
* @value 4
* @option button5(pagedown)
* @value 5
*/