1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00

Compare commits

...

6 Commits

Author SHA1 Message Date
fallingshrimp 97f52a5dda fix(EnergyBlock): 为不同攻击类型添加适当的延迟
在攻击动画结束后添加等待时间,确保动画播放完整后再执行后续动作
2026-05-10 23:04:16 +08:00
fallingshrimp b1e25afb02 fix(角色平衡): 调整多个角色的移动速度和攻击冷却时间
修改MTY、Dog、Cat和Hen角色的移动速度参数,降低部分角色的速度以平衡游戏性
调整Dog和Hen的攻击冷却时间范围,使战斗节奏更合理
简化Hen的攻击逻辑,移除随机子弹数量生成
2026-05-10 23:00:47 +08:00
fallingshrimp d22a86b7c8 refactor(Characters): 移除HCN角色中的BigLaser武器
BigLaser武器在当前角色中未被使用,移除以减少冗余资源
2026-05-10 22:59:06 +08:00
fallingshrimp bae3a21cf9 fix(Bullets/Volcano): 调整火山子弹动画轨迹参数
修改火山子弹动画轨迹中的关键点参数,使动画效果更流畅
2026-05-10 22:53:33 +08:00
fallingshrimp f5f63ee602 fix(Statemachine): 在子弹过滤中添加实例有效性检查
确保在过滤子弹时检查实例是否有效,避免因无效实例导致的错误
2026-05-10 22:51:03 +08:00
fallingshrimp 2ebcdbee25 fix(Bullets): 调整火山子弹的动画参数和碰撞体尺寸
修改火山子弹的动画轨迹点和碰撞体尺寸,以改善视觉效果和命中判定
2026-05-10 22:50:28 +08:00
8 changed files with 16 additions and 17 deletions
+4 -4
View File
@@ -85,7 +85,7 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0, 2),
"points": PackedFloat32Array(150, -0.25, 0, 0.25, 0, 500, -0.083333336, -8.333334, 0, 0, 150, -0.01666667, 83.333336, 0, 0),
"points": PackedFloat32Array(200, 0, 0, 0.25, 0, 500, -0.083333336, -8.333334, 0, 0, 200, 0, 0, 0, 0),
"times": PackedFloat32Array(0, 0.2, 0.3)
}
tracks/1/type = "bezier"
@@ -96,7 +96,7 @@ tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0, 0, 0, 0, 0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0.7853982, -0.06585455, -0.14365458, 0.2, 0, -0.7853982, -0.06666666, 0.2617994, 0, 0, -0.7853982, -0.033333343, 0, 0, 0, 3.142, -0.041666668, 0.91629785, 0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.2, 0, 0.7853982, -0.1, 0, 0.25, 0, -0.7853982, 0, 0, 0, -2, -0.7853982, -0.1, 0, 0.2, 0, 3.142, -0.2, 3, 0, 0),
"times": PackedFloat32Array(0, 0.3, 0.6, 0.888264, 1.2, 1.45)
}
tracks/2/type = "bezier"
@@ -184,7 +184,7 @@ _data = {
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1sgli"]
size = Vector2(23.999994, 124)
size = Vector2(23.999994, 153)
[node name="Volcano" unique_id=2046549391 instance=ExtResource("1_gd3m7")]
script = ExtResource("2_w1utg")
@@ -210,7 +210,7 @@ texture = ExtResource("2_wwxm2")
[node name="audio" type="AudioStreamPlayer2D" parent="texture/anchor/textureSword" index="0" unique_id=167399724]
[node name="hitbox" parent="." index="1" unique_id=175349408 node_paths=PackedStringArray("target")]
position = Vector2(149.99998, 0.06109595)
position = Vector2(199.99998, 0.081461266)
rotation = 0.00040731629
shape = SubResource("RectangleShape2D_1sgli")
script = ExtResource("7_1sgli")
-3
View File
@@ -3,12 +3,9 @@
[ext_resource type="PackedScene" uid="uid://bs863g2s8r770" path="res://components/Abstracts/PlayerBase.tscn" id="1_eeneu"]
[ext_resource type="Script" uid="uid://bevc4f6apql4t" path="res://scripts/Contents/Characters/HCN.gd" id="2_f7uj3"]
[ext_resource type="PackedScene" uid="uid://yq7vmijwvgx1" path="res://components/Weapons/AcidWind.tscn" id="3_2fpmn"]
[ext_resource type="PackedScene" uid="uid://cxabqjo7skxev" path="res://components/Weapons/BigLaser.tscn" id="4_4gd8a"]
[node name="HCN" unique_id=1711205167 instance=ExtResource("1_eeneu")]
script = ExtResource("2_f7uj3")
displayName = "氰化氢"
[node name="AcidWind" parent="weaponStore" parent_id_path=PackedInt32Array(1319091445) index="0" unique_id=1599717188 instance=ExtResource("3_2fpmn")]
[node name="BigLaser" parent="weaponStore" parent_id_path=PackedInt32Array(1319091445) index="1" unique_id=906291376 instance=ExtResource("4_4gd8a")]
+3 -3
View File
@@ -3,17 +3,17 @@ class_name Maodie
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 75
fields[FieldStore.Entity.MOVEMENT_SPEED] = randf_range(0.5, 0.8)
fields[FieldStore.Entity.MOVEMENT_SPEED] = randf_range(0.4, 0.65)
attackCooldownMap[0] = randi_range(5000, 8000)
sprintMultiplier = randf_range(5, 15)
func spawn():
texture.play("walk")
func ai():
PresetEntityAI.follow(self, currentFocusedBoss)
PresetEntityAI.follow(self , currentFocusedBoss)
tryAttack(0, true)
func attack(type: int):
if type == 0:
BulletBase.generate(ComponentManager.getBullet("ChickSprint"), self, position, 0)
BulletBase.generate(ComponentManager.getBullet("ChickSprint"), self , position, 0)
trySprint()
return true
func sprint():
+1 -1
View File
@@ -4,7 +4,7 @@ func register():
fields[FieldStore.Entity.MAX_HEALTH] = 120
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.2
fields[FieldStore.Entity.OFFSET_SHOOT] = 0
attackCooldownMap[0] = randi_range(100, 500)
attackCooldownMap[0] = randi_range(1000, 3000)
func spawn():
texture.play("walk")
func ai():
@@ -27,6 +27,7 @@ func attack(type: int):
for bullet in BulletBase.generate(ComponentManager.getBullet("SwingSword"), self , getTrackingAnchor(), getTrackingAnchor().angle_to_point(currentFocusedPosition)):
if bullet is SwingSwordBullet:
await bullet.destroied
await TickTool.millseconds(1000)
elif type == 1:
for bullet in BulletBase.generate(ComponentManager.getBullet("Broom"), self , getTrackingAnchor(), getTrackingAnchor().angle_to_point(currentFocusedPosition)):
if is_instance_valid(currentBroom): break
@@ -38,6 +39,7 @@ func attack(type: int):
await chargeUp()
trySprint()
currentBroom.animator.play("attack")
await TickTool.millseconds(1000)
elif type == 2:
for i in 3:
for bullet in BulletBase.generate(ComponentManager.getBullet("BroomGun"), self , position, position.angle_to_point(currentFocusedPosition)):
@@ -51,6 +53,7 @@ func attack(type: int):
bullet.animator.play("rotate")
await bullet.destroied
fields[FieldStore.Entity.MOVEMENT_SPEED] /= 3
await TickTool.millseconds(4000)
elif type == 4:
BulletBase.generate(ComponentManager.getBullet("BroomBoomerang"), self , position, position.angle_to_point(currentFocusedPosition))
elif type == 5:
+3 -4
View File
@@ -5,15 +5,14 @@ func register():
fields[FieldStore.Entity.MAX_HEALTH] = 100
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.3
fields[FieldStore.Entity.OFFSET_SHOOT] = 10
attackCooldownMap[0] = randi_range(2000, 5000)
func spawn():
texture.play("walk")
func ai():
attackCooldownMap[0] = randi_range(1500, 4000)
PresetEntityAI.follow(self, currentFocusedBoss, 300)
PresetEntityAI.follow(self , currentFocusedBoss, 300)
tryAttack(0)
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
for i in randi_range(1, 4):
BulletBase.generate(ComponentManager.getBullet("Star"), self, weaponPos, (currentFocusedBoss.position - position).angle())
BulletBase.generate(ComponentManager.getBullet("Star"), self , weaponPos, (currentFocusedBoss.position - position).angle())
return true
+1 -1
View File
@@ -6,7 +6,7 @@ var MIN_ATTACK_DISTANCE = 400
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 400
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.9
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.7
attackCooldownMap[0] = 4000
attackCooldownMap[1] = 3000
attackCooldownMap[2] = 500
+1 -1
View File
@@ -17,7 +17,7 @@ func getStateAngle(index: int):
func forceFilter():
bullets = bullets.filter(
func(b):
if b is BulletBase:
if is_instance_valid(b) && b is BulletBase:
return !b.destroying
else:
return false