Difference between revisions of "OnTriggerEnter - ObjectReference"
Jump to navigation
Jump to search
imported>Goggle m (→Examples) |
imported>Scrivener07 (→Notes: Interactive Conditions) |
||
(One intermediate revision by one other user not shown) | |||
Line 22: | Line 22: | ||
<br> | <br> | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
; Check how many objects | ; Check how many objects are inside the trigger so that the events run in proper sequence. | ||
Event OnTriggerEnter(ObjectReference akTriggerRef) | Event OnTriggerEnter(ObjectReference akTriggerRef) | ||
if GetTriggerObjectCount() == 1 | if GetTriggerObjectCount() == 1 | ||
Line 46: | Line 46: | ||
** Note, however, that because of the way Papyrus event handling and threading works, at any given moment, your count may be inaccurate, and there is a risk of the count becoming 'stuck' over time if events are not processed correctly. If your script requires precise accuracy, use the trigger's Interaction Conditions to restrict it to just the references you care about (eg. the player), then use [[GetTriggerObjectCount_-_ObjectReference|GetTriggerObjectCount]] to verify that the reference is actually in the trigger at the time it matters. | ** Note, however, that because of the way Papyrus event handling and threading works, at any given moment, your count may be inaccurate, and there is a risk of the count becoming 'stuck' over time if events are not processed correctly. If your script requires precise accuracy, use the trigger's Interaction Conditions to restrict it to just the references you care about (eg. the player), then use [[GetTriggerObjectCount_-_ObjectReference|GetTriggerObjectCount]] to verify that the reference is actually in the trigger at the time it matters. | ||
* The trigger's Collision Layer (typically L_TRIGGER) determines what types of objects will fire OnTriggerEnter/OnTriggerLeave events when they enter the trigger. For example, actors do, statics don't. | * The trigger's Collision Layer (typically L_TRIGGER) determines what types of objects will fire OnTriggerEnter/OnTriggerLeave events when they enter the trigger. For example, actors do, statics don't. | ||
* A trigger's Interactive Conditions can be used to specify the type of object(s) that can send this event. | |||
== See Also == | == See Also == |
Latest revision as of 13:26, 30 August 2018
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!")
EndEvent
; Check how many objects are inside the trigger so that the events run in proper sequence.
Event OnTriggerEnter(ObjectReference akTriggerRef)
if GetTriggerObjectCount() == 1
if akTriggerRef == Game.GetPlayer()
; debug.notification("Entered Trigger")
GetLinkedRef().Activate(Game.GetPlayer())
endif
endif
EndEvent
Event OnTriggerLeave(ObjectReference akTriggerRef)
if GetTriggerObjectCount() == 0
if akTriggerRef == Game.GetPlayer()
; debug.notification("Leaving Trigger")
GetLinkedRef().Activate(Game.GetPlayer())
endif
endif
EndEvent
Notes[edit | edit source]
- This event can be received out of order with OnTriggerLeave, so it's better to keep a count instead of a simple true/false value for when things are inside the trigger.
- Note, however, that because of the way Papyrus event handling and threading works, at any given moment, your count may be inaccurate, and there is a risk of the count becoming 'stuck' over time if events are not processed correctly. If your script requires precise accuracy, use the trigger's Interaction Conditions to restrict it to just the references you care about (eg. the player), then use GetTriggerObjectCount to verify that the reference is actually in the trigger at the time it matters.
- The trigger's Collision Layer (typically L_TRIGGER) determines what types of objects will fire OnTriggerEnter/OnTriggerLeave events when they enter the trigger. For example, actors do, statics don't.
- A trigger's Interactive Conditions can be used to specify the type of object(s) that can send this event.