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

feat(武器系统): 重构LGBT武器和子弹逻辑

- 修改BulletBase.generate返回子弹实例数组而非数量
- 新增LGBTBoom特效场景
- 降低LGBT武器能量消耗从150降至10
- 移除Rooster角色的攻击方法,改为使用武器系统
- 重构LGBT子弹追踪逻辑,增加追踪时间和效率参数
- 在LGBT武器攻击时设置子弹伤害和追踪目标
This commit is contained in:
2025-09-06 09:01:46 +08:00
parent 9ea534441b
commit 6cf3c409e3
6 changed files with 18 additions and 19 deletions
+5
View File
@@ -0,0 +1,5 @@
[gd_scene load_steps=2 format=3 uid="uid://ddj4xiia81g28"]
[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_qfayo"]
[node name="LGBTBoom" instance=ExtResource("1_qfayo")]
+1 -1
View File
@@ -21,7 +21,7 @@ store = {
}
storeType = Array[int]([2, 0, 0, 1, 0])
descriptionTemplate = "发射$count条,每条间分隔$angle,可追踪$trace秒,效率为$power的带状彩虹,每条造成$atk点伤害。"
needEnergy = 150.0
needEnergy = 10.0
cooldown = 2000.0
[node name="avatar" parent="container/info" index="0"]
+5 -9
View File
@@ -1,10 +1,10 @@
extends BulletBase
class_name LGBTBullet
var myTracer: EntityBase = null
var tracer: EntityBase = null
var maxTraceTime: float = 0
var tracePower: float
func spawn():
findTracer()
func register():
speed = 1
damage = 5
@@ -12,10 +12,6 @@ func ai():
texture.rotation_degrees += speed
speed *= 1.05
speed = clamp(speed, 0, 20)
if is_instance_valid(myTracer):
PresetAIs.trace(self, myTracer.position, clamp(speed / 150, 0, 1))
else:
findTracer()
if is_instance_valid(tracer) and timeLived() < maxTraceTime:
PresetAIs.trace(self, tracer.position, clamp(speed / 50 * tracePower, 0, 1))
PresetAIs.forward(self, rotation)
func findTracer():
myTracer = EntityTool.findClosetEntity(position, get_tree(), false, true)
-7
View File
@@ -21,13 +21,6 @@ func ai():
trySprint()
if Input.is_action_just_pressed("heal"):
tryHeal(20)
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), self, weaponPos, deg_to_rad(randf_range(0, 360)))
elif type == 1:
var weaponPos = findWeaponAnchor("normal")
return BulletBase.generate(preload("res://components/Bullets/BigLaser.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle())
func sprint():
move(Vector2(
Input.get_axis("m_left", "m_right"),
+6 -1
View File
@@ -14,5 +14,10 @@ func attack(entity: EntityBase):
var facingAngle = (get_global_mouse_position() - weaponPos).angle()
var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2))
for i in range(int(readStore("count"))):
BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i))
for j in BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)):
var bullet: LGBTBullet = j
bullet.damage = readStore("atk")
bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
bullet.maxTraceTime = readStore("trace") * 1000
bullet.tracePower = readStore("power")
return true
+1 -1
View File
@@ -146,4 +146,4 @@ static func generate(
if addToWorld:
WorldManager.rootNode.call_deferred("add_child", instance)
instances.append(instance)
return len(instances)
return instances