1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 23:11:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/Bullets/BlueCrystal.gd
T
fallingshrimp 848a878992 feat(蓝水晶): 添加蓝水晶子弹追踪和分裂功能
为蓝水晶子弹添加追踪开关和速度提升属性
实现命中敌人时概率分裂钻石的功能
添加武器升华选项以增强蓝水晶能力
2026-05-10 15:17:57 +08:00

35 lines
1.2 KiB
GDScript

extends BulletBase
class_name BlueCrystalBullet
var tracer: EntityBase = null
var canTrace: bool = true
var speedBoost: float = 0
var splitRate: float = 0
@onready var trail: GPUParticles2D = $%trail
func ai():
if is_instance_valid(tracer):
var tracker = tracer.getTrackingAnchor()
var targetAngle = position.angle_to_point(tracker)
trail.rotation = - Vector2.from_angle(rotation).angle_to(Vector2.from_angle(targetAngle)) / (speed / initialSpeed)
if canTrace:
PresetBulletAI.trace(self , tracker, 0.07)
else:
trail.rotation = 0
speed += 0.1 * (1 + speedBoost)
PresetBulletAI.forward(self , rotation)
func destroy(_beacuseMap: bool):
var eff = EffectController.create(ComponentManager.getEffect("BlueCrystalExplosion"), global_position)
eff.rotation = rotation
eff.shot()
func succeedToHit(_dmg: float, entity: EntityBase):
if entity == tracer:
canTrace = false
if MathTool.rate(splitRate):
for diamond in BulletBase.generate(ComponentManager.getBullet("Diamond2"), entity, position, deg_to_rad(randf_range(0, 360))):
if diamond is Diamond2Bullet:
diamond.baseDamage = baseDamage * 0.8
diamond.parent = self
diamond.penerate += penerate