2026-03-18 22:39:44 +08:00
|
|
|
extends BulletBase
|
|
|
|
|
class_name QKSwordBullet
|
|
|
|
|
|
|
|
|
|
var tracer: EntityBase
|
2026-03-21 13:51:17 +08:00
|
|
|
var spawnSpeed: float = 1
|
2026-03-18 22:39:44 +08:00
|
|
|
|
2026-03-21 13:51:17 +08:00
|
|
|
func register():
|
2026-03-22 16:32:18 +08:00
|
|
|
spawnSpeed = randf_range(0.75, 2)
|
2026-03-21 13:51:17 +08:00
|
|
|
animator.speed_scale = spawnSpeed
|
2026-03-21 14:37:46 +08:00
|
|
|
lifeTime /= spawnSpeed
|
2026-03-18 22:39:44 +08:00
|
|
|
func ai():
|
2026-03-21 17:32:51 +08:00
|
|
|
if is_instance_valid(tracer):
|
2026-03-19 22:58:50 +08:00
|
|
|
look_at(tracer.getTrackingAnchor())
|
2026-03-21 13:51:17 +08:00
|
|
|
if timeLived() > 1000 / spawnSpeed:
|
2026-03-19 22:58:50 +08:00
|
|
|
PresetBulletAI.forward(self , rotation) # 前进
|
|
|
|
|
hitbox.disabled = false
|
|
|
|
|
else:
|
|
|
|
|
hitbox.disabled = true
|
|
|
|
|
func succeedToHit(_dmg: float, entity: EntityBase):
|
|
|
|
|
if entity == tracer:
|
2026-03-21 17:32:51 +08:00
|
|
|
tryDestroy() # 只需要命中一次目标就不需要继续前进了
|
2026-03-22 07:43:36 +08:00
|
|
|
var eff = EffectController.create(
|
2026-03-21 13:51:17 +08:00
|
|
|
ComponentManager.getEffect("FooExplosion"),
|
2026-03-19 22:58:50 +08:00
|
|
|
entity.texture.global_position
|
2026-03-22 07:43:36 +08:00
|
|
|
)
|
|
|
|
|
var varians = randi_range(0, 2)
|
|
|
|
|
eff.texture.sprite_frames = load("res://resources/effects/FooExplosion/%d/%d.tres" % [varians, varians])
|
|
|
|
|
eff.shot()
|
2026-03-22 16:32:18 +08:00
|
|
|
CameraManager.shake(300, 500)
|