Modern transformation animation now actually looks like mario maker now, rejoice

This commit is contained in:
JHDev2006
2025-09-21 23:01:41 +01:00
parent 873ef53dfd
commit ebdd1795b2
4 changed files with 2725 additions and 2315 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=79 format=3 uid="uid://cuh62hlq8errh"] [gd_scene load_steps=83 format=3 uid="uid://cuh62hlq8errh"]
[ext_resource type="Script" uid="uid://dt4rosa5o35xr" path="res://Scripts/Classes/Entities/Player.gd" id="1_f6bau"] [ext_resource type="Script" uid="uid://dt4rosa5o35xr" path="res://Scripts/Classes/Entities/Player.gd" id="1_f6bau"]
[ext_resource type="Script" uid="uid://uribh0f1jttq" path="res://Scripts/Classes/States/StateMachine.gd" id="2_1y62l"] [ext_resource type="Script" uid="uid://uribh0f1jttq" path="res://Scripts/Classes/States/StateMachine.gd" id="2_1y62l"]
@@ -7,7 +7,7 @@
[ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="3_a1d2e"] [ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="3_a1d2e"]
[ext_resource type="Script" uid="uid://blxvov3jyx8gg" path="res://Scripts/Classes/States/Player/Normal.gd" id="3_f6bau"] [ext_resource type="Script" uid="uid://blxvov3jyx8gg" path="res://Scripts/Classes/States/Player/Normal.gd" id="3_f6bau"]
[ext_resource type="Texture2D" uid="uid://bdurtsr7cld64" path="res://Assets/Sprites/Players/Mario/ColourPalette.png" id="3_x2idl"] [ext_resource type="Texture2D" uid="uid://bdurtsr7cld64" path="res://Assets/Sprites/Players/Mario/ColourPalette.png" id="3_x2idl"]
[ext_resource type="SpriteFrames" uid="uid://df4enjjl84mji" path="res://Resources/SpriteFrames/Player/Mario/Small.tres" id="4_cekpg"] [ext_resource type="SpriteFrames" uid="uid://328p7l1rmy00" path="res://Resources/SpriteFrames/Player/Toad/Big.tres" id="4_fqdtv"]
[ext_resource type="Script" uid="uid://dvbib1gtmmvui" path="res://Scripts/Classes/States/Player/Pipe.gd" id="5_hodem"] [ext_resource type="Script" uid="uid://dvbib1gtmmvui" path="res://Scripts/Classes/States/Player/Pipe.gd" id="5_hodem"]
[ext_resource type="Script" uid="uid://c8xvkkv34fjr4" path="res://Scripts/Classes/PowerStates/PowerUpState.gd" id="5_rs3l8"] [ext_resource type="Script" uid="uid://c8xvkkv34fjr4" path="res://Scripts/Classes/PowerStates/PowerUpState.gd" id="5_rs3l8"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="5_x2idl"] [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="5_x2idl"]
@@ -237,6 +237,58 @@ _data = {
&"RESET": SubResource("Animation_jl70t") &"RESET": SubResource("Animation_jl70t")
} }
[sub_resource type="Animation" id="Animation_fqdtv"]
resource_name = "Grow"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%Sprite/..:scale")
tracks/0/interp = 0
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.10000008, 0.20000005, 0.30000007, 0.4000001, 0.5000001, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1, 0.7), Vector2(1, 0.85), Vector2(1, 0.8), Vector2(1, 0.95), Vector2(1, 0.9), Vector2(1, 1.05), Vector2(1, 1)]
}
[sub_resource type="Animation" id="Animation_vijl6"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%Sprite/..:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
[sub_resource type="Animation" id="Animation_pm4ir"]
resource_name = "Shrink"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%Sprite/..:scale")
tracks/0/interp = 0
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999964, 0.19999999, 0.29999995, 0.39999998, 0.5, 0.6, 0.8),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1, 0.9), Vector2(1, 0.96), Vector2(1, 0.8), Vector2(1, 0.85), Vector2(1, 0.7), Vector2(1, 0.75), Vector2(1, 0.6), Vector2(1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_pm4ir"]
_data = {
&"Grow": SubResource("Animation_fqdtv"),
&"RESET": SubResource("Animation_vijl6"),
&"Shrink": SubResource("Animation_pm4ir")
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_nbkfn"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_nbkfn"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(9, 14) size = Vector2(9, 14)
@@ -445,17 +497,21 @@ platform_on_leave = 2
script = ExtResource("1_f6bau") script = ExtResource("1_f6bau")
power_state = NodePath("PowerStates/Small") power_state = NodePath("PowerStates/Small")
[node name="Sprite" type="AnimatedSprite2D" parent="."] [node name="SpriteScaleJoint" type="Node2D" parent="."]
[node name="Sprite" type="AnimatedSprite2D" parent="SpriteScaleJoint"]
unique_name_in_owner = true
physics_interpolation_mode = 2 physics_interpolation_mode = 2
material = SubResource("ShaderMaterial_4ojwh") material = SubResource("ShaderMaterial_4ojwh")
position = Vector2(0, -16) position = Vector2(0, -16)
sprite_frames = ExtResource("4_cekpg") sprite_frames = ExtResource("4_fqdtv")
animation = &"Idle" animation = &"Idle"
offset = Vector2(0, 1) offset = Vector2(0, 1)
script = ExtResource("5_x2idl") script = ExtResource("5_x2idl")
metadata/_custom_type_script = "uid://caq1qiwmy0mox" metadata/_custom_type_script = "uid://caq1qiwmy0mox"
[node name="Hammer" type="Sprite2D" parent="Sprite"] [node name="Hammer" type="Sprite2D" parent="SpriteScaleJoint/Sprite"]
unique_name_in_owner = true
visible = false visible = false
position = Vector2(8, 8) position = Vector2(8, 8)
texture = ExtResource("3_a1d2e") texture = ExtResource("3_a1d2e")
@@ -463,13 +519,13 @@ offset = Vector2(0, -8)
region_enabled = true region_enabled = true
region_rect = Rect2(0, 0, 16, 16) region_rect = Rect2(0, 0, 16, 16)
[node name="Animation" type="AnimationPlayer" parent="Sprite/Hammer"] [node name="Animation" type="AnimationPlayer" parent="SpriteScaleJoint/Sprite/Hammer"]
libraries = { libraries = {
&"": SubResource("AnimationLibrary_bl5al") &"": SubResource("AnimationLibrary_bl5al")
} }
autoplay = "Swing" autoplay = "Swing"
[node name="ResourceSetterNew" type="Node" parent="Sprite/Hammer" node_paths=PackedStringArray("node_to_affect")] [node name="ResourceSetterNew" type="Node" parent="SpriteScaleJoint/Sprite/Hammer" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("25_cekpg") script = ExtResource("25_cekpg")
node_to_affect = NodePath("..") node_to_affect = NodePath("..")
property_name = "texture" property_name = "texture"
@@ -477,19 +533,20 @@ mode = 1
resource_json = ExtResource("7_2mfvl") resource_json = ExtResource("7_2mfvl")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik" metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
[node name="HammerHitbox" type="Area2D" parent="Sprite"] [node name="HammerHitbox" type="Area2D" parent="SpriteScaleJoint/Sprite"]
visible = false visible = false
position = Vector2(16, 16) position = Vector2(16, 16)
monitorable = false monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/HammerHitbox"] [node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteScaleJoint/Sprite/HammerHitbox"]
position = Vector2(-3.49691e-07, -8) position = Vector2(-3.49691e-07, -8)
shape = SubResource("RectangleShape2D_a1d2e") shape = SubResource("RectangleShape2D_a1d2e")
[node name="Wings" type="Node2D" parent="Sprite"] [node name="Wings" type="Node2D" parent="SpriteScaleJoint/Sprite"]
unique_name_in_owner = true
visible = false visible = false
[node name="BigWing" type="AnimatedSprite2D" parent="Sprite/Wings"] [node name="BigWing" type="AnimatedSprite2D" parent="SpriteScaleJoint/Sprite/Wings"]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2(-10, -3) position = Vector2(-10, -3)
sprite_frames = SubResource("SpriteFrames_uwhl4") sprite_frames = SubResource("SpriteFrames_uwhl4")
@@ -497,14 +554,14 @@ animation = &"Idle"
frame_progress = 0.9603284 frame_progress = 0.9603284
flip_h = true flip_h = true
[node name="ResourceSetterNew" type="Node" parent="Sprite/Wings/BigWing" node_paths=PackedStringArray("node_to_affect")] [node name="ResourceSetterNew" type="Node" parent="SpriteScaleJoint/Sprite/Wings/BigWing" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("25_cekpg") script = ExtResource("25_cekpg")
node_to_affect = NodePath("..") node_to_affect = NodePath("..")
property_name = "sprite_frames" property_name = "sprite_frames"
resource_json = ExtResource("9_o70e0") resource_json = ExtResource("9_o70e0")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik" metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
[node name="SmallWing" type="AnimatedSprite2D" parent="Sprite/Wings"] [node name="SmallWing" type="AnimatedSprite2D" parent="SpriteScaleJoint/Sprite/Wings"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
show_behind_parent = true show_behind_parent = true
@@ -513,18 +570,24 @@ sprite_frames = SubResource("SpriteFrames_uwhl4")
animation = &"Idle" animation = &"Idle"
flip_h = true flip_h = true
[node name="ResourceSetterNew" type="Node" parent="Sprite/Wings/SmallWing" node_paths=PackedStringArray("node_to_affect")] [node name="ResourceSetterNew" type="Node" parent="SpriteScaleJoint/Sprite/Wings/SmallWing" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("25_cekpg") script = ExtResource("25_cekpg")
node_to_affect = NodePath("..") node_to_affect = NodePath("..")
property_name = "sprite_frames" property_name = "sprite_frames"
resource_json = ExtResource("9_o70e0") resource_json = ExtResource("9_o70e0")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik" metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite/Wings"] [node name="AnimationPlayer" type="AnimationPlayer" parent="SpriteScaleJoint/Sprite/Wings"]
libraries = { libraries = {
&"": SubResource("AnimationLibrary_nbkfn") &"": SubResource("AnimationLibrary_nbkfn")
} }
[node name="GrowAnimation" type="AnimationPlayer" parent="SpriteScaleJoint/Sprite"]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_pm4ir")
}
[node name="States" type="Node" parent="." node_paths=PackedStringArray("state")] [node name="States" type="Node" parent="." node_paths=PackedStringArray("state")]
script = ExtResource("2_1y62l") script = ExtResource("2_1y62l")
state = NodePath("Normal") state = NodePath("Normal")
@@ -943,7 +1006,7 @@ metadata/_custom_type_script = "uid://cqif1li7otvpl"
[node name="ResourceSetterNew" type="Node" parent="." node_paths=PackedStringArray("node_to_affect", "property_node")] [node name="ResourceSetterNew" type="Node" parent="." node_paths=PackedStringArray("node_to_affect", "property_node")]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("25_cekpg") script = ExtResource("25_cekpg")
node_to_affect = NodePath("../Sprite") node_to_affect = NodePath("../SpriteScaleJoint/Sprite")
property_node = NodePath("..") property_node = NodePath("..")
property_name = "sprite_frames" property_name = "sprite_frames"
resource_json = ExtResource("26_o4wvw") resource_json = ExtResource("26_o4wvw")
@@ -1057,9 +1120,9 @@ property_name = "stream"
themed_resource = SubResource("Resource_xy8gq") themed_resource = SubResource("Resource_xy8gq")
metadata/_custom_type_script = "uid://cq6f682453q6o" metadata/_custom_type_script = "uid://cq6f682453q6o"
[connection signal="frame_changed" from="Sprite" to="Sprite" method="on_frame_changed"] [connection signal="frame_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"]
[connection signal="sprite_frames_changed" from="Sprite" to="Sprite" method="on_frame_changed"] [connection signal="sprite_frames_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"]
[connection signal="area_entered" from="Sprite/HammerHitbox" to="." method="on_hammer_area_entered"] [connection signal="area_entered" from="SpriteScaleJoint/Sprite/HammerHitbox" to="." method="on_hammer_area_entered"]
[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] [connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
[connection signal="area_exited" from="Hitbox" to="." method="on_area_exited"] [connection signal="area_exited" from="Hitbox" to="." method="on_area_exited"]
[connection signal="body_entered" from="LavaPoisonDetect" to="." method="die" unbinds=1] [connection signal="body_entered" from="LavaPoisonDetect" to="." method="die" unbinds=1]

View File

@@ -21,7 +21,7 @@ var WALK_SPEED := 96.0
var CEILING_BUMP_SPEED := 45.0 var CEILING_BUMP_SPEED := 45.0
@onready var camera_center_joint: Node2D = $CameraCenterJoint @onready var camera_center_joint: Node2D = $CameraCenterJoint
@onready var sprite: AnimatedSprite2D = $Sprite @onready var sprite: AnimatedSprite2D = %Sprite
@onready var camera: Camera2D = $Camera @onready var camera: Camera2D = $Camera
@onready var score_note_spawner: ScoreNoteSpawner = $ScoreNoteSpawner @onready var score_note_spawner: ScoreNoteSpawner = $ScoreNoteSpawner
@@ -266,7 +266,7 @@ func _process(delta: float) -> void:
handle_invincible_palette() handle_invincible_palette()
if is_invincible: if is_invincible:
DiscoLevel.combo_meter = 100 DiscoLevel.combo_meter = 100
$Sprite/Hammer.visible = has_hammer %Hammer.visible = has_hammer
func apply_gravity(delta: float) -> void: func apply_gravity(delta: float) -> void:
if in_water or flight_meter > 0: if in_water or flight_meter > 0:
@@ -411,9 +411,9 @@ func stop_all_timers() -> void:
func handle_invincible_palette() -> void: func handle_invincible_palette() -> void:
sprite.material.set_shader_parameter("mode", !Settings.file.visuals.rainbow_style) sprite.material.set_shader_parameter("mode", !Settings.file.visuals.rainbow_style)
$Sprite.material.set_shader_parameter("player_palette", $PlayerPalette.texture) sprite.material.set_shader_parameter("player_palette", $PlayerPalette.texture)
$Sprite.material.set_shader_parameter("palette_size", colour_palette.get_width()) sprite.material.set_shader_parameter("palette_size", colour_palette.get_width())
$Sprite.material.set_shader_parameter("invincible_palette", $InvinciblePalette.texture) sprite.material.set_shader_parameter("invincible_palette", $InvinciblePalette.texture)
sprite.material.set_shader_parameter("palette_idx", POWER_STATES.find(power_state.state_name)) sprite.material.set_shader_parameter("palette_idx", POWER_STATES.find(power_state.state_name))
sprite.material.set_shader_parameter("enabled", (is_invincible or (palette_transform and transforming))) sprite.material.set_shader_parameter("enabled", (is_invincible or (palette_transform and transforming)))
@@ -444,10 +444,10 @@ func handle_power_up_states(delta) -> void:
func handle_wing_flight(delta: float) -> void: func handle_wing_flight(delta: float) -> void:
flight_meter -= delta flight_meter -= delta
if flight_meter <= 0 && $Sprite/Wings.visible: if flight_meter <= 0 && %Wings.visible:
AudioManager.stop_music_override(AudioManager.MUSIC_OVERRIDES.WING) AudioManager.stop_music_override(AudioManager.MUSIC_OVERRIDES.WING)
gravity = FALL_GRAVITY gravity = FALL_GRAVITY
$Sprite/Wings.visible = flight_meter >= 0 %Wings.visible = flight_meter >= 0
if flight_meter < 0: if flight_meter < 0:
return return
%BigWing.visible = power_state.hitbox_size == "Big" %BigWing.visible = power_state.hitbox_size == "Big"
@@ -458,9 +458,9 @@ func handle_wing_flight(delta: float) -> void:
else: else:
i.play("Idle") i.play("Idle")
if flight_meter <= 3: if flight_meter <= 3:
$Sprite/Wings/AnimationPlayer.play("Flash") %Wings.get_node("AnimationPlayer").play("Flash")
else: else:
$Sprite/Wings/AnimationPlayer.play("RESET") %Wings.get_node("AnimationPlayer").play("RESET")
func damage() -> void: func damage() -> void:
if can_hurt == false or is_invincible: if can_hurt == false or is_invincible:
@@ -499,11 +499,11 @@ func passed_checkpoint() -> void:
func do_i_frames() -> void: func do_i_frames() -> void:
can_hurt = false can_hurt = false
for i in 25: for i in 25:
$Sprite.hide() sprite.hide()
if get_tree() == null: if get_tree() == null:
return return
await get_tree().create_timer(0.04, false).timeout await get_tree().create_timer(0.04, false).timeout
$Sprite.show() sprite.show()
if get_tree() == null: if get_tree() == null:
return return
await get_tree().create_timer(0.04, false).timeout await get_tree().create_timer(0.04, false).timeout
@@ -609,18 +609,29 @@ func power_up_animation(new_power_state := "") -> void:
var old_frames = sprite.sprite_frames var old_frames = sprite.sprite_frames
var new_frames = $ResourceSetterNew.get_resource(load(get_character_sprite_path(new_power_state))) var new_frames = $ResourceSetterNew.get_resource(load(get_character_sprite_path(new_power_state)))
sprite.process_mode = Node.PROCESS_MODE_ALWAYS sprite.process_mode = Node.PROCESS_MODE_ALWAYS
$Sprite.show() sprite.show()
get_tree().paused = true get_tree().paused = true
if get_node("PowerStates/" + new_power_state).hitbox_size != power_state.hitbox_size: if get_node("PowerStates/" + new_power_state).hitbox_size != power_state.hitbox_size:
sprite.speed_scale = 3 if Settings.file.visuals.transform_style == 0:
sprite.play("Grow") sprite.speed_scale = 3
await get_tree().create_timer(0.4, true).timeout sprite.play("Grow")
sprite.sprite_frames = new_frames await get_tree().create_timer(0.4, true).timeout
sprite.play("Grow") sprite.sprite_frames = new_frames
await get_tree().create_timer(0.4, true).timeout sprite.play("Grow")
transforming = false await get_tree().create_timer(0.4, true).timeout
transforming = false
else:
sprite.speed_scale = 0
if new_power_state == "Small":
%GrowAnimation.play("Shrink")
else:
sprite.sprite_frames = new_frames
%GrowAnimation.play("Grow")
await get_tree().create_timer(0.8, true).timeout
sprite.sprite_frames = new_frames
transforming = false
else: else:
if not palette_transform: if Settings.file.visuals.transform_style == 1:
for i in 6: for i in 6:
sprite.sprite_frames = new_frames sprite.sprite_frames = new_frames
await get_tree().create_timer(0.05).timeout await get_tree().create_timer(0.05).timeout

View File

@@ -117,7 +117,7 @@ var can_time_tick := true:
if value == false: if value == false:
pass pass
var player_power_states := "0000" var player_power_states := "1000"
var connected_players := 1 var connected_players := 1