Skip to content

Commit 2b988c3

Browse files
hide obstacle avoidance UI
1 parent 99f3888 commit 2b988c3

7 files changed

Lines changed: 142 additions & 52 deletions

File tree

navigation/beetle.tscn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,9 @@ transform = Transform3D(-1.4, 0, -2.11394e-07, 0, 1.4, 0, 2.11394e-07, 0, -1.4,
142142

143143
[node name="NavigationAgent3D" type="NavigationAgent3D" parent="."]
144144
unique_name_in_owner = true
145+
path_desired_distance = 0.2
145146
target_desired_distance = 0.2
146147
agent_height_offset = 0.5
147148
avoidance_enabled = true
148-
radius = 1.0
149+
time_horizon = 0.5
149150
debug_enabled = true

navigation/beetle_move_to_position.gd

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,28 @@ func _ready() -> void:
2424
set_physics_process(false)
2525

2626

27+
func set_avoidance_enabled(enabled: bool) -> void:
28+
_navigation_agent.avoidance_enabled = enabled
29+
30+
31+
func set_avoidance_radius(radius: float) -> void:
32+
_navigation_agent.radius = radius
33+
34+
2735
func _physics_process(_delta: float) -> void:
2836
# Wait for the next location to be accessible, for example, a moving platform.
2937
var next_location := _navigation_agent.get_next_path_position()
3038

31-
# var global_look_position: Vector3 = target_global_position
32-
# global_look_position.y = global_position.y
3339
look_at(next_location)
34-
40+
3541
var direction := (next_location - global_position).normalized()
36-
_navigation_agent.set_velocity(direction * SPEED)
42+
43+
if _navigation_agent.avoidance_enabled:
44+
_navigation_agent.set_velocity(direction * SPEED)
45+
else:
46+
velocity = direction * SPEED
47+
move_and_slide()
48+
3749
if _navigation_agent.is_navigation_finished():
3850
_beetle_skin.idle()
3951
set_physics_process(false)

navigation/beetle_moving_platforms.gd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ extends CharacterBody3D
33

44
signal path_end_reached
55

6-
76
const SPEED := 3.0
87

98
## This array represents a queue of the locations the agent will move towards.

navigation/navigation_arena.gd

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,21 @@ const Beetle = preload("beetle_move_to_position.gd")
77
@onready var ray_cast_3d: RayCast3D = %RayCast3D
88
@onready var sphere: MeshInstance3D = %Sphere
99
@onready var beetle: Beetle = %Beetle
10+
@onready var avoidance_toggle: CheckButton = %AvoidanceToggle
11+
@onready var radius_slide: HSlider = %RadiusSlider
12+
13+
14+
func _ready():
15+
avoidance_toggle.toggled.connect(_on_avoidance_toggled)
16+
radius_slide.value_changed.connect(_on_radius_value_changed)
17+
18+
19+
func _on_avoidance_toggled(toggled: bool) -> void:
20+
beetle.set_avoidance_enabled(toggled)
21+
22+
23+
func _on_radius_value_changed(value: float) -> void:
24+
beetle.set_avoidance_radius(value)
1025

1126

1227
func _unhandled_input(event: InputEvent) -> void:

navigation/navigation_arena.tscn

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[ext_resource type="Script" path="res://navigation/beetle_move_to_position.gd" id="3_g41jl"]
66
[ext_resource type="Sky" uid="uid://jonn5eom7asv" path="res://outdoor_environment/sky/blue_sky.tres" id="5_qta1r"]
77
[ext_resource type="Shader" path="res://outdoor_environment/materials/water/water_shader.gdshader" id="6_luajm"]
8-
[ext_resource type="PackedScene" uid="uid://c0qm7kpfs8hcr" path="res://navigation/obstacle.tscn" id="7_a3on2"]
8+
[ext_resource type="Theme" uid="uid://bgpjrj0qf7awr" path="res://interface/theme.tres" id="7_vkmm1"]
99
[ext_resource type="Texture2D" uid="uid://ssrlnj65d4bs" path="res://outdoor_environment/materials/water/textures/caustic_texture.png" id="7_y1abr"]
1010

1111
[sub_resource type="NavigationMesh" id="NavigationMesh_f1mbg"]
@@ -148,5 +148,54 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.692534, 0)
148148
material_override = SubResource("ShaderMaterial_e6agb")
149149
mesh = SubResource("PlaneMesh_3tmkq")
150150

