godot版本升级至4.2release,攻击miss时跳帧,主角设计迭代,跑步动画迭代

master
chendian 2 years ago
parent c486fc28cf
commit 90fd1662f9

@ -41,6 +41,9 @@ func _import(source_file: String, save_path: String, options: Dictionary,
ResourceSaver.FLAG_COMPRESS) ResourceSaver.FLAG_COMPRESS)
if status: if status:
push_error("Can't save imported resource.", status) push_error("Can't save imported resource.", status)
else:
var sprite_frames_res = ResourceLoader.load(save_path + "." + _get_save_extension()) as SpriteFrames
Util.refresh_all_animation_by_sprite_frames(sprite_frames_res)
return status return status
static func update_sprite_frames(export_result: ExportResult, sprite_frames: SpriteFrames, animation_autoplay_name: String = "") -> Error: static func update_sprite_frames(export_result: ExportResult, sprite_frames: SpriteFrames, animation_autoplay_name: String = "") -> Error:
@ -68,5 +71,5 @@ static func update_sprite_frames(export_result: ExportResult, sprite_frames: Spr
atlas_texture.margin = Rect2(frame_data.region_rect_offset, spritesheet_metadata.source_size - frame_data.region_rect.size) atlas_texture.margin = Rect2(frame_data.region_rect_offset, spritesheet_metadata.source_size - frame_data.region_rect.size)
atlas_textures[frame_data.region_rect] = atlas_texture atlas_textures[frame_data.region_rect] = atlas_texture
sprite_frames.add_frame(animation_tag.name, atlas_texture, frame_data.duration_ms * 0.001) sprite_frames.add_frame(animation_tag.name, atlas_texture, Setting.animation_frame_rate)
return OK return OK

@ -11,7 +11,7 @@ hit_back_speed = 2.0
hit_back_duration = 0.05 hit_back_duration = 0.05
hit_up_speed = 1.0 hit_up_speed = 1.0
hit_up_duration = 0.05 hit_up_duration = 0.05
pause_time = 0.2 pause_time = 0.05
is_floating = false is_floating = false
is_hit_down = false is_hit_down = false
is_rebound = false is_rebound = false

@ -64,6 +64,10 @@ folder_colors={
"res://resource/animation/character/": "yellow" "res://resource/animation/character/": "yellow"
} }
[filesystem]
import/blender/enabled=false
[importer_defaults] [importer_defaults]
texture={ texture={

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_do05t")] "values": [ExtResource("1_do05t")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,94 +26,94 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_air_attack01"] "values": ["long_air_attack01"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5), "times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3), "times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [1.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Status:skill_float_speed")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [1.0, 0.0] "values": [0.1, 1.0, 0.0]
} }
tracks/6/type = "value" tracks/6/type = "method"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed") tracks/6/path = NodePath("Battle")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4), "times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1),
"update": 1, "values": [{
"values": [0.1, 1.0, 0.0] "args": [],
"method": &"attack"
}]
} }
tracks/7/type = "method" tracks/7/type = "method"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("Battle") tracks/7/path = NodePath("Effect")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
"times": PackedFloat32Array(0.2), "times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
"args": [], "args": [],
"method": &"attack" "method": &"cast_attack_particle"
}] }]
} }
tracks/8/type = "method" tracks/8/type = "value"
tracks/8/imported = false tracks/8/imported = false
tracks/8/enabled = true tracks/8/enabled = true
tracks/8/path = NodePath("Effect") tracks/8/path = NodePath("View:frame")
tracks/8/interp = 1 tracks/8/interp = 1
tracks/8/loop_wrap = true tracks/8/loop_wrap = true
tracks/8/keys = { tracks/8/keys = {
"times": PackedFloat32Array(0.1), "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"values": [{ "update": 1,
"args": [], "values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"method": &"cast_attack_particle"
}]
} }

