Docs are no longer hosted online. See the package after download instead.

TriggerEventPro is the renamed TargetPRO version 6.0 
  • Improved modularity, flexibility and in many ways feels simpler
  • Unity 4.3+ undo and multi-object-editing support
  • 2D support!!
The name change will not require a new purchase. If you own TargetPRO, it will be a free upgrade. However, this is a major version still and will require some updates to work with an existing project. READ THE UPGRADE DOCS BEFORE DOING ANYTHING.

TargetPRO is an extremely powerful, flexible and performance-friendly event-driven framework that allows you to get targets and send them information. Weather you are setting up a gun turret which needs to wait until it is pointing at a target before firing, or just trying to decide how to respond to a bunch of GameObjects in range, TargetPRO can get you up and running fast and efficiently!

TargetPRO is great for code-wizards looking to save significant R&D time or for less code-fluent users who want quick setup via components in the inspector, coupled with simple event-triggered scripting. Setup is easy, and complete documentation, example files and support are provided in case you want to dive deeper!

TargetPRO features include...
  • Track Any Targets in Range. Whether you are creating a gun turret, a zombie or a hugs machine, you can quickly and painlessly pick targets and directly pass them hit information. The entire API is linked through a network of cached references granting access to every component and GameObject involved in an event.

  • Multiple Sorting Options. TargetPRO's Perimeter sorts targets so you can choose the best way to act in any situation (these can sort in reverse order as well - ascending or descending):

    • Distance will automatically sort all targets based on their distance from the perimeter's center. This is great for deciding when a computer-controlled enemy should attack a player in range!

    • Distance To a Destination will sort based on a list of positions. You can pick a single position, but this was designed for use with an AI pathing system, to target enemies which are closest to their goals, along way-points. The perfect addition to a Tower Defense game!

    • Target Strength will sort based on how powerful the target is. This is great when some weapons should target the most powerful enemy in range. Since you define what "strength" means, you can make this a simple integer or the result of a complex equation. It could even be some other arbitrary ranking system since how you define this is up to you!

    • None will bypass sorting. This is ideal for hitting everything in range with an area-effect where distance doesn't matter. The Perimeter makes it easy to grab all targets at once!
  • Get Multiple Targets. You can choose to get everything in range, nothing, or any number in between. So if you are designing a RPG and have a magic attack that can only hit 3 targets, this is the perfect solution!

  • Easy and Flexible Fire Controls to notify targets in any situation.  Set an interval to notify targets every X seconds. Optionally have the controller wait for a vector to align with the target (such as a gun barrel) before firing...and much more. All setup in seconds!

  • Sends a Generic "Effects on Target" struct  to represent any status effect you can dream up (from damage, to a "debuff"). Or skip this entirely and write your own response to an "OnFire" event...or both!

  • Designed for Efficiency to get the maxim performance in any game on any device

    • Caches Everything You Need. A Target is actually a special struct type which holds the target's cached Transform, GameObject and a direct link to a "Targetable" component. This means you can pass around a Target and work with it without any overhead. No extra GetComponent calls!

    • Go Ahead...Grab Targets Every Frame... There is almost no overhead to getting targets on every frame. The caching efficiency is managed internally so you don't have to think about it.

    • Passive Target Sync so the Perimeter only does work when Targets enter or exit range. There is no constant polling to eat up resources.

    • Customizable Sort Interval lets you change the Perimeter to update the sort order only as often as your game requires. It is necessary to re-sort the list periodically to know if a new Target needs to be selected based on distance, for example. This functionality is already quite light on performance but using a timed co-routine means the work is done only as often as needed, and is distributed randomly, so if you need an extreme amount of perimeters you shouldn't need to worry about performance.

    • Perimeters Fall Asleep. Perimeter functionality is automatically shut off when no targets are in range, and starts back up automatically. A Perimeter with no targets will have almost no impact on performance or memory!
  • Easy Script Access, API access and delegates make it easy to focus on your game's logic and leave the rest up to TargetPro. Also, the Modifier Pattern makes it easy to tie in your own game-specific behaviors and they can be used together to create complex behaviors. For example, an enemy that only attacks players that are in front of it and only when the player isn't behind something!
    • Automation components like the FireController and Line-of-sight Modifier can do a lot of the heavy lifting or serve as examples for working with the framework to create custom components.
    • More Modifiers Added! 
      • Line-of-Sight now by center or bounds
      • Angle Limit for ignoring objects that aren't in front of something
      • Wait for alignment (directly in front) before taking action
      • Ignore objects
      • Ignore by Tag
  • Very Little Setup Required. Just add a few things and you are off and running!

  • Debug Option in the inspector gives you a blow-by-blow of exactly what a perimeter is doing at run-time! This includes sort information so you can quickly debug your own code.
  • PoolManager support built in! Simply un-comment a single line of code and instances spawned by a FireController will be pooled automatically by our advanced instance pooling solution. This includes all the features PoolManager offers, such as instance preloading and limiting!
  • All components are namespaced to protect your project from Type collisions. This is especially important with generic types such as "Target". You don't have to worry about importing TargetPRO in to your project.


New videos coming soon. These are not 100% accurate for TriggerEventPRO (TargetPRO 6.x+), but the content is still valid.

See the Quick-Start Guide, Code Reference and sample files for more Information!