-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
'Navigation Polygon 2D' ported to Godot 4.1.1
- Loading branch information
Showing
8 changed files
with
82 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
extends CharacterBody2D | ||
|
||
var movement_speed: float = 200.0 | ||
@onready var navigation_agent: NavigationAgent2D = $NavigationAgent2D | ||
|
||
func _ready(): | ||
# These values need to be adjusted for the actor's speed | ||
# and the navigation layout. | ||
navigation_agent.path_desired_distance = 2.0 | ||
navigation_agent.target_desired_distance = 2.0 | ||
pass | ||
|
||
func set_movement_target(movement_target: Vector2): | ||
navigation_agent.target_position = movement_target | ||
|
||
func _physics_process(_delta): | ||
if navigation_agent.is_navigation_finished(): | ||
return | ||
|
||
var current_agent_position: Vector2 = global_position | ||
var next_path_position: Vector2 = navigation_agent.get_next_path_position() | ||
|
||
velocity = current_agent_position.direction_to(next_path_position) * movement_speed | ||
move_and_slide() | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,17 @@ | ||
extends Node2D | ||
|
||
@export var character_speed: float = 400.0 | ||
var path = [] | ||
|
||
@onready var character = $Character | ||
|
||
#var navmap = NavigationServer2D.map_create() | ||
|
||
|
||
func _ready(): | ||
pass | ||
#NavigationServer2D.region_set_map(navmap, $NavigationRegion2d.get_rid()) | ||
|
||
|
||
func _process(delta): | ||
character.position = $NavigationAgent2d.get_next_location() | ||
var walk_distance = character_speed * delta | ||
#move_along_path(walk_distance) | ||
|
||
|
||
# The "click" event is a custom input action defined in | ||
# Project > Project Settings > Input Map tab. | ||
func _unhandled_input(event): | ||
if not event.is_action_pressed("click"): | ||
return | ||
_update_navigation_path(Vector2(), get_local_mouse_position()) | ||
|
||
#func move_along_path(distance): | ||
# return | ||
# var last_point = character.position | ||
# while path.size(): | ||
# var distance_between_points = last_point.distance_to(path[0]) | ||
# # The position to move to falls between two points. | ||
# if distance <= distance_between_points: | ||
# character.position = last_point.lerp(path[0], distance / distance_between_points) | ||
# return | ||
# # The position is past the end of the segment. | ||
# distance -= distance_between_points | ||
# last_point = path[0] | ||
# path.remove(0) | ||
# # The character reached the end of the path. | ||
# character.position = last_point | ||
# set_process(false) | ||
navigate_to(get_local_mouse_position()) | ||
|
||
var drawpos = Vector2() | ||
func _update_navigation_path(start_position, end_position): | ||
# get_simple_path is part of the Node2D class. | ||
# It returns a PackedVector2Array of points that lead you | ||
# from the start_position to the end_position. | ||
$NavigationAgent2d.set_target_location(end_position) | ||
drawpos = end_position | ||
func navigate_to(pos): | ||
$Character/NavigationAgent2D.target_position = pos | ||
drawpos = pos | ||
queue_redraw() | ||
# The first point is always the start_position. | ||
# We don't need it in this example as it corresponds to the character's position. | ||
#path.remove(0) | ||
#set_process(true) | ||
|
||
func _draw(): | ||
draw_circle(drawpos, 10, Color.RED) | ||
draw_circle(drawpos, 5, Color.RED) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
[gd_scene load_steps=7 format=3 uid="uid://bjgad00c2xiuc"] | ||
|
||
[ext_resource type="Script" path="res://navigation.gd" id="1_j3vjp"] | ||
[ext_resource type="Texture2D" uid="uid://bk26gi6qsuh18" path="res://map.png" id="2_nxfkp"] | ||
[ext_resource type="Script" path="res://character_navigation.gd" id="3_abq88"] | ||
[ext_resource type="Texture2D" uid="uid://b0wokaenwu7pj" path="res://character.png" id="4_55b5j"] | ||
|
||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_m8plu"] | ||
vertices = PackedVector2Array(336, 360, 316, 336, 394, 348, 388, 375, 356, 366, 465, 272, 559, 285, 509, 299, 500, 297, 482, 295, 495, 301, 293, 349, 263, 302, 479, 110, 481, 69, 508, 121, 505, 125, 408, 283, 442, 269, 643, 309, 619, 331, 621, 268, 653, 297, 587, 527, 654, 512, 672, 521, 638, 538, 579, 535, 589, 405, 584, 375, 615, 396, 615, 418, 665, 316, 257, 243, 312, 225, 333, 241, 268, 272, 215, 264, 494, 375, 495, 358, 171, 114, 283, 80, 280, 97, 277, 109, 454, 96, 297, 93, 172, 458, 215, 492, 193, 504, 181, 500, 118, 415, 154, 393, 465, 181, 505, 185, 436, 193, 447, 218, 417, 211, 408, 183, 421, 177, 574, 473, 584, 505, 431, 143, 448, 165, 284, 207, 385, 192, 451, 453, 499, 305, 485, 476, 447, 482, 506, 512, 568, 510, 545, 517, 274, 127, 239, 169, 188, 184, 558, 192, 546, 169, 543, 153, 551, 153, 576, 162, 586, 169, 565, 202, 325, 459, 346, 431, 341, 450, 337, 479, 315, 478, 232, 423, 304, 472, 318, 333, 361, 516, 503, 530, 361, 530, 273, 515, 295, 502, 292, 466, 147, 366, 284, 356, 244, 350, 212, 336, 206, 300, 621, 171, 671, 191, 672, 213, 668, 286, 603, 230, 614, 175, 613, 155, 572, 127, 543, 99, 552, 68, 578, 70, 614, 83, 630, 93, 641, 104, 653, 125, 400, 263, 390, 283, 371, 198, 118, 236, 162, 240, 140, 341) | ||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3, 4), PackedInt32Array(5, 6, 7, 8), PackedInt32Array(9, 5, 8, 10), PackedInt32Array(1, 0, 11, 12), PackedInt32Array(13, 14, 15, 16), PackedInt32Array(5, 9, 17, 18), PackedInt32Array(19, 20, 21, 22), PackedInt32Array(23, 24, 25, 26, 27), PackedInt32Array(28, 29, 30, 31), PackedInt32Array(32, 25, 24, 19, 22), PackedInt32Array(33, 34, 35, 36, 37), PackedInt32Array(29, 28, 38, 39), PackedInt32Array(40, 41, 42, 43), PackedInt32Array(14, 13, 44), PackedInt32Array(45, 14, 44, 43, 42), PackedInt32Array(46, 47, 48, 49), PackedInt32Array(46, 49, 50, 51), PackedInt32Array(52, 13, 16, 53), PackedInt32Array(54, 52, 53, 55, 56), PackedInt32Array(54, 56, 57, 58), PackedInt32Array(59, 28, 31, 60), PackedInt32Array(61, 62, 58, 63), PackedInt32Array(63, 58, 57, 64), PackedInt32Array(65, 9, 10, 66, 39), PackedInt32Array(65, 39, 38, 67, 68), PackedInt32Array(69, 59, 60, 70, 71), PackedInt32Array(40, 43, 72, 73, 74), PackedInt32Array(75, 76, 77, 78, 79, 80, 81), PackedInt32Array(82, 0, 4, 83, 84), PackedInt32Array(65, 68, 84, 83), PackedInt32Array(82, 84, 85, 86), PackedInt32Array(87, 82, 86, 88), PackedInt32Array(12, 89, 1), PackedInt32Array(70, 23, 27, 71), PackedInt32Array(90, 69, 71, 91, 92), PackedInt32Array(90, 92, 93, 94), PackedInt32Array(94, 93, 95, 88), PackedInt32Array(87, 88, 95, 51, 96), PackedInt32Array(12, 11, 97, 98, 99, 100, 37), PackedInt32Array(36, 12, 37), PackedInt32Array(101, 102, 103, 104, 22, 21, 105, 106), PackedInt32Array(107, 108, 109, 110, 111, 112, 113, 114, 115, 102), PackedInt32Array(101, 107, 102), PackedInt32Array(106, 105, 81, 80), PackedInt32Array(75, 81, 5, 18), PackedInt32Array(116, 18, 17, 117), PackedInt32Array(116, 117, 118, 64), PackedInt32Array(63, 64, 118), PackedInt32Array(63, 118, 34, 33), PackedInt32Array(63, 33, 74, 73), PackedInt32Array(119, 40, 74, 120), PackedInt32Array(119, 120, 121, 50), PackedInt32Array(50, 121, 96, 51)]) | ||
outlines = Array[PackedVector2Array]([PackedVector2Array(215, 492, 193, 504, 181, 500, 118, 415, 118, 236, 171, 114, 283, 80, 280, 97, 297, 93, 481, 69, 508, 121, 505, 125, 505, 185, 447, 218, 417, 211, 408, 183, 385, 192, 400, 263, 442, 269, 558, 192, 546, 169, 543, 153, 551, 153, 576, 162, 586, 169, 614, 175, 621, 171, 613, 155, 572, 127, 543, 99, 552, 68, 578, 70, 614, 83, 630, 93, 641, 104, 653, 125, 671, 191, 672, 213, 668, 286, 653, 297, 665, 316, 672, 521, 638, 538, 579, 535, 545, 517, 503, 530, 361, 530, 273, 515, 292, 466, 154, 393, 172, 458), PackedVector2Array(188, 184, 257, 243, 215, 264, 206, 300, 212, 336, 244, 350, 284, 356, 293, 349, 336, 360, 325, 459, 232, 423, 147, 366, 140, 341, 162, 240), PackedVector2Array(239, 169, 274, 127, 277, 109, 454, 96, 479, 110, 465, 181, 436, 193, 421, 177, 448, 165, 431, 143, 284, 207), PackedVector2Array(312, 225, 371, 198, 390, 283, 408, 283, 482, 295, 451, 453, 346, 431, 356, 366, 388, 375, 394, 348, 316, 336, 318, 333, 263, 302, 268, 272, 333, 241), PackedVector2Array(341, 450, 337, 479, 315, 478, 304, 472, 295, 502, 361, 516, 506, 512, 574, 473, 589, 405, 494, 375, 485, 476, 447, 482), PackedVector2Array(565, 202, 603, 230, 621, 268, 619, 331, 643, 309, 654, 512, 587, 527, 568, 510, 584, 505, 615, 418, 615, 396, 584, 375, 495, 358, 499, 305, 495, 301, 500, 297, 509, 299, 559, 285, 465, 272)]) | ||
|
||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_7hahy"] | ||
radius = 7.0 | ||
height = 22.0 | ||
|
||
[node name="Navigation" type="Node2D"] | ||
script = ExtResource("1_j3vjp") | ||
|
||
[node name="Map" type="Sprite2D" parent="."] | ||
z_index = -1 | ||
position = Vector2(400, 302) | ||
texture = ExtResource("2_nxfkp") | ||
|
||
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."] | ||
navigation_polygon = SubResource("NavigationPolygon_m8plu") | ||
|
||
[node name="Character" type="CharacterBody2D" parent="."] | ||
position = Vector2(210, 138) | ||
script = ExtResource("3_abq88") | ||
|
||
[node name="Sprite2D" type="Sprite2D" parent="Character"] | ||
position = Vector2(0, -3) | ||
scale = Vector2(0.3, 0.3) | ||
texture = ExtResource("4_55b5j") | ||
|
||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Character"] | ||
position = Vector2(0, -3) | ||
shape = SubResource("CapsuleShape2D_7hahy") | ||
|
||
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="Character"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters