Giter Club home page Giter Club logo

virtual-joystick-godot's Introduction

Godot Virtual Joystick

A simple virtual joystick for touchscreens, with useful options.

GitHub Page: https://github.com/MarcoFazioRandom/Virtual-Joystick-Godot

Godot Engine: https://godotengine.org

PREVIEWS:

Easy to use:

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 the joystick output:
#	if joystick_left and joystick_left.is_pressed:
#		position += joystick_left.output * speed * delta

	## Movement using Input functions:
	move_vector = Vector2.ZERO
	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:

  • Joystick mode:

    • Fixed: The joystick doesn't move.
    • Dynamic: Every time the joystick area is pressed, the joystick position is set on the touched position.
    • Following: When the finger moves outside the joystick area, the joystick will follow it.
  • Dead zone size: If the tip is inside this range the output is zero.

  • Clamp zone size: The max distance the tip can reach.

  • Visibility mode:

    • always: Always visible.
    • touchscreen only: Visible on touch screens only (will hide if the device has not a touchscreen).
    • when_touched: Visible only when touched.
  • Use input actions: if true the joystick will trigger the input actions created in Project -> Project Settings -> Input Map

HELP:

  • The Control parent of the joystick is the area in which the joystick can move in Dynamic mode.
  • For moving the joystick inside his area, select it, right click, turn on "Editable Children" and then change the position of the Base node.
  • With "Editable Children" turned on you can also edit the joystick textures and colors.
  • Create a CanvasLayer node and name it "UI", it'll contain all the UI elements, then add the Joystick scene as a child of the UI node and move it where you prefer.
  • An example scene is provided in the "Test" folder.

FAQ

Multitouch doesn't work / can't use two joystick at the same time:

In Godot, the input events from the mouse don't support multitouch, so make sure to have this configuration:
Project -> Project Settings -> General -> Input Devices
"emulate touch from mouse" ON
"emulate mouse from touch" OFF

The joystick doesn't work when using Input.get_vector():

โš  This has been fixed in Godot Engine 4.2.1
Unfortunately, this a bug in the Godot engine, so the only solution for now is using Input.get_axis:
This doesn't work:

input_vector := Input.get_vector("ui_left","ui_right","ui_up","ui_down")

This works:

input_vector := Vector2.ZERO
input_vector.x = Input.get_axis("ui_left", "ui_right")
input_vector.y = Input.get_axis("ui_up", "ui_down")

virtual-joystick-godot's People

Contributors

marcofaziorandom avatar aaronrecord avatar unreali avatar eawebdev avatar jack3g avatar nemodreamer avatar imp-sike avatar vlaska avatar warent avatar ztc0611 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.