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

feat: 添加激光子弹功能,更新相关资源和着色器

This commit is contained in:
2025-08-27 08:09:47 +08:00
parent 739be888f3
commit c5da8d7b5e
12 changed files with 107 additions and 11 deletions
+2 -1
View File
@@ -2,5 +2,6 @@ extends BulletBase
class_name Diamond
func ai():
rotation_degrees += 1
if Time.get_ticks_msec() - spawnInWhen < 500: # 生成的前0.5秒可以追踪
rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.1)
forward(Vector2.from_angle(rotation))
+8 -5
View File
@@ -3,8 +3,6 @@ class_name Chick
@onready var firepot = $"%firepot"
var angle = 0
func _ready():
fields[FieldStore.Entity.MAX_HEALTH] = 1000
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.1
@@ -15,15 +13,20 @@ func ai():
if currentFocusedBoss.position.distance_to(position) < 300:
tryAttack(1)
else:
if tryAttack(0):
angle += 20
tryAttack(0)
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
BulletBase.generate(preload("res://components/Bullets/Diamond.tscn"), self, weaponPos, deg_to_rad(angle))
BulletBase.generate(preload("res://components/Bullets/Diamond.tscn"), self, weaponPos, rotation + deg_to_rad(MathTool.randc_from([-90, 90])))
elif type == 1:
var weaponPos = findWeaponAnchor("normal")
var target = weaponPos.angle_to_point(currentFocusedBoss.position)
firepot.global_rotation = target
firepot.shot()
BulletBase.generate(preload("res://components/Bullets/FireScan.tscn"), self, weaponPos, target)
# elif type == 2:
# var weaponPos = findWeaponAnchor("normal")
# var target = weaponPos.angle_to_point(currentFocusedBoss.position)
# firepot.global_rotation = target
# firepot.shot()
BulletBase.generate(preload("res://components/Bullets/Laser.tscn"), self, weaponPos, target)
+1 -1
View File
@@ -13,7 +13,7 @@ static var countBoost: float = 0.1 # 每波增加的敌人数量百分比,指
static var data: Array[Wave] = [
# entity, minCount, maxCount, isBoss, from, to, per
create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1),
create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 8, INF, 1)
create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 0, INF, 1)
]
static func create(
+2 -1
View File
@@ -25,7 +25,8 @@ func _process(_delta: float) -> void:
if position.distance_to(spawnInWhere) >= lifeDistance:
destroy()
func _physics_process(_delta: float) -> void:
ai()
if is_instance_valid(launcher) and (launcher.isPlayer() or is_instance_valid(launcher.currentFocusedBoss)):
ai()
func hit(target: Node):
var entity: EntityBase = EntityTool.fromHurtbox(target)
+1 -1
View File
@@ -8,6 +8,6 @@ class_name ItemShow
@onready var avatarTexture: TextureRect = $"%avatar"
@onready var countLabel: Label = $"%count"
func _ready():
func _physics_process(_delta):
avatarTexture.texture = ItemStore.getTexture(type)
countLabel.text = str(count)
+3 -1
View File
@@ -6,4 +6,6 @@ static func randv2_range(offset: float):
return Vector2(
randf_range(-offset, offset),
randf_range(-offset, offset)
)
)
static func randc_from(array: Array):
return array[randi() % array.size()]