Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Asset that improves touch input support (includes new gestures) in the Godot game engine. It also translates mouse input to touch input.

License

NotificationsYou must be signed in to change notification settings

Federico-Ciuffardi/GodotTouchInputManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Godot Touch Input Manager

Godot Touch Input Manager (GDTIM) is an asset that improves touch input support (includesnew gestures) in the Godot game engine. You just need to autoload a script and it will start analyzing the touch input. When a gesture is detected a Custom Input Event corresponding to the detected gesture will be created andfed up to the Godot built in Input Event system so it triggers functions like_input(InputEvent event). There is also a signal for each gesture if you prefer using signals to the aforementioned.

There are two active PRs that add some GDTIM gestures as native Godot events, one forversion 3.x and one forversion 4.x, if you are interested, please show your support there.

Table of contents

How to use

Examples

Demo

Demo

Documentation

Supported gestures

Gesture nameSignalCustom input event / Signal argDescription
Single finger touchsingle_touchInputEventSingleScreenTouchTouch with a single finger
Single finger tapsingle_tapInputEventSingleScreenTapFast press and release with a single finger
Single finger long presssingle_long_pressInputEventSingleScreenLongPressPress and hold with a single finger
Single finger dragsingle_dragInputEventSingleScreenDragDrag with a single finger
Single finger swipesingle_swipeInputEventSingleScreenSwipeFast drag and release with a single finger
Multiple finger tapmulti_tapInputEventMultiScreenTapFast press and release with multiple fingers
Multiple finger long pressmulti_long_pressInputEventMultiScreenLongPressPress and hold with multiple fingers
Multiple finger dragmulti_dragInputEventMultiScreenDragDrag with multiple fingers (same direction)
Multiple finger swipemulti_swipeInputEventMultiScreenTapFast drag and release with multiple fingers
PinchpinchInputEventScreenPinchDrag with multiple fingers (inward/outward)
TwisttwistInputEventScreenTwistDrag with multiple fingers (rotate)
Raw gestureraw_gestureRawGestureRaw gesture state

When one of these gestures is detected a Custom Input Event corresponding to the detected gesture will be created andfed up to the Godot built in Input Event system so it triggers functions like_input(InputEvent event).

Gesture emulation

The gestures can be triggered by namedinput actions with specific names. If the inputaction does not exists there is a default event that will trigger the gesture.

The following table shows the default event and the names of the input actionsthat will trigger each of the gestures that can be emulated.

Gesture nameInput action nameDefault event
Single touchsingle_touch*
Multiple touch (2 fingers)multi_touchMiddle click
Pinch (outward)pinch_outwardScroll up
Pinch (inward)pinch_inwardScroll down
TwisttwistRight click
Single finger swipe (up)single_swipe_upw
Single finger swipe (up-right)single_swipe_up_righte
Single finger swipe (right)single_swipe_rightd
Single finger swipe (down-right)single_swipe_down_rightc
Single finger swipe (down)single_swipe_downx
Single finger swipe (down-left)single_swipe_down_leftz
Single finger swipe (left)single_swipe_lefta
Single finger swipe (left-up)single_swipe_up_leftq
Multiple finger swipe (up)multi_swipe_upi
Multiple finger swipe (up-right)multi_swipe_up_righto
Multiple finger swipe (right)multi_swipe_rightl
Multiple finger swipe (down-right)multi_swipe_down_right.
Multiple finger swipe (down)multi_swipe_down,
Multiple finger swipe (down-left)multi_swipe_down_leftm
Multiple finger swipe (left)multi_swipe_leftj
Multiple finger swipe (left-up)multi_swipe_up_leftu

* There are two options to enable single finger gestures:

  1. Go toProject > Project Settings > General > Input Devices > Pointingand turn onEmulate Touch From Mouse to emulate a single finger touch withthe left click.
  2. Go toProject > Project Settings > General > Input Devices > Pointingand turn off bothEmulate Touch From Mouse andEmulate Mouse From Touch.Then set an input action calledsingle_touch.

Configuration

These are located in the first lines ofInputManager.gd, to change them modify thevalues on the script.

NameDefault valueDescription
DEFAULT_BINDIGStrueEnable or disable default events forgesture emulation
DEBUGfalseEnable or disable debug information
DRAG_STARTUP_TIME0.2Seconds from the first native drag event to the firstsingle finger drag custom event
FINGER_SIZE100.0The distance between the fingers must be less thanfingers*FINGER_SIZE pixels for themultiple finger tap andmultiple finger swipe gestures to be recognized. Setting it toINF removes this restriction.
MULTI_FINGER_RELEASE_THRESHOLD0.1All fingers must be released withinMULTI_FINGER_REALEASE_THRESHOLD seconds before the gesture ends for themultiple finger tap andmultiple finger swipe gestures to be recognized
TAP_TIME_LIMIT0.2The time between the first press and the last release must be less thanTAP_TIME_LIMIT seconds for thesingle finger tap andmultiple finger tap gestures to be recognized
TAP_DISTANCE_LIMIT25.0The centroid of the finger presses must differ less thanTAP_DISTANCE_LIMIT pixels from the centroid of the finger releases for thesingle finger tap andmultiple finger tap gestures to be recognized.
SWIPE_TIME_LIMIT0.5The time between the first press and the last release must be less thanSWIPE_TIME_LIMIT seconds for thesingle finger swipe andmultiple finger swipe gestures to be recognized.
SWIPE_DISTANCE_THRESHOLD200.0The centroid of the finger presses must differ by more thanSWIPE_DISTANCE_THRESHOLD pixels from the centroid of the finger releases for thesingle finger swipe andmultiple finger swipe gestures to be recognized.
LONG_PRESS_TIME_THRESHOLD0.75The fingers must press forLONG_PRESS_TIME_THRESHOLD seconds forsingle-finger long press andmulti-finger long press gestures to be recognized.
LONG_PRESS_DISTANCE_LIMIT25.0The centroid of the finger presses must differ less thanLONG_PRESS_DISTANCE_LIMIT pixels from the centroid of the fingers last positions for thesingle finger long press andmultiple finger long press gestures to be recognized.

FAQ

How can I get GDTIM to work when using control nodes?

By default, the control nodes consume events and therefore GDTIM cannot analyze them. To prevent this, setMouse>Filter toIgnore on control nodes as needed.

image

For more information see thedocumentation.

GDTIM events don't trigger collisions, is there a way to fix it?

Custom input events do not trigger collisions, at the moment the solution is to manually check for collisions between shapes and events. For more information and ideas on how to do this seethis issue.

Versioning

UsingSemVer for versioning. For the versions available, see thereleases.

Authors

  • Federico Ciuffardi

Feel free to append yourself here if you've made contributions.

Note

Thank you for checking out this repository, you can send all your questions and comments toFederico.Ciuffardi@outlook.com.

If you are willing to contribute in any way, please contact me.

About

Asset that improves touch input support (includes new gestures) in the Godot game engine. It also translates mouse input to touch input.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors9


[8]ページ先頭

©2009-2025 Movatter.jp