diff --git a/scenes/staD86C.tmp b/scenes/staD86C.tmp new file mode 100644 index 0000000..a1305f8 --- /dev/null +++ b/scenes/staD86C.tmp @@ -0,0 +1,57 @@ +[gd_scene load_steps=7 format=3 uid="uid://b4ydi1vv8dvwr"] + +[ext_resource type="PackedScene" uid="uid://d1oqt6sbjvopi" path="res://maps/world.tscn" id="1_6vs81"] +[ext_resource type="PackedScene" uid="uid://vclpg4e4ql54" path="res://caracters/player/player.tscn" id="2_5x6b5"] +[ext_resource type="PackedScene" uid="uid://cl201baro5y5" path="res://vehicules/npc_car.tscn" id="3_yuakw"] +[ext_resource type="PackedScene" uid="uid://bt1p311rn1h6q" path="res://vehicules/car.tscn" id="4_bqm78"] + +[sub_resource type="Curve2D" id="Curve2D_shblg"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -285, 193, -72.1029, 112.165, 72.1029, -112.165, 20, 84, -92.8736, 1.22052, 92.8736, -1.22052, 220, -16, -72.4586, -10.5935, 72.4586, 10.5935, 2206, -11, -122.624, -4.07119, 122.624, 4.07119, 2387, 165, -98.6077, 103.694, 98.6077, -103.694, 2759, 110, 117.462, 37.6927, -117.462, -37.6927, 2715, -276, 114.239, -35.1712, -114.239, 35.1712, 2384, -293, 50.2246, -13.5362, -50.2246, 13.5362, 2209, -126, 61.4659, 8.33138, -61.4659, -8.33138, 133, -135, 40.4345, 62.8385, -40.4345, -62.8385, 40, -272, 50.2081, -75.7177, -50.2081, 75.7177, -399, -242, -67.7454, -78.8949, 67.7454, 78.8949, -399, 107, 0, 0, 0, 0, -286, 193, 0, 0, 0, 0, -285, 193) +} +point_count = 15 + +[sub_resource type="Curve2D" id="Curve2D_nircx"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 803, 1569, 0, 0, 0, 0, 910, 1573, 0, 0, 0, 0, 913, 1368, 0, 0, 0, 0, 1938, 1371, 0, 0, 0, 0, 1931, 342, 0, 0, 0, 0, 2082, 333, 0, 0, 0, 0, 2086, -88, 0, 0, 0, 0, 1656, -97, 0, 0, 0, 0, 1649, 73, 0, 0, 0, 0, 912.469, 60.5339, 0, 0, 0, 0, 904, -1165, 0, 0, 0, 0, -890, -1162, 0, 0, 0, 0, -885, -108, 0, 0, 0, 0, -1062, -106, 0, 0, 0, 0, -1073, 283, 0, 0, 0, 0, -624, 293, 0, 0, 0, 0, -616, 161, 0, 0, 0, 0, -577, 160, 0, 0, 0, 0, 823, 165, 0, 0, 0, 0, 802, 305, 0, 0, 0, 0, 806, 1560) +} +point_count = 21 + +[node name="scene1" type="Node2D"] + +[node name="world" parent="." instance=ExtResource("1_6vs81")] + +[node name="movibles" type="Node2D" parent="."] + +[node name="player" parent="movibles" instance=ExtResource("2_5x6b5")] +position = Vector2(87, 74) + +[node name="cars" type="Node" parent="movibles"] + +[node name="Path2D" type="Path2D" parent="movibles/cars"] +position = Vector2(-664, 181) +curve = SubResource("Curve2D_shblg") + +[node name="voiture_pnj" parent="movibles/cars/Path2D" node_paths=PackedStringArray("car", "world") instance=ExtResource("3_yuakw")] +position = Vector2(-285, 193) +car = NodePath("../Car") +world = NodePath("../../../../world") + +[node name="Car" parent="movibles/cars/Path2D" instance=ExtResource("4_bqm78")] +position = Vector2(-287, 196) +speed = null +timeToChangeVelocity = null + +[node name="Path2D2" type="Path2D" parent="movibles/cars"] +curve = SubResource("Curve2D_nircx") + +[node name="voiture_pnj" parent="movibles/cars/Path2D2" node_paths=PackedStringArray("car", "world") instance=ExtResource("3_yuakw")] +position = Vector2(803, 1569) +car = NodePath("../Car") +distanceMax = 150 +world = NodePath("../../../../world") + +[node name="Car" parent="movibles/cars/Path2D2" instance=ExtResource("4_bqm78")] +position = Vector2(803, 1558) +speed = 500 +timeToChangeVelocity = null diff --git a/urban_furnitures/semaphores/down_pedestrian_semaphore.tscn b/urban_furnitures/semaphores/down_pedestrian_semaphore.tscn index 76d9ab3..84c5226 100644 --- a/urban_furnitures/semaphores/down_pedestrian_semaphore.tscn +++ b/urban_furnitures/semaphores/down_pedestrian_semaphore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://bmunphhwcsl3a"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="2_nih7h"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="2_nih7h"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="3_ulyk6"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="4_k52t8"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="5_o0gjx"] diff --git a/urban_furnitures/semaphores/down_semaphore.tscn b/urban_furnitures/semaphores/down_semaphore.tscn index fed5274..f3a695e 100644 --- a/urban_furnitures/semaphores/down_semaphore.tscn +++ b/urban_furnitures/semaphores/down_semaphore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=4 uid="uid://djlp0et1giup2"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="1_w5kby"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="1_w5kby"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="2_igk5i"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="3_va7oi"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="4_3cw57"] diff --git a/urban_furnitures/semaphores/left_semaphore.tscn b/urban_furnitures/semaphores/left_semaphore.tscn index c8cc595..7be9615 100644 --- a/urban_furnitures/semaphores/left_semaphore.tscn +++ b/urban_furnitures/semaphores/left_semaphore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=4 uid="uid://c6nlrmhu8362v"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="1_1ufoq"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="1_1ufoq"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="1_03yma"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="2_hhwk3"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="4_j5rhp"] diff --git a/urban_furnitures/semaphores/right_sempahore.tscn b/urban_furnitures/semaphores/right_sempahore.tscn index 153fd77..28f65c3 100644 --- a/urban_furnitures/semaphores/right_sempahore.tscn +++ b/urban_furnitures/semaphores/right_sempahore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=4 uid="uid://cw3dtiscqueyt"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="1_7rvlf"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="1_7rvlf"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="2_jecjm"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="3_65epa"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="4_cbarg"] diff --git a/urban_furnitures/semaphores/up_pedestrian_semaphore.tscn b/urban_furnitures/semaphores/up_pedestrian_semaphore.tscn index 3b0f874..deb8187 100644 --- a/urban_furnitures/semaphores/up_pedestrian_semaphore.tscn +++ b/urban_furnitures/semaphores/up_pedestrian_semaphore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://dotr3vifbinfy"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="1_k7vt0"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="1_k7vt0"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="2_iui5y"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="3_rmo1c"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="4_cy22y"] diff --git a/urban_furnitures/semaphores/up_semaphore.tscn b/urban_furnitures/semaphores/up_semaphore.tscn index e557f6e..c497089 100644 --- a/urban_furnitures/semaphores/up_semaphore.tscn +++ b/urban_furnitures/semaphores/up_semaphore.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=4 uid="uid://btvlfkbqe6f4j"] -[ext_resource type="Script" path="res://urban_furnitures/semaphores/high_semaphore.gd" id="1_u47jh"] +[ext_resource type="Script" path="res://urban_furnitures/semaphores/semaphore.gd" id="1_u47jh"] [ext_resource type="TileSet" uid="uid://ckj00wy20rkfx" path="res://assest/tilesets/exterieur.tres" id="2_fdc55"] [ext_resource type="PackedScene" uid="uid://brh7cqaxc13ie" path="res://zindex/ZIndexControler.tscn" id="3_cla2j"] [ext_resource type="PackedScene" uid="uid://dpyadhlqawviq" path="res://vehicules/brakeZone.tscn" id="4_3ail0"] diff --git a/vehicules/brake_zone.gd b/vehicules/brake_zone.gd index 1843aff..e8817f4 100644 --- a/vehicules/brake_zone.gd +++ b/vehicules/brake_zone.gd @@ -1,12 +1,12 @@ extends Node2D -@export var fullStop: bool = true +@export var wantedVelocity: int = 0 func _on_body_entered(body: Node2D) -> void: if OS.is_debug_build(): $Label.text = str(body)+ " " + "body entered " if body.has_method("brake"): - (body as Car).brake(fullStop) + (body as Car).brake(wantedVelocity) func _on_body_exited(body: Node2D) -> void: diff --git a/vehicules/car.gd b/vehicules/car.gd index 4d5c88d..b90dff1 100644 --- a/vehicules/car.gd +++ b/vehicules/car.gd @@ -3,14 +3,14 @@ extends CharacterBody2D @export var debugLabel: Label @export var speed = 750 # How fast the car will move (pixels/sec). -@export var acceleration = speed / 100 -@export var slowZoneSpeed = 300 +@export var timeToChangeVelocity = 0.5 # How long to break to a full stop + +var targetedVelocity = 0 var current_speed = speed; @onready var animation_tree := $AnimationTree @onready var state_machine := animation_tree.get("parameters/driving/playback") as AnimationNodeStateMachinePlayback var brakePedal = false; -var fullStop = false; var last_facing_direction = Vector2(0,-1) # facing north @@ -27,14 +27,12 @@ func updateFacingDirectionInAnimationTree(): # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: $ZIndexControler/ShapeCast2D.enabled = !$CollisionHorizontal.disabled - + var accelerationStep = (speed * delta / timeToChangeVelocity) + if brakePedal: - if fullStop: - current_speed = max(0, current_speed - acceleration) - else: - current_speed = max(slowZoneSpeed, current_speed - acceleration) + current_speed = max(targetedVelocity, current_speed - accelerationStep) else: - current_speed = min(current_speed + acceleration, speed) + current_speed = min(current_speed + accelerationStep, speed) if (targetGlobalPosition != null): direction = (targetGlobalPosition - global_position).normalized() @@ -45,9 +43,9 @@ func _process(delta: float) -> void: last_facing_direction = velocity.normalized() updateFacingDirectionInAnimationTree() -func brake(needsToStop : bool): +func brake(wantedVelocity : int): brakePedal = true; - fullStop = needsToStop; + targetedVelocity = wantedVelocity; func accelerate(): brakePedal = false;