From ec29c50631d0c3eed345a156fe361d27e7edc9ab Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 21 Feb 2025 22:44:29 +0100 Subject: [PATCH] =?UTF-8?q?Les=20voitures!=20Des=20carrosses=20=C3=A0=20es?= =?UTF-8?q?cence.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Et bien les voitures vois-tu, maintenant elles utilisent aussi l'animation tree, le state machine of the future et les super autres magiqueries. Elles bougent grace à un Path2D qui est suivit par un PathFollow2D qui leur sert de lapin. Elles suivent le lapin, sans cesse et sans cesse. Elles sont sage. --- animations/human/human_blend_tree.tres | 13 + animations/human/human_state_machine.tres | 7 +- assest/vehicules/Car_classic_red_48x48.png | Bin 0 -> 38002 bytes .../Car_classic_red_48x48.png.import | 34 + caracters/player/player.tscn | 1 + scenes/pathFollow.gd | 14 +- scenes/sta3CFA.tmp | 51 ++ scenes/start.tscn | 30 +- vehicules/car.gd | 52 +- vehicules/car.tscn | 744 +++++++++++++----- vehicules/npc_car.tscn | 15 +- 11 files changed, 700 insertions(+), 261 deletions(-) create mode 100644 animations/human/human_blend_tree.tres create mode 100644 assest/vehicules/Car_classic_red_48x48.png create mode 100644 assest/vehicules/Car_classic_red_48x48.png.import create mode 100644 scenes/sta3CFA.tmp diff --git a/animations/human/human_blend_tree.tres b/animations/human/human_blend_tree.tres new file mode 100644 index 0000000..a7f35b0 --- /dev/null +++ b/animations/human/human_blend_tree.tres @@ -0,0 +1,13 @@ +[gd_resource type="AnimationNodeBlendTree" load_steps=3 format=3 uid="uid://b3bttga61e3go"] + +[ext_resource type="AnimationNodeStateMachine" uid="uid://ddr1ltkievtku" path="res://animations/human/human_state_machine.tres" id="1_1tkpt"] + +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_85jde"] + +[resource] +nodes/HumanState/node = ExtResource("1_1tkpt") +nodes/HumanState/position = Vector2(133.333, 120) +nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_85jde") +nodes/TimeScale/position = Vector2(453.333, 53.3333) +nodes/output/position = Vector2(640, 146.667) +node_connections = [&"TimeScale", 0, &"HumanState", &"output", 0, &"TimeScale"] diff --git a/animations/human/human_state_machine.tres b/animations/human/human_state_machine.tres index fadde50..7d3c0df 100644 --- a/animations/human/human_state_machine.tres +++ b/animations/human/human_state_machine.tres @@ -1,6 +1,6 @@ [gd_resource type="AnimationNodeStateMachine" load_steps=19 format=3 uid="uid://ddr1ltkievtku"] -[ext_resource type="AnimationNodeBlendSpace2D" uid="uid://cy73mgvdr54rh" path="res://animations/human/human_walking_blend.tres" id="1_svxl8"] +[ext_resource type="AnimationNodeBlendSpace2D" uid="uid://cy73mgvdr54rh" path="res://animations/human/human_walking_blend.tres" id="1_wk1fq"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8th2p"] animation = &"grabbing_left" @@ -77,12 +77,13 @@ switch_mode = 2 advance_mode = 2 [resource] +states/End/position = Vector2(946, 81.8025) states/Start/position = Vector2(161.333, 82) states/grabing/node = SubResource("AnimationNodeBlendSpace2D_8okss") states/grabing/position = Vector2(629, 81.037) states/idling/node = SubResource("AnimationNodeBlendSpace2D_epue7") states/idling/position = Vector2(383.148, 81.5555) -states/walking/node = ExtResource("1_svxl8") +states/walking/node = ExtResource("1_wk1fq") states/walking/position = Vector2(382.556, -106.667) transitions = ["Start", "walking", SubResource("AnimationNodeStateMachineTransition_qfvli"), "walking", "idling", SubResource("AnimationNodeStateMachineTransition_8rhh4"), "idling", "walking", SubResource("AnimationNodeStateMachineTransition_b5dux"), "Start", "idling", SubResource("AnimationNodeStateMachineTransition_8q1xr"), "idling", "grabing", SubResource("AnimationNodeStateMachineTransition_on1es"), "walking", "grabing", SubResource("AnimationNodeStateMachineTransition_pxk2l"), "grabing", "idling", SubResource("AnimationNodeStateMachineTransition_t6jft")] -graph_offset = Vector2(-18, -138) +graph_offset = Vector2(-54, -204) diff --git a/assest/vehicules/Car_classic_red_48x48.png b/assest/vehicules/Car_classic_red_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..778eedf78f06b3c41c08bf8f950d016aa7c40756 GIT binary patch literal 38002 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 DfBEC5 literal 0 HcmV?d00001 diff --git a/assest/vehicules/Car_classic_red_48x48.png.import b/assest/vehicules/Car_classic_red_48x48.png.import new file mode 100644 index 0000000..ecf8273 --- /dev/null +++ b/assest/vehicules/Car_classic_red_48x48.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq81e78eaild8" +path="res://.godot/imported/Car_classic_red_48x48.png-6562938659f1241e69dbbb04a65b66b1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assest/vehicules/Car_classic_red_48x48.png" +dest_files=["res://.godot/imported/Car_classic_red_48x48.png-6562938659f1241e69dbbb04a65b66b1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/caracters/player/player.tscn b/caracters/player/player.tscn index 5520eb8..88d6f4f 100644 --- a/caracters/player/player.tscn +++ b/caracters/player/player.tscn @@ -12,6 +12,7 @@ height = 48.0 [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_85jde"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_iwsa7"] +graph_offset = Vector2(0, -54) nodes/HumanState/node = ExtResource("3_1y7fn") nodes/HumanState/position = Vector2(133.333, 120) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_85jde") diff --git a/scenes/pathFollow.gd b/scenes/pathFollow.gd index 6989d03..4960fb0 100644 --- a/scenes/pathFollow.gd +++ b/scenes/pathFollow.gd @@ -1,13 +1,13 @@ +class_name NPCCar extends PathFollow2D +@export var car : Car @export var speed = 0.1 -var voiture -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - voiture = (self.get_child(0) as Voiture) - voiture.updatePosition(position.x, position.y) +@export var distanceMax = 100 + # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - progress_ratio += delta * speed; - voiture.updatePosition(position.x, position.y) + if position.distance_to(car.position) < 200: + progress_ratio += delta * speed; + car.moveTo(position); diff --git a/scenes/sta3CFA.tmp b/scenes/sta3CFA.tmp new file mode 100644 index 0000000..5ca30b6 --- /dev/null +++ b/scenes/sta3CFA.tmp @@ -0,0 +1,51 @@ +[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, -110.06, 94.1858, 110.06, -94.1858, 52, 134, -159.798, 75.137, 159.798, -75.137, 204, 13, -116.409, -28.5732, 116.409, 28.5732, 2206, -11, -93.6567, -28.0441, 93.6567, 28.0441, 2387, 165, -119.584, 76.7244, 119.584, -76.7244, 2750, 126, 108.472, 48.6803, -108.472, -48.6803, 2737, -309, 122.23, -57.1464, -122.23, 57.1464, 2340, -323, 76.1953, -36.5102, -76.1953, 36.5102, 2167, -129, 107.414, 77.2535, -107.414, -77.2535, 158, -148, 57.4153, 72.8272, -57.4153, -72.8272, 39, -293, 113.137, -95.6951, -113.137, 95.6951, -405, -291, -94.7149, -70.9039, 94.7149, 70.9039, -413, 128, 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, 1926, 1371, 0, 0, 0, 0, 1931, 342, 0, 0, 0, 0, 2082, 333, 0, 0, 0, 0, 2060, -140, 0, 0, 0, 0, 1718, -143, 0, 0, 0, 0, 1724, 20, 0, 0, 0, 0, 900, 30, 0, 0, 0, 0, 904, -1165, 0, 0, 0, 0, -890, -1162, 0, 0, 0, 0, -886, -119, 0, 0, 0, 0, -1062, -106, 0, 0, 0, 0, -1076, 268, 0, 0, 0, 0, -630, 271, 0, 0, 0, 0, -616, 161, 0, 0, 0, 0, 786, 152, 0, 0, 0, 0, 806, 1560) +} +point_count = 19 + +[node name="scene1" type="Node2D"] + +[node name="monde" parent="." instance=ExtResource("1_6vs81")] + +[node name="movibles" type="Node2D" parent="."] + +[node name="Area2D" parent="movibles" instance=ExtResource("2_5x6b5")] +position = Vector2(87, 74) + +[node name="voitures" type="Node" parent="movibles"] + +[node name="Path2D" type="Path2D" parent="movibles/voitures"] +position = Vector2(-664, 181) +curve = SubResource("Curve2D_shblg") + +[node name="voiture_pnj" parent="movibles/voitures/Path2D" node_paths=PackedStringArray("car") instance=ExtResource("3_yuakw")] +position = Vector2(-285, 193) +car = NodePath("../Car") + +[node name="Car" parent="movibles/voitures/Path2D" instance=ExtResource("4_bqm78")] +position = Vector2(-287, 196) + +[node name="Path2D2" type="Path2D" parent="movibles/voitures"] +curve = SubResource("Curve2D_nircx") + +[node name="voiture_pnj" parent="movibles/voitures/Path2D2" node_paths=PackedStringArray("car") instance=ExtResource("3_yuakw")] +position = Vector2(803, 1569) +car = NodePath("../Car2") +speed = 0.05 + +[node name="Car2" parent="movibles/voitures/Path2D2" instance=ExtResource("4_bqm78")] +position = Vector2(796, 1559) diff --git a/scenes/start.tscn b/scenes/start.tscn index 560882b..811c81e 100644 --- a/scenes/start.tscn +++ b/scenes/start.tscn @@ -1,20 +1,21 @@ -[gd_scene load_steps=6 format=3 uid="uid://b4ydi1vv8dvwr"] +[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, -411, 81, 0, 0, 0, 0, 37, 81, 0, 0, 0, 0, 37, -34, 0, 0, 0, 0, 2392, -33, 0, 0, 0, 0, 2395, 125, 0, 0, 0, 0, 2750, 126, 0, 0, 0, 0, 2750, -313, 0, 0, 0, 0, 2391, -314, 0, 0, 0, 0, 2390, -149, 0, 0, 0, 0, 39, -144, 0, 0, 0, 0, 39, -293, 0, 0, 0, 0, -398, -289, 0, 0, 0, 0, -409, -310, 0, 0, 0, 0, -414, 78) +"points": PackedVector2Array(0, 0, 0, 0, -285, 193, -110.06, 94.1858, 110.06, -94.1858, 52, 134, -159.798, 75.137, 159.798, -75.137, 204, 13, -116.409, -28.5732, 116.409, 28.5732, 2206, -11, -93.6567, -28.0441, 93.6567, 28.0441, 2387, 165, -119.584, 76.7244, 119.584, -76.7244, 2750, 126, 108.472, 48.6803, -108.472, -48.6803, 2737, -309, 122.23, -57.1464, -122.23, 57.1464, 2340, -323, 76.1953, -36.5102, -76.1953, 36.5102, 2167, -129, 107.414, 77.2535, -107.414, -77.2535, 158, -148, 57.4153, 72.8272, -57.4153, -72.8272, 39, -293, 113.137, -95.6951, -113.137, 95.6951, -405, -291, -94.7149, -70.9039, 94.7149, 70.9039, -413, 128, 0, 0, 0, 0, -286, 193, 0, 0, 0, 0, -285, 193) } -point_count = 14 +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, 1926, 1371, 0, 0, 0, 0, 1931, 342, 0, 0, 0, 0, 2082, 333, 0, 0, 0, 0, 2060, -140, 0, 0, 0, 0, 1718, -143, 0, 0, 0, 0, 1724, 20, 0, 0, 0, 0, 900, 30, 0, 0, 0, 0, 904, -1165, 0, 0, 0, 0, -890, -1162, 0, 0, 0, 0, -886, -119, 0, 0, 0, 0, -1062, -106, 0, 0, 0, 0, -1079, 264, 0, 0, 0, 0, -630, 271, 0, 0, 0, 0, -616, 161, 0, 0, 0, 0, 786, 152, 0, 0, 0, 0, 806, 1560) +"points": PackedVector2Array(0, 0, 0, 0, 803, 1569, 0, 0, 0, 0, 910, 1573, 0, 0, 0, 0, 913, 1368, 0, 0, 0, 0, 1926, 1371, 0, 0, 0, 0, 1931, 342, 0, 0, 0, 0, 2082, 333, 0, 0, 0, 0, 2060, -140, 0, 0, 0, 0, 1718, -143, 0, 0, 0, 0, 1649, 73, 0, 0, 0, 0, 814, 68, 0, 0, 0, 0, 897, -123, 0, 0, 0, 0, 904, -1165, 0, 0, 0, 0, -890, -1162, 0, 0, 0, 0, -886, -119, 0, 0, 0, 0, -1062, -106, 0, 0, 0, 0, -1076, 268, 0, 0, 0, 0, -630, 271, 0, 0, 0, 0, -616, 161, 0, 0, 0, 0, 858, 167, 0, 0, 0, 0, 806, 1560) } -point_count = 19 +point_count = 20 [node name="scene1" type="Node2D"] @@ -31,11 +32,24 @@ position = Vector2(87, 74) position = Vector2(-664, 181) curve = SubResource("Curve2D_shblg") -[node name="voiture_pnj" parent="movibles/voitures/Path2D" instance=ExtResource("3_yuakw")] +[node name="voiture_pnj" parent="movibles/voitures/Path2D" node_paths=PackedStringArray("car") instance=ExtResource("3_yuakw")] +position = Vector2(-285, 193) +car = NodePath("../Car") +speed = 0.2 +distanceMax = 200 + +[node name="Car" parent="movibles/voitures/Path2D" instance=ExtResource("4_bqm78")] +position = Vector2(-287, 196) +speed = 500 [node name="Path2D2" type="Path2D" parent="movibles/voitures"] curve = SubResource("Curve2D_nircx") -[node name="voiture_pnj" parent="movibles/voitures/Path2D2" instance=ExtResource("3_yuakw")] +[node name="voiture_pnj" parent="movibles/voitures/Path2D2" node_paths=PackedStringArray("car") instance=ExtResource("3_yuakw")] position = Vector2(803, 1569) -speed = 0.05 +car = NodePath("../Car") +distanceMax = 15 + +[node name="Car" parent="movibles/voitures/Path2D2" instance=ExtResource("4_bqm78")] +position = Vector2(803, 1558) +speed = 500 diff --git a/vehicules/car.gd b/vehicules/car.gd index b926335..508ee28 100644 --- a/vehicules/car.gd +++ b/vehicules/car.gd @@ -1,33 +1,27 @@ -class_name Voiture -extends Area2D +class_name Car +extends CharacterBody2D -var prevPositionX = 0; -var prevPositionY = 0; +@export var speed = 750 # How fast the car will move (pixels/sec). +@onready var animation_tree := $AnimationTree +@onready var state_machine := animation_tree.get("parameters/driving/playback") as AnimationNodeStateMachinePlayback + +var last_facing_direction = Vector2(0,-1) # facing north + +var targetPosition = null + +func moveTo(position: Vector2) -> void: + targetPosition = position; + +func updateFacingDirectionInAnimationTree(): + animation_tree.set("parameters/CarStates/driving/blend_position", last_facing_direction) + animation_tree.set("parameters/CarStates/idling/blend_position", last_facing_direction) -func updatePosition(x: float, y: float) -> void: - var velocityX = prevPositionX - x; - var velocityY = prevPositionY - y; - $shapeDown.set_deferred("disabled", true); - $shapeUp.set_deferred("disabled", true); - $shapeLeft.set_deferred("disabled", true); - $shapeRight.set_deferred("disabled", true); - if(abs(velocityX) > abs(velocityY)): - if velocityX > 0 : - $AnimatedSprite2D.animation = "driving_left"; - $shapeLeft.set_deferred("disabled", false); - if velocityX < 0 : - $AnimatedSprite2D.animation = "driving_right"; - $shapeRight.set_deferred("disabled", false); - if(abs(velocityX) < abs(velocityY)): - if velocityY > 0 : - $AnimatedSprite2D.animation = "driving_up"; - $shapeUp.set_deferred("disabled", false); - if velocityY < 0 : - $AnimatedSprite2D.animation = "driving_down"; - $shapeDown.set_deferred("disabled", false); - prevPositionX = x; - prevPositionY = y; - # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - $AnimatedSprite2D.play() + if (targetPosition != null): + velocity = (targetPosition - position) * speed * delta; + move_and_slide() + if velocity: + last_facing_direction = velocity.normalized() + + updateFacingDirectionInAnimationTree() diff --git a/vehicules/car.tscn b/vehicules/car.tscn index 23abd39..b66ee8d 100644 --- a/vehicules/car.tscn +++ b/vehicules/car.tscn @@ -1,241 +1,583 @@ [gd_scene load_steps=33 format=3 uid="uid://bt1p311rn1h6q"] [ext_resource type="Script" path="res://vehicules/car.gd" id="1_vkq5y"] -[ext_resource type="Texture2D" uid="uid://55dsls4caujg" path="res://assest/vehicules/Car_classic_red_complete_48x48.png" id="2_ahai6"] -[ext_resource type="Texture2D" uid="uid://c5dis1wikcqws" path="res://assest/vehicules/Car_classic_red_complete_48x48_left.png" id="3_tnfoa"] +[ext_resource type="Texture2D" uid="uid://dq81e78eaild8" path="res://assest/vehicules/Car_classic_red_48x48.png" id="4_0kman"] -[sub_resource type="AtlasTexture" id="AtlasTexture_8fi8c"] -atlas = ExtResource("2_ahai6") -region = Rect2(3408, 222, 96, 210) +[sub_resource type="Animation" id="Animation_24r8n"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_tgw3a"] -atlas = ExtResource("2_ahai6") -region = Rect2(3504, 222, 96, 210) +[sub_resource type="Animation" id="Animation_ny3my"] +resource_name = "driving_down" +length = 0.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [18, 19, 20, 21, 22, 23] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_dj0xl"] -atlas = ExtResource("2_ahai6") -region = Rect2(3600, 222, 96, 210) +[sub_resource type="Animation" id="Animation_o7myv"] +resource_name = "driving_left" +length = 0.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [12, 13, 14, 15, 16, 17] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_omrb2"] -atlas = ExtResource("2_ahai6") -region = Rect2(3696, 222, 96, 210) +[sub_resource type="Animation" id="Animation_jej8v"] +resource_name = "driving_right" +length = 0.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_l4q1w"] -atlas = ExtResource("2_ahai6") -region = Rect2(3792, 222, 96, 210) +[sub_resource type="Animation" id="Animation_ns0lb"] +resource_name = "driving_up" +length = 0.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [6, 7, 8, 9, 10, 11] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_qjaw0"] -atlas = ExtResource("2_ahai6") -region = Rect2(3888, 222, 96, 210) +[sub_resource type="Animation" id="Animation_uyd0m"] +resource_name = "idling_down" +length = 0.1 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [47] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_cjmr1"] -atlas = ExtResource("3_tnfoa") -region = Rect2(0, 0, 240, 144) +[sub_resource type="Animation" id="Animation_k8xkk"] +resource_name = "idling_left" +length = 0.1 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [46] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_0i1ge"] -atlas = ExtResource("3_tnfoa") -region = Rect2(240, 0, 240, 144) +[sub_resource type="Animation" id="Animation_vk5cn"] +resource_name = "idling_right" +length = 0.1 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [34] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_lss5r"] -atlas = ExtResource("3_tnfoa") -region = Rect2(480, 0, 240, 144) +[sub_resource type="Animation" id="Animation_0uy2s"] +resource_name = "opening_door_left" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_8ccj1"] -atlas = ExtResource("3_tnfoa") -region = Rect2(720, 0, 240, 144) +[sub_resource type="Animation" id="Animation_goslp"] +resource_name = "opening_door_right" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_lrp4n"] -atlas = ExtResource("3_tnfoa") -region = Rect2(960, 0, 240, 144) +[sub_resource type="Animation" id="Animation_xch04"] +resource_name = "idling_up" +length = 0.1 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Car/Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [35] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Car/CollisionHorizontal:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Car/CollisionVertical:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} -[sub_resource type="AtlasTexture" id="AtlasTexture_qnkpb"] -atlas = ExtResource("3_tnfoa") -region = Rect2(1200, 0, 240, 144) +[sub_resource type="AnimationLibrary" id="AnimationLibrary_10pc8"] +_data = { +"RESET": SubResource("Animation_24r8n"), +"driving_down": SubResource("Animation_ny3my"), +"driving_left": SubResource("Animation_o7myv"), +"driving_right": SubResource("Animation_jej8v"), +"driving_up": SubResource("Animation_ns0lb"), +"idling_down": SubResource("Animation_uyd0m"), +"idling_left": SubResource("Animation_k8xkk"), +"idling_right": SubResource("Animation_vk5cn"), +"idling_up": SubResource("Animation_xch04"), +"opening_door_left": SubResource("Animation_0uy2s"), +"opening_door_right": SubResource("Animation_goslp") +} -[sub_resource type="AtlasTexture" id="AtlasTexture_n03o5"] -atlas = ExtResource("2_ahai6") -region = Rect2(0, 192, 240, 144) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_btgy7"] +animation = &"driving_left" -[sub_resource type="AtlasTexture" id="AtlasTexture_3k4i1"] -atlas = ExtResource("2_ahai6") -region = Rect2(240, 192, 240, 144) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d53q5"] +animation = &"driving_right" -[sub_resource type="AtlasTexture" id="AtlasTexture_pg1lo"] -atlas = ExtResource("2_ahai6") -region = Rect2(480, 192, 240, 144) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_22qxt"] +animation = &"driving_up" -[sub_resource type="AtlasTexture" id="AtlasTexture_3b1y7"] -atlas = ExtResource("2_ahai6") -region = Rect2(720, 192, 240, 144) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o21fb"] +animation = &"driving_down" -[sub_resource type="AtlasTexture" id="AtlasTexture_1jisb"] -atlas = ExtResource("2_ahai6") -region = Rect2(960, 192, 240, 144) +[sub_resource type="AnimationNodeBlendSpace2D" id="AnimationNodeBlendSpace2D_6rjtg"] +blend_point_0/node = SubResource("AnimationNodeAnimation_btgy7") +blend_point_0/pos = Vector2(-1, 0) +blend_point_1/node = SubResource("AnimationNodeAnimation_d53q5") +blend_point_1/pos = Vector2(1, 0) +blend_point_2/node = SubResource("AnimationNodeAnimation_22qxt") +blend_point_2/pos = Vector2(0, -1) +blend_point_3/node = SubResource("AnimationNodeAnimation_o21fb") +blend_point_3/pos = Vector2(0, 1) +blend_mode = 2 -[sub_resource type="AtlasTexture" id="AtlasTexture_4lngy"] -atlas = ExtResource("2_ahai6") -region = Rect2(1200, 192, 240, 144) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_3fbcc"] +animation = &"idling_left" -[sub_resource type="AtlasTexture" id="AtlasTexture_xng4i"] -atlas = ExtResource("2_ahai6") -region = Rect2(1440, 210, 96, 210) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_11mhe"] +animation = &"idling_right" -[sub_resource type="AtlasTexture" id="AtlasTexture_yy3vy"] -atlas = ExtResource("2_ahai6") -region = Rect2(1536, 210, 96, 210) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6x8m6"] +animation = &"idling_down" -[sub_resource type="AtlasTexture" id="AtlasTexture_cax1g"] -atlas = ExtResource("2_ahai6") -region = Rect2(1632, 210, 96, 210) +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ogtbq"] +animation = &"idling_up" -[sub_resource type="AtlasTexture" id="AtlasTexture_6dv7n"] -atlas = ExtResource("2_ahai6") -region = Rect2(1728, 210, 96, 210) +[sub_resource type="AnimationNodeBlendSpace2D" id="AnimationNodeBlendSpace2D_csi6s"] +blend_point_0/node = SubResource("AnimationNodeAnimation_3fbcc") +blend_point_0/pos = Vector2(-1, 0) +blend_point_1/node = SubResource("AnimationNodeAnimation_11mhe") +blend_point_1/pos = Vector2(1, 0) +blend_point_2/node = SubResource("AnimationNodeAnimation_6x8m6") +blend_point_2/pos = Vector2(0, 1) +blend_point_3/node = SubResource("AnimationNodeAnimation_ogtbq") +blend_point_3/pos = Vector2(0, -1) +blend_mode = 2 -[sub_resource type="AtlasTexture" id="AtlasTexture_7f8f4"] -atlas = ExtResource("2_ahai6") -region = Rect2(1824, 210, 96, 210) +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4uk5k"] +advance_mode = 2 +advance_expression = "velocity" -[sub_resource type="AtlasTexture" id="AtlasTexture_vy1dr"] -atlas = ExtResource("2_ahai6") -region = Rect2(1920, 210, 96, 210) +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3q86p"] +advance_mode = 2 +advance_expression = "!velocity" -[sub_resource type="SpriteFrames" id="SpriteFrames_77j28"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_8fi8c") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_tgw3a") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_dj0xl") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_omrb2") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_l4q1w") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_qjaw0") -}], -"loop": true, -"name": &"driving_down", -"speed": 5.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_cjmr1") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_0i1ge") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_lss5r") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_8ccj1") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_lrp4n") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_qnkpb") -}], -"loop": true, -"name": &"driving_left", -"speed": 5.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_n03o5") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_3k4i1") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_pg1lo") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_3b1y7") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_1jisb") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_4lngy") -}], -"loop": true, -"name": &"driving_right", -"speed": 5.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_xng4i") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_yy3vy") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_cax1g") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_6dv7n") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_7f8f4") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vy1dr") -}], -"loop": true, -"name": &"driving_up", -"speed": 5.0 -}] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0fk7h"] +advance_mode = 2 +advance_expression = "!velocity" -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5yhvy"] -radius = 35.5 -height = 158.0 +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6jgtk"] +advance_mode = 2 +advance_expression = "velocity" -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bevht"] -radius = 38.0026 -height = 150.043 +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_tnex5"] +states/Start/position = Vector2(192, 89.5556) +states/driving/node = SubResource("AnimationNodeBlendSpace2D_6rjtg") +states/driving/position = Vector2(460.667, -34.6667) +states/idling/node = SubResource("AnimationNodeBlendSpace2D_csi6s") +states/idling/position = Vector2(459.111, 88.6667) +transitions = ["Start", "driving", SubResource("AnimationNodeStateMachineTransition_4uk5k"), "Start", "idling", SubResource("AnimationNodeStateMachineTransition_3q86p"), "driving", "idling", SubResource("AnimationNodeStateMachineTransition_0fk7h"), "idling", "driving", SubResource("AnimationNodeStateMachineTransition_6jgtk")] +graph_offset = Vector2(80, -182) -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_w52g8"] -radius = 29.0752 -height = 172.0 +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_5fwej"] -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_j5vcu"] -radius = 33.0 -height = 174.0 +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_q5j17"] +graph_offset = Vector2(-249.333, -55.3333) +nodes/CarStates/node = SubResource("AnimationNodeStateMachine_tnex5") +nodes/CarStates/position = Vector2(-133.333, 173.333) +nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_5fwej") +nodes/TimeScale/position = Vector2(120, 120) +node_connections = [&"TimeScale", 0, &"CarStates", &"output", 0, &"TimeScale"] -[node name="Area2D" type="Area2D"] -position = Vector2(-664, 181) +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_l8rwt"] +radius = 31.0 +height = 160.0 + +[node name="Car" type="CharacterBody2D"] +motion_mode = 1 script = ExtResource("1_vkq5y") -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] -rotation = -0.00268924 -sprite_frames = SubResource("SpriteFrames_77j28") -animation = &"driving_right" -autoplay = "driving_right" +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("4_0kman") +hframes = 12 +vframes = 4 -[node name="shapeDown" type="CollisionShape2D" parent="."] -position = Vector2(1.5, 16) -shape = SubResource("CapsuleShape2D_5yhvy") +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("../..") +libraries = { +"": SubResource("AnimationLibrary_10pc8") +} -[node name="shapeUp" type="CollisionShape2D" parent="."] -position = Vector2(1, -20) -rotation = -0.00268924 -shape = SubResource("CapsuleShape2D_bevht") +[node name="AnimationTree" type="AnimationTree" parent="."] +root_node = NodePath("../..") +tree_root = SubResource("AnimationNodeBlendTree_q5j17") +advance_expression_base_node = NodePath("..") +anim_player = NodePath("../AnimationPlayer") +parameters/CarStates/driving/blend_position = Vector2(0.0425786, -0.23119) +parameters/CarStates/idling/blend_position = Vector2(-0.000397921, -0.120715) +parameters/TimeScale/scale = 1.0 -[node name="shapeLeft" type="CollisionShape2D" parent="."] -position = Vector2(-29, 29) +[node name="CollisionHorizontal" type="CollisionShape2D" parent="."] +position = Vector2(-4, 28) rotation = 1.5708 -shape = SubResource("CapsuleShape2D_w52g8") +shape = SubResource("CapsuleShape2D_l8rwt") -[node name="shapeRight" type="CollisionShape2D" parent="."] -position = Vector2(28, 27) -rotation = 1.5708 -shape = SubResource("CapsuleShape2D_j5vcu") +[node name="CollisionVertical" type="CollisionShape2D" parent="."] +position = Vector2(1, 2) +rotation = -3.14159 +shape = SubResource("CapsuleShape2D_l8rwt") diff --git a/vehicules/npc_car.tscn b/vehicules/npc_car.tscn index e48ec4d..ff0fb6b 100644 --- a/vehicules/npc_car.tscn +++ b/vehicules/npc_car.tscn @@ -1,20 +1,9 @@ -[gd_scene load_steps=3 format=3 uid="uid://cl201baro5y5"] +[gd_scene load_steps=2 format=3 uid="uid://cl201baro5y5"] [ext_resource type="Script" path="res://scenes/pathFollow.gd" id="1_fbnn2"] -[ext_resource type="PackedScene" uid="uid://bt1p311rn1h6q" path="res://vehicules/car.tscn" id="2_4yiv6"] [node name="voiture_pnj" type="PathFollow2D"] position = Vector2(-411, 81) rotates = false script = ExtResource("1_fbnn2") - -[node name="voiture" parent="." instance=ExtResource("2_4yiv6")] -position = Vector2(-1, 0) - -[node name="RayCast2D" type="RayCast2D" parent="."] -position = Vector2(1, 0) -target_position = Vector2(297, 58) - -[node name="RayCast2D2" type="RayCast2D" parent="."] -position = Vector2(1, 49) -target_position = Vector2(298, -47) +speed = 1.0