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():
|
|
|
|
|
spawnSpeed = randf_range(0.25, 1.75)
|
|
|
|
|
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-19 22:58:50 +08:00
|
|
|
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
|
|
|
|
|
).shot()
|