151-
[node name="Obstacle" parent="." instance=ExtResource("7_a3on2")]
152-
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.71932, 0.95, 0.681051)
151+
[node name="Panel" type="Panel" parent="."]
152+
visible = false
153+
offset_left = 28.0
154+
offset_top = 29.0
155+
offset_right = 354.0
156+
offset_bottom = 145.0
157+
158+
[node name="AvoidanceSettings" type="MarginContainer" parent="Panel"]
159+
layout_mode = 1
160+
anchors_preset = 15
161+
anchor_right = 1.0
162+
anchor_bottom = 1.0
163+
grow_horizontal = 2
164+
grow_vertical = 2
165+
theme = ExtResource("7_vkmm1")
166+
167+
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/AvoidanceSettings"]
168+
layout_mode = 2
169+
170+
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/AvoidanceSettings/VBoxContainer"]
171+
custom_minimum_size = Vector2(200, 0)
172+
layout_mode = 2
173+
174+
[node name="Label" type="Label" parent="Panel/AvoidanceSettings/VBoxContainer/HBoxContainer"]
175+
layout_mode = 2
176+
text = "Avoidance Toggle"
177+
178+
[node name="AvoidanceToggle" type="CheckButton" parent="Panel/AvoidanceSettings/VBoxContainer/HBoxContainer"]
179+
unique_name_in_owner = true
180+
layout_mode = 2
181+
size_flags_horizontal = 3
182+
button_pressed = true
183+
flat = true
184+
185+
[node name="HBoxContainer2" type="HBoxContainer" parent="Panel/AvoidanceSettings/VBoxContainer"]
186+
custom_minimum_size = Vector2(200, 0)
187+
layout_mode = 2
188+
189+
[node name="Label" type="Label" parent="Panel/AvoidanceSettings/VBoxContainer/HBoxContainer2"]
190+
layout_mode = 2
191+
text = "Avoidance Radius"
192+
193+
[node name="RadiusSlider" type="HSlider" parent="Panel/AvoidanceSettings/VBoxContainer/HBoxContainer2"]
194+
unique_name_in_owner = true
195+
layout_mode = 2
196+
size_flags_horizontal = 3
197+
size_flags_vertical = 1
198+
min_value = 0.1
199+
max_value = 5.0
200+
step = 0.1
201+
value = 0.5

navigation/obstacle.gd

Lines changed: 0 additions & 36 deletions
This file was deleted.

navigation/obstacle.tscn

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,66 @@
1-
[gd_scene load_steps=3 format=3 uid="uid://c0qm7kpfs8hcr"]
2-
3-
[ext_resource type="Script" path="res://navigation/obstacle.gd" id="1_obtb1"]
1+
[gd_scene load_steps=7 format=3 uid="uid://8d4cudcb6xpc"]
42

53
[sub_resource type="SphereShape3D" id="SphereShape3D_id3s4"]
64

7-
[node name="Obstacle" type="CharacterBody3D"]
8-
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.28523, 0.95, -2.33882)
9-
script = ExtResource("1_obtb1")
5+
[sub_resource type="Animation" id="Animation_veodu"]
6+
resource_name = "default"
7+
length = 3.0
8+
loop_mode = 1
9+
tracks/0/type = "value"
10+
tracks/0/imported = false
11+
tracks/0/enabled = true
12+
tracks/0/path = NodePath(".:position")
13+
tracks/0/interp = 1
14+
tracks/0/loop_wrap = true
15+
tracks/0/keys = {
16+
"times": PackedFloat32Array(0, 1.5),
17+
"transitions": PackedFloat32Array(1, 1),
18+
"update": 0,
19+
"values": [Vector3(0.0613372, 0.95, 2.19116), Vector3(0.0613372, 0.95, -1.37318)]
20+
}
21+
22+
[sub_resource type="Animation" id="Animation_e4hp1"]
23+
length = 0.001
24+
tracks/0/type = "value"
25+
tracks/0/imported = false
26+
tracks/0/enabled = true
27+
tracks/0/path = NodePath(".:position")
28+
tracks/0/interp = 1
29+
tracks/0/loop_wrap = true
30+
tracks/0/keys = {
31+
"times": PackedFloat32Array(0),
32+
"transitions": PackedFloat32Array(1),
33+
"update": 0,
34+
"values": [Vector3(0.0613372, 0.95, 2.19116)]
35+
}
36+
37+
[sub_resource type="AnimationLibrary" id="AnimationLibrary_l5lp8"]
38+
_data = {
39+
"RESET": SubResource("Animation_e4hp1"),
40+
"default": SubResource("Animation_veodu")
41+
}
42+
43+
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rekvp"]
44+
albedo_color = Color(1, 0, 0, 1)
1045

11-
[node name="CSGSphere3D" type="CSGSphere3D" parent="."]
46+
[sub_resource type="SphereMesh" id="SphereMesh_reh6l"]
47+
48+
[node name="Obstacle" type="CharacterBody3D"]
49+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0613372, 0.95, 0.29285)
1250

1351
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
1452
shape = SubResource("SphereShape3D_id3s4")
1553

1654
[node name="NavigationObstacle3D" type="NavigationObstacle3D" parent="."]
55+
estimate_radius = false
56+
radius = 0.5
57+
58+
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
59+
autoplay = "default"
60+
libraries = {
61+
"": SubResource("AnimationLibrary_l5lp8")
62+
}
63+
64+
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
65+
material_override = SubResource("StandardMaterial3D_rekvp")
66+
mesh = SubResource("SphereMesh_reh6l")

0 commit comments

Comments
 (0)