Why isn't my joystick's 2nd circle visible when it's a child node?

  • Thread starter Thread starter Darkmisc
  • Start date Start date
Click For Summary
SUMMARY

The issue discussed pertains to the visibility of the InnerCircle sprite in a Godot game when the joystick is implemented as a child node of Player.tscn. The joystick code functions correctly, allowing player control, but the InnerCircle only appears when the joystick scene is run independently. Key troubleshooting steps include verifying visibility properties, checking layer and Z-index settings, ensuring correct scale and position, and reviewing the parent-child hierarchy to identify potential conflicts that may prevent the InnerCircle from rendering.

PREREQUISITES
  • Familiarity with Godot Engine 3.x scene structure
  • Understanding of CanvasLayer and Node2D nodes in Godot
  • Basic knowledge of GDScript for game development
  • Experience with debugging visibility issues in game engines
NEXT STEPS
  • Investigate Godot's visibility and Z-index settings for child nodes
  • Learn about the CanvasLayer node and its impact on rendering
  • Explore GDScript debugging techniques for visual elements
  • Review parent-child relationships in Godot to understand hierarchy effects
USEFUL FOR

Game developers using Godot Engine, particularly those working with UI elements and sprite visibility issues in 2D games.

Darkmisc
Messages
222
Reaction score
31
TL;DR
My Godot game uses a touchscreen joystick comprising of two circles. One is the touchscreen area. The other is a smaller circle to show where the player is pressing. The smaller circle is visible when I run the joystick scene on its own, but not visible when the joystick is a child node.
Hi everyone

I'm using this code for a touchscreen joystick in my Godot game:
[CODE lang="python" title="joystick"]
extends CanvasLayer

var move_vector = Vector2(0, 0)
var joystick_active = false

func _input(event):
if event is InputEventScreenTouch or event is InputEventScreenDrag:
if $TouchScreenButton.is_pressed():
move_vector = calculate_move_vector(event.position)
joystick_active = true

$InnerCircle.position = event.position
$InnerCircle.visible = true

if event is InputEventScreenTouch:
if event.pressed == false:
joystick_active = false
Global.move_vector=Vector2(0,0)
$InnerCircle.visible = false


func _physics_process(_delta):
if joystick_active:
Global.move_vector = move_vector
emit_signal("use_move_vector", move_vector)

func calculate_move_vector(event_position):
var texture_center = $TouchScreenButton.position + Vector2(100,600)
return (event_position - texture_center).normalized()
[/CODE]

The code works for controlling the player, but the InnerCircle sprite is only visible when I run the joystick scene on its own. When I run it as a child node of Player.tscn, InnerCircle doesn't appear, although the joystick still works fine.
1695774452337.png


InnerCircle (the black dot) is visible in the editor, but not when I run Player.tscn.

1695774502805.png


The same applies when I run Player.tscn as a child node of Level.tscn.

Does anyone know why this is happening? I'm stuck for ideas. I've tried making sure the joystick ("Node2D") is on top, but it's in a canvas layer, so nothing should be blocking it anyway. Thanks
 
Technology news on Phys.org
Does the widget need focus to show the player dot?

Focus is when a widget is somehow selected by the user.

  • Checking visibility properties -- are both components set to visible
  • Verifying layer and Z-index settings -- check if the inner circle isn't hiding behind some component
  • Ensuring correct scale and position.
  • Checking collision shapes.
  • Reviewing the parent-child hierarchy.
 
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
Replies
5
Views
2K