トリガー
初級 デザイナー
コライダーをトリガーとして設定すると、他のコライダーはそのコライダーに衝突しなくなります。代わりに、そのコライダーを通り抜けます。
トリガーはコライダーが中に入ったことを検出するので、それを使用してイベントをスクリプト化できます。たとえば、プレイヤー キャラクターが部屋に入ったことを検出し、スクリプトでそれを使用してイベントをトリガーできます。詳細については、「イベント」を参照してください。
Note
キャラクター コライダーをトリガーとして使用することはできません。
トリガーを作成する
コライダーを作成します。
[Property grid]で、コライダー コンポーネントのプロパティの[Is Trigger]を選択します。
トリガーの衝突を検出する
トリガーに何かが入ったことは、次のコードを使用して認識できます。
// エンティティがトリガーと衝突するのを待つ
var firstCollision = await trigger.NewCollision();
var otherCollider = trigger == firstCollision.ColliderA ? firstCollision.ColliderB : firstCollision.ColliderA;
または、TrackingHashSet
に直接アクセスします。
var trigger = Entity.Get<PhysicsComponent>();
foreach (var collision in trigger.Collisions)
{
// 衝突したときの処理を行う
}
または、TrackingHashSet
イベントを使用します。
var trigger = Entity.Get<PhysicsComponent>();
trigger.Collisions.CollectionChanged += (sender, args) =>
{
if (args.Action == NotifyCollectionChangedAction.Add)
{
// 新しい衝突
var collision = (Collision) args.Item;
// 処理を行う
}
else if (args.Action == NotifyCollectionChangedAction.Remove)
{
// 古い衝突
var collision = (Collision)args.Item;
// 処理を行う
}
};
トリガーの使用方法の例については、「トリガーをスクリプトにする」チュートリアルを参照してください。