@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_1q1tj")] "values": [ExtResource("1_1q1tj")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,76 +26,64 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_air_attack02"] "values": ["long_air_attack02"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5), "times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3), "times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [1.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Status:skill_float_speed")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [1.0, 0.0] "values": [0.1, 1.0, 0.0]
} }
tracks/6/type = "value" tracks/6/type = "method"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed") tracks/6/path = NodePath("Battle")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0.1, 1.0, 0.0]
}
tracks/7/type = "method"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Battle")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.2), "times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
@ -103,3 +91,15 @@ tracks/7/keys = {
"method": &"attack" "method": &"attack"
}] }]
} }
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("View:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
}

@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_0pfmh")] "values": [ExtResource("1_0pfmh")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,76 +26,64 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_air_attack03"] "values": ["long_air_attack03"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5), "times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3), "times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [1.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Status:skill_float_speed")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [1.0, 0.0] "values": [0.1, 1.0, 0.0]
} }
tracks/6/type = "value" tracks/6/type = "method"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed") tracks/6/path = NodePath("Battle")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0.1, 1.0, 0.0]
}
tracks/7/type = "method"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Battle")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.2), "times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
@ -103,3 +91,15 @@ tracks/7/keys = {
"method": &"attack" "method": &"attack"
}] }]
} }
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("View:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
}

@ -13,7 +13,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_n5hpp")] "values": [ExtResource("1_n5hpp")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -25,7 +25,7 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_attack01"] "values": ["long_attack01"]
} }
tracks/2/type = "value" tracks/2/type = "value"
@ -35,7 +35,7 @@ tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5), "times": PackedFloat32Array(0, 0.4, 0.7),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [0, 3, 4]
@ -47,7 +47,7 @@ tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0.2, 0.3), "times": PackedFloat32Array(0.2, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [-0.5, -1.0]
@ -59,7 +59,7 @@ tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [2.0, 0.0] "values": [2.0, 0.0]
@ -101,6 +101,6 @@ tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), "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), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
} }

@ -4,7 +4,6 @@
[resource] [resource]
resource_name = "hero01_long_attack02" resource_name = "hero01_long_attack02"
length = 0.9
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -14,7 +13,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_c706k")] "values": [ExtResource("1_c706k")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,64 +25,52 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_attack02"] "values": ["long_attack02"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "times": PackedFloat32Array(0, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5), "times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3), "times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [2.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "method"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Battle")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [2.0, 0.0]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.2), "times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
@ -91,3 +78,15 @@ tracks/6/keys = {
"method": &"attack" "method": &"attack"
}] }]
} }
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("View:frame")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/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": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
}

@ -4,7 +4,7 @@
[resource] [resource]
resource_name = "hero01_long_attack03" resource_name = "hero01_long_attack03"
length = 1.2 length = 1.4
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_o7s2b")] "values": [ExtResource("1_o7s2b")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,77 +26,71 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_attack03"] "values": ["long_attack03"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1), "times": PackedFloat32Array(0, 0.9, 1.1),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.7, 0.9), "times": PackedFloat32Array(0, 0.6),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0, 0.6), "times": PackedFloat32Array(0.1, 0.3, 0.4, 0.5),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [2.0, 0.0, 2.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "method"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Battle")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3, 0.4, 0.5), "times": PackedFloat32Array(0.2, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [2.0, 0.0, 2.0, 0.0]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.2, 0.3, 0.5, 0.6),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"values": [{ "values": [{
"args": [], "args": [],
"method": &"attack" "method": &"attack"
}, { }, {
"args": [], "args": [],
"method": &"attack" "method": &"attack"
}, {
"args": [],
"method": &"attack"
}, {
"args": [],
"method": &"attack"
}] }]
} }
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("View:frame")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
}

