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:
@@ -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
|
||||
@@ -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"),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user