mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-03 08:42:13 +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])
|
storeType = Array[int]([2, 0, 0, 1, 0])
|
||||||
descriptionTemplate = "发射$count条,每条间分隔$angle,可追踪$trace秒,效率为$power的带状彩虹,每条造成$atk点伤害。"
|
descriptionTemplate = "发射$count条,每条间分隔$angle,可追踪$trace秒,效率为$power的带状彩虹,每条造成$atk点伤害。"
|
||||||
needEnergy = 150.0
|
needEnergy = 10.0
|
||||||
cooldown = 2000.0
|
cooldown = 2000.0
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" index="0"]
|
[node name="avatar" parent="container/info" index="0"]
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
extends BulletBase
|
extends BulletBase
|
||||||
class_name LGBTBullet
|
class_name LGBTBullet
|
||||||
|
|
||||||
var myTracer: EntityBase = null
|
var tracer: EntityBase = null
|
||||||
|
var maxTraceTime: float = 0
|
||||||
|
var tracePower: float
|
||||||
|
|
||||||
func spawn():
|
|
||||||
findTracer()
|
|
||||||
func register():
|
func register():
|
||||||
speed = 1
|
speed = 1
|
||||||
damage = 5
|
damage = 5
|
||||||
@@ -12,10 +12,6 @@ func ai():
|
|||||||
texture.rotation_degrees += speed
|
texture.rotation_degrees += speed
|
||||||
speed *= 1.05
|
speed *= 1.05
|
||||||
speed = clamp(speed, 0, 20)
|
speed = clamp(speed, 0, 20)
|
||||||
if is_instance_valid(myTracer):
|
if is_instance_valid(tracer) and timeLived() < maxTraceTime:
|
||||||
PresetAIs.trace(self, myTracer.position, clamp(speed / 150, 0, 1))
|
PresetAIs.trace(self, tracer.position, clamp(speed / 50 * tracePower, 0, 1))
|
||||||
else:
|
|
||||||
findTracer()
|
|
||||||
PresetAIs.forward(self, rotation)
|
PresetAIs.forward(self, rotation)
|
||||||
func findTracer():
|
|
||||||
myTracer = EntityTool.findClosetEntity(position, get_tree(), false, true)
|
|
||||||
|
|||||||
@@ -21,13 +21,6 @@ func ai():
|
|||||||
trySprint()
|
trySprint()
|
||||||
if Input.is_action_just_pressed("heal"):
|
if Input.is_action_just_pressed("heal"):
|
||||||
tryHeal(20)
|
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():
|
func sprint():
|
||||||
move(Vector2(
|
move(Vector2(
|
||||||
Input.get_axis("m_left", "m_right"),
|
Input.get_axis("m_left", "m_right"),
|
||||||
|
|||||||
@@ -14,5 +14,10 @@ func attack(entity: EntityBase):
|
|||||||
var facingAngle = (get_global_mouse_position() - weaponPos).angle()
|
var facingAngle = (get_global_mouse_position() - weaponPos).angle()
|
||||||
var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2))
|
var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2))
|
||||||
for i in range(int(readStore("count"))):
|
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
|
return true
|
||||||
|
|||||||
@@ -146,4 +146,4 @@ static func generate(
|
|||||||
if addToWorld:
|
if addToWorld:
|
||||||
WorldManager.rootNode.call_deferred("add_child", instance)
|
WorldManager.rootNode.call_deferred("add_child", instance)
|
||||||
instances.append(instance)
|
instances.append(instance)
|
||||||
return len(instances)
|
return instances
|
||||||
|
|||||||
Reference in New Issue
Block a user