diff --git a/render/texture/decal/readiness_lock.png b/render/texture/decal/readiness_lock.png new file mode 100644 index 0000000..554e741 Binary files /dev/null and b/render/texture/decal/readiness_lock.png differ diff --git a/render/texture/decal/readiness_lock.png.import b/render/texture/decal/readiness_lock.png.import new file mode 100644 index 0000000..c25cca9 --- /dev/null +++ b/render/texture/decal/readiness_lock.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://usgu2suw017u" +path="res://.godot/imported/readiness_lock.png-dfbd117a97d33beeb0a20039bd6426e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://render/texture/decal/readiness_lock.png" +dest_files=["res://.godot/imported/readiness_lock.png-dfbd117a97d33beeb0a20039bd6426e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=0 +compress/normal_map=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=false +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/resource/animation/character/_design_monster.aseprite b/resource/animation/character/_design_monster.aseprite index 7a3cefd..d3b2370 100644 Binary files a/resource/animation/character/_design_monster.aseprite and b/resource/animation/character/_design_monster.aseprite differ diff --git a/resource/animation/character/_design_monster.png b/resource/animation/character/_design_monster.png index 947ff2c..433f358 100644 Binary files a/resource/animation/character/_design_monster.png and b/resource/animation/character/_design_monster.png differ diff --git a/resource/animation/character/monster01_move.aseprite b/resource/animation/character/monster01_move.aseprite index b8c3e1d..9c08119 100644 Binary files a/resource/animation/character/monster01_move.aseprite and b/resource/animation/character/monster01_move.aseprite differ diff --git a/resource/animation/character/monster01_move.png b/resource/animation/character/monster01_move.png index 1f6b4bd..3e39aa4 100644 Binary files a/resource/animation/character/monster01_move.png and b/resource/animation/character/monster01_move.png differ diff --git a/resource/animation/character/monster03_move.aseprite b/resource/animation/character/monster03_move.aseprite index d5ad94e..eea473f 100644 Binary files a/resource/animation/character/monster03_move.aseprite and b/resource/animation/character/monster03_move.aseprite differ diff --git a/resource/animation/character/monster03_move.png b/resource/animation/character/monster03_move.png index 1d68078..4e0e491 100644 Binary files a/resource/animation/character/monster03_move.png and b/resource/animation/character/monster03_move.png differ diff --git a/resource/animation/character/monster03_skill.aseprite b/resource/animation/character/monster03_skill.aseprite index 6489077..f2193d1 100644 Binary files a/resource/animation/character/monster03_skill.aseprite and b/resource/animation/character/monster03_skill.aseprite differ diff --git a/resource/animation/character/monster03_skill.png b/resource/animation/character/monster03_skill.png index 2e607eb..35dd982 100644 Binary files a/resource/animation/character/monster03_skill.png and b/resource/animation/character/monster03_skill.png differ diff --git a/scene/character/character.tscn b/scene/character/character.tscn index af51fe7..6f5c2fc 100644 --- a/scene/character/character.tscn +++ b/scene/character/character.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=25 format=3 uid="uid://8rcvw1vnjcf7"] +[gd_scene load_steps=26 format=3 uid="uid://8rcvw1vnjcf7"] [ext_resource type="Script" path="res://script/character/character.gd" id="1_tonbs"] [ext_resource type="Script" path="res://script/character/hitbox.gd" id="2_6xf87"] @@ -14,6 +14,7 @@ [ext_resource type="Script" path="res://script/character/buff.gd" id="9_jlnhy"] [ext_resource type="Script" path="res://script/character/effect.gd" id="12_eyfcd"] [ext_resource type="Script" path="res://script/character/core.gd" id="14_gua01"] +[ext_resource type="PackedScene" uid="uid://cq03usrdvv43o" path="res://scene/effect/readiness/readiness_lock.tscn" id="14_gw1pa"] [ext_resource type="SpriteFrames" uid="uid://2cb8lknel0ih" path="res://resource/animation/character/basic_move.aseprite" id="15_70jx1"] [ext_resource type="Script" path="res://script/character/throw.gd" id="16_ot265"] @@ -142,6 +143,9 @@ hit_back_limit_curve = SubResource("Curve_e7j3f") unique_name_in_owner = true script = ExtResource("12_eyfcd") +[node name="Lock" parent="Effect" instance=ExtResource("14_gw1pa")] +visible = false + [node name="Core" type="Node3D" parent="."] unique_name_in_owner = true script = ExtResource("14_gua01") diff --git a/scene/effect/readiness/readiness_lock.tscn b/scene/effect/readiness/readiness_lock.tscn new file mode 100644 index 0000000..b777ab3 --- /dev/null +++ b/scene/effect/readiness/readiness_lock.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://cq03usrdvv43o"] + +[ext_resource type="Texture2D" uid="uid://usgu2suw017u" path="res://render/texture/decal/readiness_lock.png" id="1_1hvll"] +[ext_resource type="Script" path="res://script/effect/readiness_lock.gd" id="2_hf851"] + +[node name="ReadinessLock" type="Decal"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0) +size = Vector3(1, 1, 1) +texture_albedo = ExtResource("1_1hvll") +normal_fade = 0.999 +cull_mask = 1 +script = ExtResource("2_hf851") diff --git a/scene/launcher.tscn b/scene/launcher.tscn index 852eece..0190c3d 100644 --- a/scene/launcher.tscn +++ b/scene/launcher.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=34 format=3 uid="uid://eoydwrunmm5n"] +[gd_scene load_steps=35 format=3 uid="uid://eoydwrunmm5n"] [ext_resource type="Script" path="res://script/manager/game_manager.gd" id="1_q2t80"] [ext_resource type="Script" path="res://script/manager/level_manager.gd" id="2_ewhkj"] @@ -21,12 +21,13 @@ [ext_resource type="Script" path="res://script/manager/item_manager.gd" id="12_xwufn"] [ext_resource type="Script" path="res://script/character/status.gd" id="18_nr8sb"] [ext_resource type="SpriteFrames" uid="uid://2cb8lknel0ih" path="res://resource/animation/character/basic_move.aseprite" id="20_4ni1a"] -[ext_resource type="SpriteFrames" uid="uid://bvnjq6vtioip" path="res://resource/animation/character/hero01_fist_skill02.aseprite" id="21_fmv7o"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="21_kj50v"] [ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="22_qyapv"] [ext_resource type="Script" path="res://script/character/skill.gd" id="23_783eu"] [ext_resource type="Script" path="res://script/character/move.gd" id="25_d520l"] [ext_resource type="Script" path="res://script/character/buff.gd" id="26_so4j2"] [ext_resource type="Script" path="res://script/character/battle.gd" id="27_c52fc"] +[ext_resource type="PackedScene" uid="uid://cq03usrdvv43o" path="res://scene/effect/readiness/readiness_lock.tscn" id="27_q02rc"] [ext_resource type="Script" path="res://script/character/effect.gd" id="28_q4xrm"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_b4sw2"] @@ -222,12 +223,12 @@ pixel_size = 0.02 double_sided = false alpha_cut = 2 texture_filter = 0 -sprite_frames = ExtResource("21_fmv7o") -animation = &"fist_skill_charging" +sprite_frames = ExtResource("21_kj50v") +animation = &"fist_skill02" [node name="Throw" type="AnimatedSprite3D" parent="EditorTool/Character"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, -1, 1.50996e-07, 0, -1.50996e-07, -1, 0, 0, 0) +transform = Transform3D(-1, 0, 0, 0, -1, 1.50996e-07, 0, -1.50996e-07, -1, 0, 0, 0) pixel_size = 0.02 sprite_frames = ExtResource("20_4ni1a") animation = &"idle_loop" @@ -249,6 +250,9 @@ hit_back_limit_curve = SubResource("Curve_4bqub") unique_name_in_owner = true script = ExtResource("28_q4xrm") +[node name="Lock" parent="EditorTool/Character/Effect" instance=ExtResource("27_q02rc")] +visible = false + [node name="Move" type="Node3D" parent="EditorTool/Character"] unique_name_in_owner = true script = ExtResource("25_d520l") diff --git a/scene/ui/hud_screen.tscn b/scene/ui/hud_screen.tscn index ea283fa..1094bad 100644 --- a/scene/ui/hud_screen.tscn +++ b/scene/ui/hud_screen.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=3 uid="uid://126wph4owvoy"] +[gd_scene load_steps=28 format=3 uid="uid://126wph4owvoy"] [ext_resource type="Script" path="res://script/ui/screen.gd" id="1_davcv"] [ext_resource type="Script" path="res://script/ui/hud/hud_page.gd" id="1_t7dgf"] @@ -24,6 +24,7 @@ [sub_resource type="Animation" id="Animation_ikdwl"] resource_name = "rotate" loop_mode = 1 +step = 0.1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -37,8 +38,24 @@ tracks/0/keys = { "values": [0.0, 6.28319] } +[sub_resource type="Animation" id="Animation_pfl0h"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Lock:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_wbtxq"] _data = { +"RESET": SubResource("Animation_pfl0h"), "rotate": SubResource("Animation_ikdwl") } diff --git a/script/character/battle.gd b/script/character/battle.gd index f1dc27f..7fdf393 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -154,10 +154,10 @@ func settle(from: int, to: int, dir: Vector2, attack: AttackCfg) -> HitResult: #破盾、格挡、击杀修正 if break_level_sub < 0: - pause_time = 0.15 + pause_time = 0.1 break_level_sub = 0 elif break_level_sub == 0: - pause_time = 0.1 + pause_time = 0.05 if is_break_shield: pause_time = 0.2 break_level_sub = 2 diff --git a/script/character/character.gd b/script/character/character.gd index a08dbe5..4054fa6 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -197,6 +197,10 @@ func cost_mp(value: int): battle.cost_mp(value) +func set_effect_lock(value: bool): + effect.set_effect_lock(value) + + func set_target(target: int): set_status("target", target) set_status("is_lock", false) diff --git a/script/character/effect.gd b/script/character/effect.gd index 17c0d85..5e5a00a 100644 --- a/script/character/effect.gd +++ b/script/character/effect.gd @@ -7,9 +7,11 @@ class_name Effect @onready var readiness_monster: PackedScene = preload("res://scene/effect/readiness/readiness_monster.tscn") @onready var readiness_bullet: PackedScene = preload("res://scene/effect/readiness/readiness_bullet.tscn") @onready var readiness_soul: PackedScene = preload("res://scene/effect/readiness/readiness_soul.tscn") +@onready var readiness_lock: PackedScene = preload("res://scene/effect/readiness/readiness_lock.tscn") @onready var character: Character = (get_owner() as Character) @onready var view: View = (%View as View) @onready var status: Status = (%Status as Status) +@onready var lock: Node3D = ($Lock as Node3D) var rediness: Decal var is_pause: bool @@ -41,6 +43,13 @@ func set_body_scale(body_scale: Vector3): rediness.scale = body_scale *2.2 rediness.scale.y = 10 rediness.position = Vector3.DOWN * 4 + lock.scale = body_scale *2.2 + lock.scale.y = 10 + lock.position = Vector3.DOWN * 4 + + +func set_effect_lock(is_lock: bool): + lock.visible = is_lock func _process(delta) -> void: diff --git a/script/character/player/player_action.gd b/script/character/player/player_action.gd index 441a840..b3dee42 100644 --- a/script/character/player/player_action.gd +++ b/script/character/player/player_action.gd @@ -45,9 +45,13 @@ func _process(delta) -> void: ) if enemy_list: character.set_target(enemy_list[0].id()) + enemy_list[0].set_effect_lock(true) else: if status.target: - lock_cd_dict[status.target] = 0.5 #0.5秒内无法再次主动锁定 + var target = Global.character_mgr.get_character(status.target) + if target: + target.set_effect_lock(false) + lock_cd_dict[status.target] = 0.5 #0.5秒内无法再次主动锁定 character.set_is_lock(is_lock) diff --git a/script/effect/readiness_lock.gd b/script/effect/readiness_lock.gd new file mode 100644 index 0000000..61e4479 --- /dev/null +++ b/script/effect/readiness_lock.gd @@ -0,0 +1,5 @@ +extends Decal +class_name ReadinessLock + +func _process(delta: float) -> void: + rotation_degrees.y += delta * 90 diff --git a/script/ui/hud/lock_item.gd b/script/ui/hud/lock_item.gd index e49bc29..b46732b 100644 --- a/script/ui/hud/lock_item.gd +++ b/script/ui/hud/lock_item.gd @@ -24,3 +24,6 @@ func on_target_changed(target_id: int): func on_is_lock_changed(is_lock: bool): lock.frame = 0 if is_lock else 1 + var scale_value: float = 1.0 if is_lock else 1.2 + lock.scale.x = scale_value + lock.scale.y = scale_value