[GODOT 4.1] .gd file bar not appearing in area2d's inspector tab
SuperGibaLogan Well press it when editing code and see what happens
xyz pressed it
xyz but what do i do next after i pressed it?
SuperGibaLogan The same thing you did after you pressed space - type a line of code.
xyz ok, i could try to rewrite the lines of code underneath
xyz so i did try to rewrite but it still gave me errors, im also thinking of searching up a pathfinding tutorial and remake the code entirely
SuperGibaLogan Post the rewritten code. You don't need more tutorials. Finish this one.
SuperGibaLogan you need a using a keyboard tutorial not a godot tutorial
xyz right here:
extends Area2D
var current_scatter_index = 0
@export var speed = 75
@export var movement_targets = Resource
@export var tile_map = TileMap
@export var navigation_area_2d = $NavigationAgent2D
func _ready():
navigation_area_2d.path_desired_distance = 4.0
navigation_area_2d.target_desired_distance = 4.0
navigation_area_2d.target_reached.connect(on_position_reached)
call_deferred("setup")
func _process(delta):
move_ghost(navigation_area_2d.get_next_path_position(), delta)
func move_ghost(next_position Vector2 delta float):
var current_ghost_position = global_position
var new_velocity = (next_position - current_ghost_position).normalized()
func setup():
navigation_area_2d.set_navigation_map(tile_map.get_navigation_map(0))
NavigationServer2D.agent_set_map(navigation_area_2d.get_rid(), tile_map.get_navigation_map(0))
func scatter():
navigation_area_2d.target_position = movement_targets.scatter_targets[current_scatter_index].position
func on_position_reached():
if current_scatter_index < 3:
current_scatter_index += 1
else:
current_scatter_index = 0
- Edited
SuperGibaLogan You need to put tabs instead of spaces for all block indentations as you did in move_ghost
function. The script editor will display tabs as those subtle arrow thingies:
You can see it in the tutorial as well, that's how you know the instructor (or you) inserted a tab character there by pressing the tab key, not space. The number of tabs at the start of each line determines to which code block the line belongs. In GDScript similar to Python this indentation is used to structure the code. The structure affects the execution flow so take care not to mess it up there. One wrong tab and the code may not be working as intended.
- Edited
xyz so i putted tabs
extends Area2D
var current_scatter_index = 0
@export var speed = 75
@export var movement_targets = Resource
@export var tile_map = TileMap
@export var navigation_area_2d = $NavigationAgent2D
func _ready():
navigation_area_2d.path_desired_distance = 4.0
navigation_area_2d.target_desired_distance = 4.0
navigation_area_2d.target_reached.connect(on_position_reached)
call_deferred("setup")
func _process(delta):
move_ghost(navigation_area_2d.get_next_path_position(), delta)
func move_ghost(next_position Vector2 delta float):
var current_ghost_position = global_position
var new_velocity = (next_position - current_ghost_position).normalized()
func setup():
navigation_area_2d.set_navigation_map(tile_map.get_navigation_map(0))
NavigationServer2D.agent_set_map(navigation_area_2d.get_rid(), tile_map.get_navigation_map(0))
func scatter():
navigation_area_2d.target_position = movement_targets.scatter_targets[current_scatter_index].position
func on_position_reached():
if current_scatter_index < 3:
current_scatter_index += 1
else:
current_scatter_index = 0
- Edited
SuperGibaLogan That call_deferred
line should also be indented with the function body it belongs to. You can't have any code outside of functions, except variable declarations.
xyz should the call_deferred
line be in the func setup():
line?
- Edited
SuperGibaLogan should the call_deferred line be in the func setup(): line?
How would I know ? Look where they've put it in the tutorial.
- Edited
xyz ok lemme see
it said to put it in the func ready statement so i did
- Edited
SuperGibaLogan Yay! Now the code is at least properly indented. You still have syntax errors we were talking about earlier, like that missing colon between function argument's name and its type.
Read the error message, try to understand what it means and proceed to fix it. The easiest way would be by comparing the offending line with the same line in the tutorial. And remember, every character is important as it has a role within the language syntax.
Note that the engine will typically display only the first error it encounters. After you fix that error, it may show you the next error it found. So go fix them one-by-one as the engine reports them, until there are no more errors. At that point the exported properties should be displayed in the inspector.
xyz i found a few syntax errors:
Line 23:Expected closing ")" after function parameters.
Line 23:Expected ":" after function declaration.
Line 23:Expected end of statement after expression, found "Identifier" instead.
Line 24:Unexpected "Indent" in class body.
Line 28:Expected end of file.
im confused on the 2nd line 23 error that says to put a ":" after the function declaration, but i already putted it in as func move_ghost(next_position Vector2 delta float):