mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-27 22:41:56 +08:00
feat(武器系统): 重构LGBT武器和子弹逻辑
- 修改BulletBase.generate返回子弹实例数组而非数量 - 新增LGBTBoom特效场景 - 降低LGBT武器能量消耗从150降至10 - 移除Rooster角色的攻击方法,改为使用武器系统 - 重构LGBT子弹追踪逻辑,增加追踪时间和效率参数 - 在LGBT武器攻击时设置子弹伤害和追踪目标
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ddj4xiia81g28"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_qfayo"]
|
||||
|
||||
[node name="LGBTBoom" instance=ExtResource("1_qfayo")]
|
||||
@@ -21,7 +21,7 @@ store = {
|
||||
}
|
||||
storeType = Array[int]([2, 0, 0, 1, 0])
|
||||
descriptionTemplate = "发射$count条,每条间分隔$angle,可追踪$trace秒,效率为$power的带状彩虹,每条造成$atk点伤害。"
|
||||
needEnergy = 150.0
|
||||
needEnergy = 10.0
|
||||
cooldown = 2000.0
|
||||
|
||||
[node name="avatar" parent="container/info" index="0"]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extends BulletBase
|
||||
class_name LGBTBullet
|
||||
|
||||
var myTracer: EntityBase = null
|
||||
var tracer: EntityBase = null
|
||||
var maxTraceTime: float = 0
|
||||
var tracePower: float
|
||||
|
||||
func spawn():
|
||||
findTracer()
|
||||
func register():
|
||||
speed = 1
|
||||
damage = 5
|
||||
@@ -12,10 +12,6 @@ func ai():
|
||||
texture.rotation_degrees += speed
|
||||
speed *= 1.05
|
||||
speed = clamp(speed, 0, 20)
|
||||
if is_instance_valid(myTracer):
|
||||
PresetAIs.trace(self, myTracer.position, clamp(speed / 150, 0, 1))
|
||||
else:
|
||||
findTracer()
|
||||
if is_instance_valid(tracer) and timeLived() < maxTraceTime:
|
||||
PresetAIs.trace(self, tracer.position, clamp(speed / 50 * tracePower, 0, 1))
|
||||
PresetAIs.forward(self, rotation)
|
||||
func findTracer():
|
||||
myTracer = EntityTool.findClosetEntity(position, get_tree(), false, true)
|
||||
|
||||
@@ -21,13 +21,6 @@ func ai():
|
||||
trySprint()
|
||||
if Input.is_action_just_pressed("heal"):
|
||||
tryHeal(20)
|
||||
func attack(type):
|
||||
if type == 0:
|
||||
var weaponPos = findWeaponAnchor("normal")
|
||||
BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), self, weaponPos, deg_to_rad(randf_range(0, 360)))
|
||||
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"),
|
||||
|
||||
@@ -14,5 +14,10 @@ func attack(entity: EntityBase):
|
||||
var facingAngle = (get_global_mouse_position() - weaponPos).angle()
|
||||
var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2))
|
||||
for i in range(int(readStore("count"))):
|
||||
BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i))
|
||||
for j in BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)):
|
||||
var bullet: LGBTBullet = j
|
||||
bullet.damage = readStore("atk")
|
||||
bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
|
||||
bullet.maxTraceTime = readStore("trace") * 1000
|
||||
bullet.tracePower = readStore("power")
|
||||
return true
|
||||
|
||||
@@ -146,4 +146,4 @@ static func generate(
|
||||
if addToWorld:
|
||||
WorldManager.rootNode.call_deferred("add_child", instance)
|
||||
instances.append(instance)
|
||||
return len(instances)
|
||||
return instances
|
||||
|
||||
Reference in New Issue
Block a user