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