mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-02 01:11:54 +08:00
a38d99a998
将子弹伤害检测逻辑提取到BulletTool工具类中 新增SevenSoul子弹的初始属性和碰撞处理 调整hitbox位置并启用碰撞检测
40 lines
1.1 KiB
GDScript
40 lines
1.1 KiB
GDScript
extends BulletBase
|
|
|
|
var colors = [
|
|
"#2BEAFF",
|
|
"#FCA500",
|
|
"#0042FF",
|
|
"#D346D0",
|
|
"#0C9B0B",
|
|
"#FDEB0F"
|
|
]
|
|
var index = 0
|
|
var generationDuration: float = 15000
|
|
var pingAfterGeneration: float = 5000
|
|
|
|
@onready var heart = $"%heart"
|
|
@onready var effect: GPUParticles2D = $"%effect"
|
|
|
|
func register():
|
|
area_entered.connect(
|
|
func(area):
|
|
var bullet = BulletTool.fromArea(area)
|
|
if bullet and BulletTool.canDamage(bullet, launcher):
|
|
launcher.tryHeal(1)
|
|
launcher.storeEnergy(damage * 0.25)
|
|
)
|
|
func spawn():
|
|
modulate = Color(colors[index % colors.size()])
|
|
effect.emitting = true
|
|
launcher.tryHeal(5)
|
|
|
|
func ai():
|
|
rotation_degrees = 360.0 / colors.size() * index + timeLived() / generationDuration * 360 - index / 6.0 * 360.0
|
|
heart.global_rotation_degrees = 0
|
|
PresetBulletAI.lockLauncher(self, launcher, true)
|
|
func applyDot():
|
|
if timeLived() > generationDuration * ((6.0 - index) / 6.0) + pingAfterGeneration:
|
|
BulletBase.generate(ComponentManager.getBullet("SoulBall"), launcher, heart.global_position, heart.global_position.angle_to_point(get_global_mouse_position()))
|
|
await TickTool.millseconds(100)
|
|
return true
|