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)
if 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
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_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

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

@ -64,6 +64,10 @@ folder_colors={
"res://resource/animation/character/": "yellow"
}
[filesystem]
import/blender/enabled=false
[importer_defaults]
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 = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_do05t")]
}
tracks/1/type = "value"
@ -26,94 +26,94 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_air_attack01"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/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": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
"values": [1.0, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
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/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 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/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed")
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0.1, 1.0, 0.0]
"times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"attack"
}]
}
tracks/7/type = "method"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Battle")
tracks/7/path = NodePath("Effect")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.2),
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"attack"
"method": &"cast_attack_particle"
}]
}
tracks/8/type = "method"
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Effect")
tracks/8/path = NodePath("View:frame")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_attack_particle"
}]
"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 = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_1q1tj")]
}
tracks/1/type = "value"
@ -26,76 +26,64 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_air_attack02"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/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": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
"values": [1.0, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
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/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 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/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed")
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
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),
"transitions": PackedFloat32Array(1),
"values": [{
@ -103,3 +91,15 @@ tracks/7/keys = {
"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 = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_0pfmh")]
}
tracks/1/type = "value"
@ -26,76 +26,64 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_air_attack03"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/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": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
"values": [1.0, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
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/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 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/enabled = true
tracks/6/path = NodePath("Status:skill_float_speed")
tracks/6/path = NodePath("Battle")
tracks/6/interp = 1
tracks/6/loop_wrap = true
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),
"transitions": PackedFloat32Array(1),
"values": [{
@ -103,3 +91,15 @@ tracks/7/keys = {
"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 = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_n5hpp")]
}
tracks/1/type = "value"
@ -25,7 +25,7 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_attack01"]
}
tracks/2/type = "value"
@ -35,7 +35,7 @@ tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"times": PackedFloat32Array(0, 0.4, 0.7),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
@ -47,7 +47,7 @@ tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"times": PackedFloat32Array(0.2, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
@ -59,7 +59,7 @@ tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [2.0, 0.0]
@ -101,6 +101,6 @@ 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, 0.9),
"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]
}

@ -4,7 +4,6 @@
[resource]
resource_name = "hero01_long_attack02"
length = 0.9
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@ -14,7 +13,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_c706k")]
}
tracks/1/type = "value"
@ -26,64 +25,52 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_attack02"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/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": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"times": PackedFloat32Array(0, 0.4, 0.6),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"times": PackedFloat32Array(0.1, 0.3),
"transitions": PackedFloat32Array(1, 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/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed")
tracks/5/path = NodePath("Battle")
tracks/5/interp = 1
tracks/5/loop_wrap = true
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),
"transitions": PackedFloat32Array(1),
"values": [{
@ -91,3 +78,15 @@ tracks/6/keys = {
"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_name = "hero01_long_attack03"
length = 1.2
length = 1.4
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_o7s2b")]
}
tracks/1/type = "value"
@ -26,77 +26,71 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_attack03"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
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),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
"times": PackedFloat32Array(0, 0.9, 1.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.7, 0.9),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.6),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0.1, 0.3, 0.4, 0.5),
"transitions": PackedFloat32Array(1, 1, 1, 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/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed")
tracks/5/path = NodePath("Battle")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.1, 0.3, 0.4, 0.5),
"transitions": PackedFloat32Array(1, 1, 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),
"times": PackedFloat32Array(0.2, 0.6),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"attack"
}, {
"args": [],
"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 = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_ixwev")]
}
tracks/1/type = "value"
@ -26,64 +26,52 @@ tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": ["long_attack04"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1
tracks/2/loop_wrap = true
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),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
"times": PackedFloat32Array(0, 0.7, 0.9),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
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/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
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/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0.1, 0.5, 0.6),
"transitions": PackedFloat32Array(1, 1, 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/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed")
tracks/5/path = NodePath("Battle")
tracks/5/interp = 1
tracks/5/loop_wrap = true
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),
"transitions": PackedFloat32Array(1),
"values": [{
@ -91,3 +79,15 @@ tracks/6/keys = {
"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_name = "hero01_long_flash"
length = 0.5
step = 0.08
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true

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

@ -13,7 +13,6 @@ speed_up_rate = -0.5
[node name="View" parent="." index="2"]
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"]
unique_name_in_owner = true

@ -4,6 +4,7 @@ extends Node3D
const pixel_size : float = 0.02
const grid_pixel_size : float = 32
const animation_frame_rate : float = 0.1
const animation_speed_scale : float = 1.1
#技能系统
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):
var dir_path = "res://resource/skill_animation"
var dir = DirAccess.open(dir_path)
var sprite_frames_name = sprite_frames.resource_path.get_file().split('-')[0]
for file in dir.get_files():
var path = dir_path + "/" + file
var res = load(path)
if res is Animation:
var animation = res as Animation
var animation_name = Util.get_resource_name(animation)
var sprite_frames_track = animation.find_track(NodePath("View:sprite_frames"),Animation.TYPE_VALUE)
if sprite_frames_track < 0:
continue
var sprite_frames_track_key_count = animation.track_get_key_count(sprite_frames_track)
if sprite_frames_track_key_count == 0:
continue
var sprite_frames_value = animation.track_get_key_value(sprite_frames_track_key_count,0)
if sprite_frames_value != sprite_frames:
continue
refresh_animation_by_sprite_frames(path,sprite_frames,animation_name,animation)
print(animation_name)
if not res is Animation:
continue
var animation = res as Animation
var sprite_frames_track = animation.find_track(NodePath("View:sprite_frames"),Animation.TYPE_VALUE)
if sprite_frames_track < 0:
continue
var sprite_frames_track_key_count = animation.track_get_key_count(sprite_frames_track)
if sprite_frames_track_key_count == 0:
continue
var sprite_frames_value = animation.track_get_key_value(sprite_frames_track,0) as SpriteFrames
var target_sprite_frames_name = sprite_frames_value.resource_path.get_file().split('-')[0]
if sprite_frames_name != target_sprite_frames_name:
continue
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):
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):
var time = i * animation_speed
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)")
ResourceSaver.save(animation,animation_path)

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

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

Loading…
Cancel
Save