mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-11 06:07:12 +08:00
feat(子弹系统): 完善乾坤剑和格挡子弹的逻辑
添加乾坤剑的追踪和攻击逻辑,包括命中目标后的效果 调整格挡子弹的伤害值和生成气的逻辑 优化子弹动画和碰撞箱设置 为乾坤剑添加基础伤害和穿透属性
This commit is contained in:
@@ -3,17 +3,19 @@ class_name ParrierBullet
|
||||
|
||||
@export var parryRate: float = 1
|
||||
|
||||
func hitBullet(bullet: BulletBase):
|
||||
if BulletTool.canDamage(bullet, launcher):
|
||||
func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
|
||||
if BulletTool.canDamage(bullet, launcher): # 其他子弹可以使当前子弹的发射者受伤吗?
|
||||
if MathTool.rate(parryRate):
|
||||
var eff = EffectController.create(ComponentManager.getEffect("Parry"), position + (bullet.position - position).normalized() * 150)
|
||||
# 生成格挡特效
|
||||
var eff = EffectController.create(ComponentManager.getEffect("Parry"), position + (bullet.position - position).normalized() * 150) # 从子弹位置,面向其他子弹的方向前进150
|
||||
eff.modulate = bullet.modulate.blend(bullet.texture.modulate)
|
||||
eff.shot()
|
||||
# 摧毁其他子弹
|
||||
bullet.tryDestroy()
|
||||
var cycler = launcher.getOrCreateCycleTimer("parry", 2000, 100)
|
||||
if len(cycler.bullets) < 5:
|
||||
if len(cycler.bullets) < 5: # 玩家最多只能拥有5点气
|
||||
for b in BulletBase.generate(
|
||||
ComponentManager.getBullet("ParryBall"),
|
||||
ComponentManager.getBullet("ParryBall"), # 生成气的子弹
|
||||
launcher,
|
||||
position,
|
||||
0
|
||||
|
||||
@@ -6,10 +6,13 @@ var cycler: CycleTimer
|
||||
func spawn():
|
||||
cycler = launcher.getOrCreateCycleTimer("parry")
|
||||
cycler.host(self )
|
||||
launcher.sprintMultiplier += 1
|
||||
func destroy(_beacuseMap: bool):
|
||||
launcher.sprintMultiplier -= 1
|
||||
func ai():
|
||||
PresetBulletAI.selfRotate(self , 5)
|
||||
hitbox.disabled = !launcher.sprinting
|
||||
func succeedToHit(_dmg: float, entity: EntityBase):
|
||||
hitbox.disabled = !launcher.sprinting # 玩家在冲刺时气的碰撞箱才生效
|
||||
func succeedToHit(_dmg: float, entity: EntityBase): # 当撞到敌人时
|
||||
for bullet in BulletBase.generate(
|
||||
ComponentManager.getBullet("QKSword"),
|
||||
launcher,
|
||||
@@ -19,4 +22,4 @@ func succeedToHit(_dmg: float, entity: EntityBase):
|
||||
if bullet is QKSwordBullet:
|
||||
bullet.position = entity.texture.global_position + MathTool.sampleInRing(50, 200)
|
||||
bullet.tracer = entity
|
||||
bullet.look_at(entity.position)
|
||||
bullet.look_at(entity.getTrackingAnchor()) # 生成的乾坤剑面向敌人
|
||||
|
||||
@@ -2,9 +2,20 @@ extends BulletBase
|
||||
class_name QKSwordBullet
|
||||
|
||||
var tracer: EntityBase
|
||||
var attackedTracer: bool = false
|
||||
|
||||
func ai():
|
||||
if is_instance_valid(tracer):
|
||||
look_at(tracer.position)
|
||||
if is_instance_valid(tracer) && !attackedTracer:
|
||||
look_at(tracer.getTrackingAnchor())
|
||||
if timeLived() > 1000:
|
||||
PresetBulletAI.forward(self , rotation)
|
||||
PresetBulletAI.forward(self , rotation) # 前进
|
||||
hitbox.disabled = false
|
||||
else:
|
||||
hitbox.disabled = true
|
||||
func succeedToHit(_dmg: float, entity: EntityBase):
|
||||
if entity == tracer:
|
||||
attackedTracer = true # 只需要命中一次目标就不需要继续前进了
|
||||
EffectController.create(
|
||||
ComponentManager.getEffect("CatBoom"),
|
||||
entity.texture.global_position
|
||||
).shot()
|
||||
|
||||
Reference in New Issue
Block a user