voitures: freinage en fonction du time delta

le freinage dure un certain temps et ce temps dépends du delta des
frames. Sinon les voitures freinent plus ou moins vite en fonction de ce
que les pc cibles sont capable d'arriver à faire tourner.
This commit is contained in:
Thomas
2025-02-26 16:20:58 +01:00
parent 41573e0753
commit afcfa60804
9 changed files with 74 additions and 19 deletions

57
scenes/staD86C.tmp Normal file
View File

@@ -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

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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:

View File

@@ -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)
current_speed = max(targetedVelocity, current_speed - accelerationStep)
else:
current_speed = max(slowZoneSpeed, current_speed - acceleration)
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;