# チュートリアル: トリガーをスクリプトにする 初級 デザイナー このチュートリアルでは、通過するボールのサイズを 2 倍にする[トリガー](../physics/triggers.md)を作成します。 >[!NOTE] >このチュートリアルのスクリーンショットとビデオは、前のバージョンの Stride を使用して作成されました。そのため、UI の一部および既定のスカイボックスと球体は、お使いのバージョンと異なる場合があります。 ## 1. 跳ね返るボールを作成する 「[跳ね返るボールを作成する](create-a-bouncing-ball.md)」チュートリアルの説明に従います。空中からボールが落下し、地面にぶつかって跳ね返る、簡単なシーンが作成されます。 ## 2. 反発を設定する このチュートリアルでは、地面と球体の反発係数を両方とも 0.9 に設定します。したがって、ボールはとてもよく跳ね返ります。このようにすると、ボールがトリガー領域に何度も出入りするので、トリガーの効果がよくわかります。 1. **球体**エンティティを選択します。 2. [Property grid]の[Rigidbody]で、[Restitution]を *0.9* に設定します。  3. **地面**エンティティを選択します。 4. [Property grid]の[Static Collider]で、[Restitution]を *0.9* に設定します。  ## 3. トリガーを追加する 次に、ボールと地面の間にトリガーを追加し、ボールがそこを通過するようにします。 1. **シーン エディター**で、白いプラス ボタン ([Create new entity]) をクリックして、[Empty entity]を選択します。  既定の **Entity** という名前のエンティティがシーンに追加されます。 2. このエンティティをトリガーにするので、わかりやすいように名前を[Trigger]に変更します。 3. このトリガーは動く必要がないので、静的コライダーにします。[Property grid]で[Add component]をクリックして、[Static Collider]を選択します。  4. [Property grid]で[Static Collider]コンポーネントを展開してプロパティを表示します。 5. [Is Trigger]チェックボックスをオンにします。  これにより、コライダーがトリガーになります。つまり、オブジェクトはそれを通り抜けることができますが、その場合でもコードはオブジェクトを検出します。 6. トリガーに形状を与える必要があります。[Collider Shapes]の隣の  ([Add a new item to the list]) をクリックして、[Box]を選択します。  トリガーの形状がボックスになります。  7. トリガーの領域を大きくします。[Property grid]の[Transform]コンポーネントのプロパティで、[Scale]を *X:2, Y:2, Z:2 に設定します。*  トリガーのサイズが 2 倍になります。  ## 4. トリガーにモデルを設定する 現状では、トリガーは実行時には目に見えません。トリガーの動作がよくわかるように、トリガーを透明なボックスにします。このようにしてもトリガーの動作に影響はありません。実行時にトリガーの場所がはっきりわかるようになるだけです。 1. 新しい手続き型モデル アセットを作成します。そのためには、[Asset view]で[Add asset]をクリックし、[Models]>[Cube]を選択します。  2. 新しい空のマテリアル アセットを作成します。そのためには、[Asset view]で[Add asset]をクリックし、[Materials]>[Material]を選択します。  3. マテリアルの名前を変更して見分けやすくします。右クリックして[Rename]を選択し、新しい名前 (たとえば *Transparent*) を入力します。 4. **トリガー** エンティティを選択します。[Property grid]で[Add component]をクリックして、[Model]を選択します。  モデル コンポーネントがエンティティに追加されます。 5. [Model]で  ([Pick an asset up]) をクリックします。  6. ステップ 1 で作成した[Cube]モデルを選択し、[OK]をクリックします。  7. [Property grid]の[Model]>[Materials]で、 ([Pick an asset up]) をクリックします。  8. ステップ 2 で作成した **Transparent** マテリアルを選択し、[OK]をクリックします。  9. [Asset view]で、**Transparent** マテリアル アセットを選択します。  10. [Property grid]の[Misc]>[Transparency]で、[Blend]を選択します。  11. 既定では、[Alpha]は 1 に設定されています。これではマテリアルは完全に不透明になります。不透明度を 50% にするため、[Alpha]を 0.5 に設定します。  これで、実行時にトリガー領域が表示されるようになります。 ## 5. トリガーを配置する 落下するボールが通過するように、地面と球体の間にトリガーを配置する必要があります。 [Property grid]の[Transform]で、[Position]を *X:0, Y:3, Z:0 に設定します。* トリガー エンティティが地面と球体の間に配置されました。  ## 6. スクリプトで球体のサイズを変更する この状態でプロジェクトを実行すると (**F5** キー)、ボールはトリガーを通過して落下しますが、何も起こりません。
トリガーに入ったらボールのサイズを変更するスクリプトを記述します。 >[!NOTE] >スクリプトの詳細については、「[スクリプト](../scripts/index.md)」を参照してください。 1. [Asset view]で[Add asset]をクリックし、[Scripts] >[Async Script]の順に選択します。  2. [Create a script]ダイアログで、スクリプトの名前を「*Trigger*」に設定して、[Create script]をクリックします。 2a.スクリプトを保存するかどうかを確認するメッセージが表示されたら、[Save]をクリックします。 2b.アセンブリを再ロードするかどうかを確認するメッセージが表示されたら、[Reload]をクリックします。 3. スクリプトを開き、内容を以下のコードに置き換えて、ファイルを保存します。 ```cs using Stride.Engine; using Stride.Physics; using System.Threading.Tasks; using Stride.Core.Mathematics; namespace TransformTrigger // このスクリプトには好みで任意の名前空間を使用できる。 { public class Trigger : AsyncScript { public override async Task Execute() { var trigger = Entity.Get
## その他のアイデア スクリプトを変更して、球体がトリガーに入ったときに他の処理を行うことができます。 たとえば、球体エンティティのマテリアルを切り替えることができます。次のスクリプトは、Sphere エンティティのマテリアルを **Sphere Material** から **Ground Material** に切り替えて、元に戻します。 ```cs using Stride.Engine; using Stride.Physics; using System.Threading.Tasks; using Stride.Core.Mathematics; using Stride.Rendering; namespace TransformTrigger // このスクリプトには好みで任意の名前空間を使用できる。 { public class Trigger : AsyncScript { private Material material1; private Material material2; public override async Task Execute() { var trigger = Entity.Get
## 関連項目 * [チュートリアル: 跳ね返るボールを作成する](create-a-bouncing-ball.md) * [コライダー](colliders.md) * [コライダーの形状](collider-shapes.md) * [スクリプト](../scripts/index.md)