I tried experimenting with the new enhanced input system and mobile but I came to an issue : The “end touch” event doesn’t seem to trigger anything inside the enhanced input system.
InputTriggers should technically trigger their UpdateState, and IsActuated() should returns false. But here, nothing is triggered at all during an “end touch”.
If you want to test you can just test a “Down” trigger which works perfectly, but a “Pressed” will only trigger once and will then be blocked. A “Released” trigger will never trigger at all.
Note: I’m testing it in the editor, using UseMouseForTouch.
any word on this? It’s same for me. Broken. Right mouse button works perfectly with the triggers like “Tap” but with touch it only works once then never again
Input action for this mapping is set to Released after 0.5s. Description of Released says “Triggers ongoing while above actuation threshold”. And “Triggers only once when falls below actuation threshold.”
In testing this example only Ongoing is ever fired.
With Tap the description is “Input must be actuated then released within TapReleaseTimeThreshold to Trigger”. In practice this will trigger the first time and then never again. If i set threshold to 1 second and release before that time, I see Tap Ongoing debug message repeated. If I go over that 1 second threshold, no Triggered event is fired and then no other input for this event works. There is no further ongoing event fired.
Would be great if we could get some clarification on how to use Enhanced input for things like Tap and Release with Touch Controls. I believe there are some bugs here, or perhaps I just have some misunderstanding.
Update: After more testing it seems there is no way to get the screen position of a touch event with Released as the selected trigger. When looking at Instance.GetValue() description it states “Will be Zero if event is not ETriggerEvent::Triggered!”. Because Triggered never fires, its always zero. The only events that ever fire with Released is Started, Ongoing, and Cancelled.
Pulse will trigger multiple times if Trigger Limit is 0. However it will only ever fire once if set to 1. And then it can never be fired again. Similar to Tap.
My discord is array_1337 if you wanna chat on this. As of now I gave up on this and have reverted to using the old Get Touch Input node and rolling my own features like tap, double tap etc. I could still roll my own with Enhanced Input but I dunno what other dragons are in it re: touch : )
I’ve also just run into this same issue, found your discord thread about it as well. Did you end up filing a bug report for it? I would happily upvote it
It sounds like you’re running into an issue with the Enhanced Input System and how it’s handling touch events, especially the “end touch” not triggering properly.
Check Input Mapping, maybe for the “Released” action (or “end touch”), make sure that the input action mapping in the -Enhanced Input System- is set up correctly for touch inputs. Double-check that the action is configured to trigger on -Input Release-.
Check Action States and try debugging by printing out the -Action State- during the touch phases. This will give you a clear idea of whether the input system is receiving the “end touch” event but failing to execute any logic.
Debug here to track why the touch end is not being detected:
cpp
if (YourInputAction->IsActuated()) { // Your touch is being detected } else { // Debug here to track why the touch end is not being detected }