/godot-radial-menu

A radial menu for Godot, supports Mobile & Desktop

Primary LanguageGDScriptMIT LicenseMIT

Table of Contents

  1. Godot Radial Menu
    1. Setup
    2. Supported signals
    3. Supported controls
      1. Center Node
      2. Width max
      3. Width min
      4. Cursor size
      5. Cursor deg
      6. Color BG
      7. Color FG
      8. Bevel Enabled
      9. Bevel Color
      10. Bevel Width
      11. Modulate Enabled
      12. Modulate Color
      13. Modulate Width

Godot Radial Menu

img img img img

I created this Radial Menu as an addon for a few of my projects.

The rendering of the menu is primarily done through shader code and so should be pretty performant.

radial-menu.mov

Setup

img

func _ready():
    $RadialMenu.connect("selected", self, "_on_selected")

func _input(event: InputEvent):
    if event is InputEventScreenTouch:
        $RadialMenu.set_visible(event.pressed)

func _on_selected(child: Node):
    prints("Child was selected:", child)

Supported signals

hovered(child) Emitted when a button or child is hovered

selected(child) Emitted when a button or child is selected

Supported controls

img

Center Node

set_center_node(Node)

Controls display in center of the spinner

Width max

set_width_max(Float)

  • Minimum: 0
  • Maximum: 1

The outside edge size of the spinner

Width min

set_width_min(Float)

  • Minimum: 0
  • Maximum: 1

The inside edge size of the spinner

Cursor size

set_cursor_size(Float)

  • Minimum: 0
  • Maximum: +ve PI

The size of the radial arc (blue portion)

Cursor deg

set_cursor_deg(Float)

  • Minimum: -ve PI
  • Maximum: +ve PI

The starting degree of the cursor (will update with mouse or touch events)

Color BG

set_color_bg(Color)

Background color of the radial (supports RGBA)

Color FG

set_color_fg(Color)

Foreground color of the radial (supports RGBA)

Bevel Enabled

set_bevel_enabled(bool)

Should a bevel be present on the edges of the modal

Bevel Color

set_bevel_color(Color)

What color should the bevel be (if present)

Bevel Width

set_bevel_width(float)

What should the width of the bevel be (if present)

Modulate enabled

set_modulate_enabled(bool)

If enabled, buttons will be automatically modulated to the colors selected when hovered and unhovered

Modulate hover

set_modulate_hover(Color)

Color modulation to be applied to each button (or control) when it's hovered. This is only applied i modulate_enabled is true

Modulate default

set_modulate_default(Color)

Color modulation to be applied to each button (or control) in it's default state. This is only applied i modulate_enabled is true

Support

Buy Me A Coffee