diff --git a/scenes/DDR/track/Track.gd b/scenes/DDR/track/Track.gd index 6defa8be8..98068da22 100644 --- a/scenes/DDR/track/Track.gd +++ b/scenes/DDR/track/Track.gd @@ -38,6 +38,15 @@ func set_tick(tick): var note_tick = note["tick"] if last_tick < note_tick and note_tick <= tick: _set_pose(note["pose"]) + match note["pose"]: + "up": + $Up/AnimationPlayer.play("hit") + "down": + $Down/AnimationPlayer.play("hit") + "left": + $Left/AnimationPlayer.play("hit") + "right": + $Right/AnimationPlayer.play("hit") if last_tick + spawn_delay < note_tick and note_tick <= tick + spawn_delay: _spawn_note(i, note["pose"], note_tick) if last_tick < note_tick + max_hit_delta and note_tick + max_hit_delta <= tick: @@ -68,7 +77,6 @@ func _spawn_note(index, pose, note_tick): node.init_tick = note_tick - spawn_delay node.target_tick = note_tick node.target_pos = position.y - node.index = index connect("set_tick", node, "set_tick") add_child(node) diff --git a/scenes/DDR/track/Track.tscn b/scenes/DDR/track/Track.tscn index 7c16c74d3..94775225b 100644 --- a/scenes/DDR/track/Track.tscn +++ b/scenes/DDR/track/Track.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=24 format=2] [ext_resource path="res://scenes/DDR/track/ddr.png" type="Texture" id=1] [ext_resource path="res://scenes/DDR/track/Track.gd" type="Script" id=2] @@ -6,6 +6,13 @@ [ext_resource path="res://scenes/DDR/track/note/Up.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/DDR/track/note/Right.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/DDR/track/note/Left.tscn" type="PackedScene" id=6] +[ext_resource path="res://shaders/hit_flash.gdshader" type="Shader" id=7] + +[sub_resource type="ShaderMaterial" id=9] +resource_local_to_scene = true +shader = ExtResource( 7 ) +shader_param/flash_color = Color( 1, 0, 0, 1 ) +shader_param/flash_modifier = 0.0 [sub_resource type="Animation" id=1] length = 0.001 @@ -21,10 +28,50 @@ tracks/0/keys = { "update": 0, "values": [ Vector2( 1, 1 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=13] +resource_name = "hit" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1.1, 1.1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} [sub_resource type="Animation" id=2] resource_name = "pressed" -length = 0.2 +length = 0.1 tracks/0/type = "value" tracks/0/path = NodePath(".:scale") tracks/0/interp = 1 @@ -32,12 +79,30 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.1, 0.2 ), -"transitions": PoolRealArray( 1, 1, 1 ), +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ), Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +"values": [ 0.6, 0.0 ] } +[sub_resource type="ShaderMaterial" id=10] +resource_local_to_scene = true +shader = ExtResource( 7 ) +shader_param/flash_color = Color( 1, 0.913725, 0, 1 ) +shader_param/flash_modifier = 0.0 + [sub_resource type="Animation" id=3] length = 0.001 tracks/0/type = "value" @@ -52,10 +117,50 @@ tracks/0/keys = { "update": 0, "values": [ Vector2( 1, 1 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=14] +resource_name = "hit" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1.1, 1.1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} [sub_resource type="Animation" id=4] resource_name = "pressed" -length = 0.2 +length = 0.1 tracks/0/type = "value" tracks/0/path = NodePath(".:scale") tracks/0/interp = 1 @@ -63,12 +168,30 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.1, 0.2 ), -"transitions": PoolRealArray( 1, 1, 1 ), +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ), Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +"values": [ 0.6, 0.0 ] } +[sub_resource type="ShaderMaterial" id=11] +resource_local_to_scene = true +shader = ExtResource( 7 ) +shader_param/flash_color = Color( 0.392157, 0.815686, 1, 1 ) +shader_param/flash_modifier = 0.0 + [sub_resource type="Animation" id=5] length = 0.001 tracks/0/type = "value" @@ -83,10 +206,50 @@ tracks/0/keys = { "update": 0, "values": [ Vector2( 1, 1 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=15] +resource_name = "hit" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1.1, 1.1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} [sub_resource type="Animation" id=6] resource_name = "pressed" -length = 0.2 +length = 0.1 tracks/0/type = "value" tracks/0/path = NodePath(".:scale") tracks/0/interp = 1 @@ -94,12 +257,30 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.1, 0.2 ), -"transitions": PoolRealArray( 1, 1, 1 ), +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ), Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +"values": [ 0.6, 0.0 ] } +[sub_resource type="ShaderMaterial" id=12] +resource_local_to_scene = true +shader = ExtResource( 7 ) +shader_param/flash_color = Color( 0.596078, 1, 0.290196, 1 ) +shader_param/flash_modifier = 0.0 + [sub_resource type="Animation" id=7] length = 0.001 tracks/0/type = "value" @@ -114,10 +295,50 @@ tracks/0/keys = { "update": 0, "values": [ Vector2( 1, 1 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=16] +resource_name = "hit" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1.1, 1.1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} [sub_resource type="Animation" id=8] resource_name = "pressed" -length = 0.2 +length = 0.1 tracks/0/type = "value" tracks/0/path = NodePath(".:scale") tracks/0/interp = 1 @@ -125,10 +346,22 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.1, 0.2 ), -"transitions": PoolRealArray( 1, 1, 1 ), +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/flash_modifier") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ), Vector2( 0.7, 0.7 ), Vector2( 1, 1 ) ] +"values": [ 0.6, 0.0 ] } [node name="Track" type="Node2D"] @@ -139,6 +372,7 @@ NoteLeft = ExtResource( 6 ) NoteRight = ExtResource( 5 ) [node name="Right" type="Sprite" parent="."] +material = SubResource( 9 ) position = Vector2( 168, 24 ) rotation = 1.5708 texture = ExtResource( 1 ) @@ -146,9 +380,11 @@ hframes = 5 [node name="AnimationPlayer" type="AnimationPlayer" parent="Right"] anims/RESET = SubResource( 1 ) +anims/hit = SubResource( 13 ) anims/pressed = SubResource( 2 ) [node name="Left" type="Sprite" parent="."] +material = SubResource( 10 ) position = Vector2( 24, 24 ) rotation = -1.5708 texture = ExtResource( 1 ) @@ -156,9 +392,11 @@ hframes = 5 [node name="AnimationPlayer" type="AnimationPlayer" parent="Left"] anims/RESET = SubResource( 3 ) +anims/hit = SubResource( 14 ) anims/pressed = SubResource( 4 ) [node name="Down" type="Sprite" parent="."] +material = SubResource( 11 ) position = Vector2( 72, 24 ) rotation = 3.14159 texture = ExtResource( 1 ) @@ -166,13 +404,16 @@ hframes = 5 [node name="AnimationPlayer" type="AnimationPlayer" parent="Down"] anims/RESET = SubResource( 5 ) +anims/hit = SubResource( 15 ) anims/pressed = SubResource( 6 ) [node name="Up" type="Sprite" parent="."] -position = Vector2( 120, 24 ) +material = SubResource( 12 ) +position = Vector2( 119, 24 ) texture = ExtResource( 1 ) hframes = 5 [node name="AnimationPlayer" type="AnimationPlayer" parent="Up"] anims/RESET = SubResource( 7 ) +anims/hit = SubResource( 16 ) anims/pressed = SubResource( 8 ) diff --git a/scenes/levels/DDR_01/Level.tscn b/scenes/levels/DDR_01/Level.tscn index 6e4b49644..e385197c9 100644 --- a/scenes/levels/DDR_01/Level.tscn +++ b/scenes/levels/DDR_01/Level.tscn @@ -28,7 +28,6 @@ bus = "music" [node name="Controls" type="Node" parent="."] script = ExtResource( 3 ) playerActorPath = NodePath("../Player") -playerTrackPath = NodePath("../RightTrack") [node name="LeftTrack" parent="." instance=ExtResource( 5 )] scale = Vector2( 2, 2 )