Triggery
Triggery
Triggery jsou jeden z nástrojů, jak řídit interakci mezi objekty. Je to speciální případ collideru, který umí zachytávat, jestli do jeho oblasti nějaký objekt vstoupil, nachází se v něm nebo z něj odešel a reagovat na tyto údálosti.
Jak ho vytvořit?
Triggerem se může stát jakýkoliv collider, u kterého zaškrtneme v inspektoru Is Trigger. Poté, co z collideru uděláme trigger, tak už přestane fyzicky kolidovat s ostatními objekty a bude to spíše jakási zóna.

Následně pro daný objekt vytvořímě script komponentu ve které můžeme definovat 3 funkce, které budou řídit reakci při interakci objektů s naším triggerem. Jako referenci na kolidující objekt dostaneme přes parametr funkce Collider other.
void OnTriggerEnter(Collider other){}
void OnTriggerStay(Collider other){}
void OnTriggerExit(Collider other){}
Pro více informací Dokumentace
Příklad
Jako příklad si ukážeme lupu - Magnifier, která nám objekt při vstupu zvětší a při výstupu opět zmenší.
Začneme tím, že si vytvoříme objekt, který bude trigger reprezentovat, například Cube. Right clickem v Hierarchy: 3D Object > Cube. V Inspectoru ještě odklikneme na off Mesh Renderer komponentu, abychom měli náš trigger průhledný.


V inspektoru v komponentě Box Collider zaškrtneme Is Trigger jako v obrázku výše. Následně vytvoříme skript komponentu - vybereme v Hierarchy naší Cube a v Inspectoru klikneme na Add Component a napíšeme název skriptu - v našem případě Magnifier > New Script > Create and Add.

Následně nadefinujeme 3 zmíněné metody a jejich funkcionality - při vstupu(OnTriggerEnter) zvětší a při výstupu opět zmenší(OnTriggerExit).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Magnifier : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
other.transform.localScale *= 2;
}
void OnTriggerStay(Collider other)
{
}
void OnTriggerExit(Collider other)
{
other.transform.localScale /= 2;
}
}A tím máme hotovo.


Výsledný inspektor našeho triggeru
