Triggers¶
Triggers are area-based sensor entities that fire events when other entities enter or interact with their bounding box. They are commonly used for map transitions, cutscenes, trap zones, and door switches.
Creating Triggers¶
Via utiLITI¶
- Add a Trigger entity to your map.
- Define the trigger area (bounding box).
- Set activation properties and target tags in the Entity Inspector.
Via Code¶
// Constructor: (activationType, name, message)
Trigger trigger = new Trigger(TriggerActivation.COLLISION, "exit_trigger", "exit_level");
trigger.setLocation(100, 100);
trigger.setWidth(64);
trigger.setHeight(64);
// Add to active environment
Game.world().environment().add(trigger);
Trigger Activation Modes¶
The TriggerActivation enum defines how the trigger detects activation when instantiated:
COLLISION: Activates automatically whenever an entity collides with or enters the trigger bounding box.INTERACT: Activated when game logic explicitly invokestrigger.interact(entity)(e.g. from an input listener or action key).
// Create an interaction trigger: (activationType, name, message)
Trigger talkTrigger = new Trigger(TriggerActivation.INTERACT, "npc_trigger", "talk_elder");
// Explicitly trigger interaction from player input logic
talkTrigger.interact(player);
Trigger Listeners¶
Activation Listeners¶
trigger.addActivatedListener(event -> {
IEntity activator = event.getEntity();
System.out.println("Trigger activated by: " + activator.getName());
// Execute trigger logic
spawnEnemies();
});
Deactivation Listeners¶
trigger.addDeactivatedListener(event -> {
System.out.println("Entity left trigger zone: " + event.getEntity().getName());
});
Unified TriggerListener¶
trigger.addTriggerListener(new TriggerListener() {
@Override
public void activated(TriggerEvent event) {
// Fired on activation
}
@Override
public void deactivated(TriggerEvent event) {
// Fired on deactivation
}
});
Common Use Cases¶
Level Transitions¶
Trigger exit = new Trigger(TriggerActivation.COLLISION, "exit_to_level2");
exit.addActivatedListener(e -> {
Game.world().loadEnvironment("level2");
});
Enemy Spawning¶
Trigger spawnZone = new Trigger(TriggerActivation.COLLISION, "spawn_wave1");
spawnZone.addActivatedListener(e -> {
for (int i = 0; i < 5; i++) {
Enemy enemy = new Enemy();
enemy.setLocation(200 + i * 40, 150);
Game.world().environment().add(enemy);
}
});
See Also¶
- Entity Event System - Entity listeners and callbacks
- Messaging System - Entity communication
- Behavior Controllers - AI scripting
- Map Objects - Placing entities in utiLITI