# 【技術共有】VSでシールド機能を作成する

**URL:** https://guild.rpgmakerofficial.com/t/topic/1922
**Category:** 一般
**Created:** [2026 年 6 月 20 日午前 10:23 UTC](https://guild.rpgmakerofficial.com/t/topic/1922 "2026-06-20T10:23:41Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![serbow](https://sea2.discourse-cdn.com/flex002/user_avatar/guild.rpgmakerofficial.com/serbow/32/1013_2.png) [@serbow](https://guild.rpgmakerofficial.com/u/serbow)
#### Post date: [2026 年 6 月 20 日午前 10:23 UTC](https://guild.rpgmakerofficial.com/t/topic/1922/1 "2026-06-20T10:23:41Z")

</div>

![c758ace774ecbfda595f4b8d15a5e861](https://us1.discourse-cdn.com/flex002/uploads/rpgmaker_community/original/2X/8/8d5711627353ff80e4175e83692caf4df6ac9256.gif)  
（注：以前の同名トピックには技術的な不備があったため、こちらを参照してください。前のトピックはモデレーターに削除を依頼済みです。この録画アニメーションをよく観察すると、前のトピックではシールドとHPが同時に減少していましたが、このトピックでは、最初は英雄の頭上の数字（シールド値）のみが減少し、シールド値が0になってからHPの減少が始まることがわかります。）

1 AGMの自動被ダメージの技術的コンセプト：  
（1）以前、私は他の攻撃判定条件を使用すればこの自動ダメージ機能を中断できると誤解していましたが、それは間違いであることが証明されました。AGMのヒットボックスは、有効化され、かつ攻撃との対応関係が正しく設定されていれば、自動的に計算されます。VSではこれを中断することはできません。ヒットボックスを無効化すれば中断可能ですが、ヒットボックスを無効化するとすべての被ダメージ反応が無効になり、シールド機能も機能しなくなります。  
（2）では、ヒットボックスの自動検知を停止できない場合、シールドがあるときはシールドを減らし、シールドがないときはHPを減らすにはどうすればよいでしょうか？最終的に答えを見つけました——ダメージレートを制御することです！

 ![fd242906b7080d684f271e4ee0e45b3c](https://us1.discourse-cdn.com/flex002/uploads/rpgmaker_community/original/2X/2/27abcac5c63779ff0ba2c7f9410499b5436dddc1.jpeg)  
BaseSettingsのプロパティに「被ダメージ率（taken damage rate）」という項目があります。これを0%に設定すると無傷になり、100%に設定すると全ダメージになります。これを使用して被ダメージを制御すればよいのです！

2 具体的な実装方法：

 ![a0f9ca17770b42ec85998b8f70495ad3](https://us1.discourse-cdn.com/flex002/uploads/rpgmaker_community/original/2X/4/4447ac985e621c8441e734f7b829815a6a909bd4.png)  
（1）2つのヒットボックスの衝突領域を作成します。1つはヒーロー本体用、もう1つはシールド用です。そして「シールド」という変数を設定します。  
 ![3a1c8b960d948cfed249a298593581b6](https://us1.discourse-cdn.com/flex002/uploads/rpgmaker_community/original/2X/5/5c5f6089b1ee1c9097c5c98c35a9dd727fdf9b29.png)  
（2）VSスクリプトで待機状態を有効化した後、条件を設定します——「シールド \> 0」の場合、以下のアクションを実行します：【1. 被ダメージ率を0%に設定；2. シールドの衝突ボックスを有効化；3. 本体の衝突ボックスを無効化】（これにより、AGMの自動衝突によるダメージを直接ブロックできます。）  
（3）衝突が発生した際、シールド値を減少させ、0.5秒間のループ処理を行います。  
（4）シールド値 \<= 0 の場合、以下のアクションを実行します：【1. 被ダメージ率を100%に設定；2. シールドの衝突ボックスを無効化；3. 本体の衝突ボックスを有効化】  
（5）さらに、このアクションに対して、被ダメージ判定が発生した後に音声を再生する0.5秒間のループアクションを設定し、同時に対象のBaseSettingsに0.5秒間の無敵時間を設定する必要があります。  
（6）他の操作は不要です。これでシールドが解除されると、AGMが自動的にHPダメージを計算します。
