Description
Changelog
Reviews (1)

Virtual Joystick DX

A fully customizable, modular virtual joystick plugin for touchscreen games in Godot 4. Switch between a smooth 360° analog joystick and an 8-direction D-Pad, all from a single node.

Compatible with Godot 4.6+ — tested on 4.7


Features

  • Two control styles — Joystick (360°) or D-Pad (8-direction), swappable per node.
  • Three joystick modesSTATIC, DYNAMIC, FOLLOWING, from a fixed base to one that floats and follows the finger.
  • Action Mapping system — bind any stick to custom InputMap actions with five trigger modes (ON_TOUCH, CONTINUOUS, ON_THRESHOLD, ON_RELEASE, TAP_GESTURE), great for a second stick dedicated to aiming or shooting.
  • Full haptic feedback — independent vibration for press, release, and direction change, tuned separately per style.
  • Active Region — restrict touch detection to a custom screen area, ideal for dual-stick setups.
  • Dynamic visibility — auto-hides when a gamepad or physical input is detected, and reappears on touch.
  • Fully skinnable — custom textures for the joystick and D-Pad, with color fallbacks when none are set.
  • Modular architecture — math, rendering, region logic, and hardware detection each live in their own class.

Quick start

  1. Copy addons/virtual_joystick_DX/ into your project's addons/ folder.
  2. Enable Virtual Joystick DX in Project → Project Settings → Plugins.
  3. Add the VirtualJoystickDX node under a CanvasLayer.
  4. Read movement with Input.get_axis() — not get_vector().

For full property tables, trigger-mode details, signals, and troubleshooting, see the extended Readme.

Changelog for version v1.1c Action Binding

No changelog provided for this version.

Reviews

Recommended by Boaz eliyahu Yehezkel - 06 August 2026

working very good

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.