@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": [ExtResource("1_ixwev")] "values": [ExtResource("1_ixwev")]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -26,64 +26,52 @@ tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "update": 1,
"values": ["long_attack04"] "values": ["long_attack04"]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("View:frame") tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1), "times": PackedFloat32Array(0, 0.7, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] "values": [0, 3, 4]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level") tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.6, 1), "times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [-0.5, -1.0]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate") tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.4), "times": PackedFloat32Array(0.1, 0.5, 0.6),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [1.0, 3.0, 0.0]
} }
tracks/5/type = "value" tracks/5/type = "method"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed") tracks/5/path = NodePath("Battle")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.5, 0.6),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [1.0, 3.0, 0.0]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.5), "times": PackedFloat32Array(0.5),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
@ -91,3 +79,15 @@ tracks/6/keys = {
"method": &"attack" "method": &"attack"
}] }]
} }
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("View:frame")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
}

@ -5,6 +5,7 @@
[resource] [resource]
resource_name = "hero01_long_flash" resource_name = "hero01_long_flash"
length = 0.5 length = 0.5
step = 0.08
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true

@ -35,7 +35,7 @@ shape = SubResource("BoxShape3D_ty8lx")
[node name="Status" type="Node3D" parent="."] [node name="Status" type="Node3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("2_txdip") script = ExtResource("2_txdip")
speed_up_rate = -1.0 speed_up_rate = -0.5
skill_float_speed = 0.1 skill_float_speed = 0.1
[node name="View" type="AnimatedSprite3D" parent="."] [node name="View" type="AnimatedSprite3D" parent="."]
@ -50,7 +50,7 @@ double_sided = false
alpha_cut = 2 alpha_cut = 2
texture_filter = 0 texture_filter = 0
sprite_frames = ExtResource("5_m25rr") sprite_frames = ExtResource("5_m25rr")
animation = &"long_attack01" animation = &"long_attack03"
script = ExtResource("4_vijjv") script = ExtResource("4_vijjv")
[node name="Move" type="Node3D" parent="."] [node name="Move" type="Node3D" parent="."]

@ -13,7 +13,6 @@ speed_up_rate = -0.5
[node name="View" parent="." index="2"] [node name="View" parent="." index="2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.693056, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.693056, 0)
animation = &"long_air_attack01"
[node name="Combo" type="Node3D" parent="." index="8"] [node name="Combo" type="Node3D" parent="." index="8"]
unique_name_in_owner = true unique_name_in_owner = true

@ -4,6 +4,7 @@ extends Node3D
const pixel_size : float = 0.02 const pixel_size : float = 0.02
const grid_pixel_size : float = 32 const grid_pixel_size : float = 32
const animation_frame_rate : float = 0.1 const animation_frame_rate : float = 0.1
const animation_speed_scale : float = 1.1
#技能系统 #技能系统
const input_alive_time : float = 0.5 const input_alive_time : float = 0.5

@ -107,23 +107,32 @@ func refresh_mesh_library(path_list:Array):
func refresh_all_animation_by_sprite_frames(sprite_frames:SpriteFrames): func refresh_all_animation_by_sprite_frames(sprite_frames:SpriteFrames):
var dir_path = "res://resource/skill_animation" var dir_path = "res://resource/skill_animation"
var dir = DirAccess.open(dir_path) var dir = DirAccess.open(dir_path)
var sprite_frames_name = sprite_frames.resource_path.get_file().split('-')[0]
for file in dir.get_files(): for file in dir.get_files():
var path = dir_path + "/" + file var path = dir_path + "/" + file
var res = load(path) var res = load(path)
if res is Animation: if not res is Animation:
var animation = res as Animation continue
var animation_name = Util.get_resource_name(animation) var animation = res as Animation
var sprite_frames_track = animation.find_track(NodePath("View:sprite_frames"),Animation.TYPE_VALUE) var sprite_frames_track = animation.find_track(NodePath("View:sprite_frames"),Animation.TYPE_VALUE)
if sprite_frames_track < 0: if sprite_frames_track < 0:
continue continue
var sprite_frames_track_key_count = animation.track_get_key_count(sprite_frames_track) var sprite_frames_track_key_count = animation.track_get_key_count(sprite_frames_track)
if sprite_frames_track_key_count == 0: if sprite_frames_track_key_count == 0:
continue continue
var sprite_frames_value = animation.track_get_key_value(sprite_frames_track_key_count,0) var sprite_frames_value = animation.track_get_key_value(sprite_frames_track,0) as SpriteFrames
if sprite_frames_value != sprite_frames: var target_sprite_frames_name = sprite_frames_value.resource_path.get_file().split('-')[0]
continue if sprite_frames_name != target_sprite_frames_name:
refresh_animation_by_sprite_frames(path,sprite_frames,animation_name,animation) continue
print(animation_name) var animation_track = animation.find_track(NodePath("View:animation"),Animation.TYPE_VALUE)
if animation_track < 0:
continue
var animation_track_key_count = animation.track_get_key_count(animation_track)
if animation_track_key_count == 0:
continue
var animation_value = animation.track_get_key_value(animation_track,0) as String
refresh_animation_by_sprite_frames(path,sprite_frames,animation_value,animation)
Util.refresh_animation_lib()
func refresh_animation_by_sprite_frames(animation_path:String,sprite_frames:SpriteFrames,animation_name:String,animation:Animation): func refresh_animation_by_sprite_frames(animation_path:String,sprite_frames:SpriteFrames,animation_name:String,animation:Animation):
if not sprite_frames.has_animation(animation_name): if not sprite_frames.has_animation(animation_name):
@ -152,6 +161,9 @@ func refresh_animation_by_sprite_frames(animation_path:String,sprite_frames:Spri
for i in range(0,animation_frame_count): for i in range(0,animation_frame_count):
var time = i * animation_speed var time = i * animation_speed
animation.track_insert_key(track_frame,time,i) animation.track_insert_key(track_frame,time,i)
animation.value_track_set_update_mode(track_sprite_frames,Animation.UPDATE_DISCRETE)
animation.value_track_set_update_mode(track_animation,Animation.UPDATE_DISCRETE)
animation.value_track_set_update_mode(track_frame,Animation.UPDATE_DISCRETE)
print("refresh_animation: ",animation_name ,"(",animation_frame_count, " frames)") print("refresh_animation: ",animation_name ,"(",animation_frame_count, " frames)")
ResourceSaver.save(animation,animation_path) ResourceSaver.save(animation,animation_path)

@ -35,7 +35,7 @@ func cast_skill(cfg:SkillCfg,cast_dir:Vector2):
status.skill_dir = cast_dir status.skill_dir = cast_dir
status.break_level = Enum.EBreakLevel.None status.break_level = Enum.EBreakLevel.None
if cast_dir.x != 0: status.is_right = cast_dir.x > 0 if cast_dir.x != 0: status.is_right = cast_dir.x > 0
play(animation_name) play(animation_name,-1,Setting.animation_speed_scale)
else: else:
print("技能animation不存在",animation_name) print("技能animation不存在",animation_name)
@ -54,9 +54,7 @@ func cancel_skill():
func on_attack_miss(): func on_attack_miss():
# 攻击未命中时跳帧 # 攻击未命中时跳帧
var position_int = int(current_animation_position / Setting.animation_frame_rate) advance(Setting.animation_frame_rate)
var position_next_frame = (position_int + 1) * Setting.animation_frame_rate
seek(position_next_frame,true)
func _on_animation_finished(_anim_name): func _on_animation_finished(_anim_name):
cancel_skill() cancel_skill()

@ -76,7 +76,7 @@ func _ready():
func _process(delta): func _process(delta):
if not status.is_skill_running and status.is_pause == is_playing(): if not status.is_skill_running and status.is_pause == is_playing():
if status.is_pause:pause() if status.is_pause:pause()
else:play() else:play_animation(animation)
if status.is_pause:return if status.is_pause:return
update_flip() update_flip()
update_trans(false) update_trans(false)
@ -177,5 +177,5 @@ func play_animation(animation_name:String):
frame = 0 frame = 0
frame_progress = 0 frame_progress = 0
else: else:
play(animation_name) play(animation_name,Setting.animation_speed_scale)

Loading…
Cancel
Save