# Virtual-Joystick-Godot
**Repository Path**: rootjd/Virtual-Joystick-Godot
## Basic Information
- **Project Name**: Virtual-Joystick-Godot
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: Main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-17
- **Last Updated**: 2025-09-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Godot Virtual Joystick
A simple yet powerful virtual joystick for touchscreens in Godot, packed with useful options to enhance your game's mobile experience.
[](https://godotengine.org)
[](https://github.com/MarcoFazioRandom/Virtual-Joystick-Godot)
## 🎮 Features
- Easy to integrate
- Customizable appearance
- Multiple joystick modes
- Input action support
- Visibility options
## 📸 Preview
## 🚀 Quick Start
1. Add the joystick to your scene
2. Configure the options
3. Use the following script to get started:
```gdscript
extends Sprite2D
@export var speed : float = 100
@export var joystick_left : VirtualJoystick
@export var joystick_right : VirtualJoystick
var move_vector := Vector2.ZERO
func _process(delta: float) -> void:
# Movement using Input functions:
move_vector = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
position += move_vector * speed * delta
# Rotation:
if joystick_right and joystick_right.is_pressed:
rotation = joystick_right.output.angle()
```
## ⚙️ Options
| Option | Description |
|--------|-------------|
| Joystick Mode | Fixed, Dynamic, or Following |
| Dead Zone Size | Minimum distance for output |
| Clamp Zone Size | Maximum distance for output |
| Visibility Mode | Always, Touchscreen Only, or When Touched |
| Use Input Actions | Trigger input actions defined in Project Settings |
## 🛠 Setup Tips
1. Create a `CanvasLayer` node named "UI" for all UI elements
2. Add the Joystick scene as a child of the UI node
3. Enable "Editable Children" to customize joystick appearance
4. Refer to the example scene in the "Test" folder
## 📘 FAQ
### Multitouch Issues?
Ensure these settings in Project -> Project Settings -> General -> Input Devices:
- "Emulate Touch from Mouse" : ON
- "Emulate Mouse from Touch" : OFF
If other buttons don't work with this configuration, use TouchScreenButton instead of TextureButton.
### Input.get_vector() Not Working?
⚠️ **Fixed in Godot 4.2.1**
For earlier versions, use this workaround:
```gdscript
input_vector := Vector2.ZERO
input_vector.x = Input.get_axis("ui_left", "ui_right")
input_vector.y = Input.get_axis("ui_up", "ui_down")
```
### Freeze/crash on Android editor
As mentioned in the [Docs](https://docs.godotengine.org/en/stable/tutorials/editor/using_the_android_editor.html), the Android editor is still unstable.
## 🤝 Contributing
Contributions are welcome! Feel free to submit issues or pull requests on the [GitHub repository](https://github.com/MarcoFazioRandom/Virtual-Joystick-Godot).
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
Made with ❤️ for the Godot community