OnTriggerEnter - ObjectReference
Jump to navigation
Jump to search
Member of: ObjectReference Script (Papyrus)
Event called when the object reference is a trigger volume and has been entered.
Syntax[edit | edit source]
Event OnTriggerEnter(ObjectReference akActionRef)Parameters[edit | edit source]
- akActionRef: The ObjectReference that entered the volume.
Examples[edit | edit source]
Event OnTriggerEnter(ObjectReference akActionRef)
Debug.Trace(akActionRef + " just entered us!")
EndEventNotes[edit | edit source]
- This event can be received out of order with OnTriggerLeave, so it's ideal to keep a count instead of a simple true/false value for when things are inside the trigger.
Int InTrigger = 0
Event OnTriggerEnter(ObjectReference akTriggerRef)
if (InTrigger == 0)
if akTriggerRef == Game.GetPlayer()
InTrigger += 1
debug.notification("Entered Trigger")
endif
endif
EndEvent
Event OnTriggerLeave(ObjectReference akTriggerRef)
if (InTrigger > 0)
if akTriggerRef == Game.GetPlayer()
InTrigger -= 1
debug.notification("Leaving Trigger")
endif
endif
EndEvent- If you set a trigger around a teleport door marker this event will fire for the player but not for NPCs.
- The collision layer associated with a primitive containing the script for this event doesn't detect dead actors.
- Trigger volumes use collision shapes to detect when objects enter them, and this counts as "having loaded 3D." If a trigger's 3D unloads (e.g. because the trigger was disabled or moved), it may dispatch OnTriggerLeave for some or all refs that were previously detected as being inside the trigger. When the trigger's 3D reloads, it may dispatch OnTriggerEnter for some or all of those same refs.
- If you need to move a trigger without unloading its 3D, translating the trigger ref may work.
- Strangely, when a trigger's 3D unloads and reloads, the game may fire "leave" for each ref within the trigger, but only fire "enter" for some of them. Translating the trigger afterward seems to fire "enter" for whatever refs failed to fire it upon 3D reloading.