1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

Add laser sound effect and implement BigLaser bullet behavior

- Added laserbig.ogg sound effect import configuration.
- Created BigLaser script extending BulletBase with AI targeting and dot application functionality.
This commit is contained in:
2025-08-27 19:59:05 +08:00
parent 561e12398a
commit a688fe3b44
12 changed files with 102 additions and 13 deletions
+12
View File
@@ -0,0 +1,12 @@
extends BulletBase
class_name BigLaser
func ai():
rotation = (get_global_mouse_position() - position).angle()
position = launcher.texture.global_position
func applyDot():
hitbox.disabled = true
await TickTool.millseconds(50)
hitbox.disabled = false
await TickTool.millseconds(50)
return true
+7 -1
View File
@@ -11,7 +11,11 @@ func ai():
if direction.length() == 0:
texture.play("idle")
if Input.is_action_pressed("attack"):
cooldownUnit = 200
tryAttack(0)
elif Input.is_action_pressed("attack2"):
cooldownUnit = 6000
tryAttack(1)
if Input.is_action_just_pressed("sprint"):
trySprint()
if Input.is_action_just_pressed("heal"):
@@ -19,8 +23,10 @@ func ai():
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
# return BulletBase.generate(preload("res://components/Bullets/Pencil.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle())
return BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle())
elif type == 1:
var weaponPos = findWeaponAnchor("normal")
return BulletBase.generate(preload("res://components/Bullets/BigLaser.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle())
func sprint():
move(Vector2(
Input.get_axis("m_left", "m_right"),
+6
View File
@@ -32,6 +32,7 @@ func _ready():
await animator.animation_finished
if autoLoopAnimation:
animator.play("loop")
dotLoop()
func _process(_delta: float) -> void:
if lifeTime > 0:
if Time.get_ticks_msec() - spawnInWhen >= lifeTime:
@@ -60,6 +61,9 @@ func fullPenerate():
return fields.get(FieldStore.Bullet.PENERATE) + launcher.fields.get(FieldStore.Entity.PENERATE)
func timeLived():
return Time.get_ticks_msec() - spawnInWhen
func dotLoop():
if await applyDot():
await dotLoop()
func ai():
pass
@@ -67,6 +71,8 @@ func destroy():
queue_free()
func spawn():
pass
func applyDot():
pass
static func generate(
bullet: PackedScene,
+1 -1
View File
@@ -83,7 +83,7 @@ func _physics_process(_delta: float) -> void:
if isPlayer() or is_instance_valid(currentFocusedBoss):
ai()
move_and_slide()
storeEnergy(0.05)
storeEnergy(0.01)
# 通用方法
func displace(direction: Vector2, isSprinting: bool = false):