mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-30 23:32:29 +08:00
refactor(ChainGun): 调整武器属性和子弹生成逻辑
修改ChainGun的数值属性和子弹生成方式,新增split参数控制子弹间距 调整BossBar的样式和位置,删除未使用的shader文件
This commit is contained in:
@@ -47,7 +47,7 @@ displayName = "公鸡"
|
|||||||
process_mode = 4
|
process_mode = 4
|
||||||
|
|
||||||
[node name="ChainGun" parent="weaponStore" index="0" instance=ExtResource("3_inwol")]
|
[node name="ChainGun" parent="weaponStore" index="0" instance=ExtResource("3_inwol")]
|
||||||
offset_bottom = 330.0
|
offset_bottom = 352.0
|
||||||
|
|
||||||
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("3_ms5sq")]
|
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("3_ms5sq")]
|
||||||
debugRebuild = false
|
debugRebuild = false
|
||||||
|
|||||||
@@ -1,14 +1,47 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://ofpg5s3j7esv"]
|
[gd_scene load_steps=9 format=3 uid="uid://ofpg5s3j7esv"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/Statemachine/BossBar.gd" id="1_hkj6o"]
|
[ext_resource type="Script" path="res://scripts/Statemachine/BossBar.gd" id="1_hkj6o"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d1ulrvupa76ap" path="res://components/UI/ColorBar.tscn" id="1_uxey7"]
|
[ext_resource type="PackedScene" uid="uid://d1ulrvupa76ap" path="res://components/UI/ColorBar.tscn" id="1_uxey7"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0aktd"]
|
||||||
|
bg_color = Color(0, 0, 0, 0.5)
|
||||||
|
corner_radius_top_left = 15
|
||||||
|
corner_radius_top_right = 15
|
||||||
|
corner_radius_bottom_right = 15
|
||||||
|
corner_radius_bottom_left = 15
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gor8g"]
|
||||||
|
bg_color = Color(1, 0, 0, 0.5)
|
||||||
|
corner_radius_top_left = 15
|
||||||
|
corner_radius_top_right = 15
|
||||||
|
corner_radius_bottom_right = 15
|
||||||
|
corner_radius_bottom_left = 15
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g3ag3"]
|
||||||
|
bg_color = Color(0, 1, 0, 0.5)
|
||||||
|
corner_radius_top_left = 15
|
||||||
|
corner_radius_top_right = 15
|
||||||
|
corner_radius_bottom_right = 15
|
||||||
|
corner_radius_bottom_left = 15
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bua1u"]
|
||||||
|
bg_color = Color(1, 1, 1, 1)
|
||||||
|
corner_radius_top_left = 15
|
||||||
|
corner_radius_top_right = 15
|
||||||
|
corner_radius_bottom_right = 15
|
||||||
|
corner_radius_bottom_left = 15
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ar00p"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ar00p"]
|
||||||
content_margin_left = 10.0
|
content_margin_left = 10.0
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_esyuk"]
|
[sub_resource type="LabelSettings" id="LabelSettings_esyuk"]
|
||||||
font_size = 12
|
font_size = 12
|
||||||
font_color = Color(0, 0, 0, 1)
|
font_color = Color(0, 0, 0, 1)
|
||||||
|
outline_size = 2
|
||||||
|
|
||||||
[node name="BossBar" type="Control"]
|
[node name="BossBar" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
@@ -23,16 +56,20 @@ script = ExtResource("1_hkj6o")
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 0.2
|
anchor_left = 0.3
|
||||||
anchor_top = 1.0
|
anchor_top = 0.95
|
||||||
anchor_right = 0.8
|
anchor_right = 0.7
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 0.95
|
||||||
offset_top = -65.0
|
offset_top = -30.0
|
||||||
offset_right = 0.0
|
offset_right = 0.0
|
||||||
offset_bottom = -40.0
|
offset_bottom = 0.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 2
|
||||||
currentValue = 0.0
|
currentValue = 0.0
|
||||||
|
backBox = SubResource("StyleBoxFlat_0aktd")
|
||||||
|
middleBox1 = SubResource("StyleBoxFlat_gor8g")
|
||||||
|
middleBox2 = SubResource("StyleBoxFlat_g3ag3")
|
||||||
|
frontBox = SubResource("StyleBoxFlat_bua1u")
|
||||||
|
|
||||||
[node name="panel" type="PanelContainer" parent="health"]
|
[node name="panel" type="PanelContainer" parent="health"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|||||||
@@ -10,16 +10,19 @@ avatarTexture = ExtResource("2_ghn43")
|
|||||||
displayName = "链式机枪"
|
displayName = "链式机枪"
|
||||||
costBeachball = 400
|
costBeachball = 400
|
||||||
store = {
|
store = {
|
||||||
"atk": 5,
|
"atk": 7,
|
||||||
"count": 1
|
"count": 1,
|
||||||
|
"split": 20
|
||||||
}
|
}
|
||||||
storeType = {
|
storeType = {
|
||||||
"atk": 1,
|
"atk": 1,
|
||||||
"count": 1
|
"count": 1,
|
||||||
|
"split": 1
|
||||||
}
|
}
|
||||||
descriptionTemplate = "发射$count个[b]微型水晶[/b],可造成$atk点伤害。"
|
descriptionTemplate = "以$split单位的间隔发射$count个[b]微型水晶[/b],可造成$atk点伤害。"
|
||||||
needEnergy = 1.0
|
needEnergy = 1.0
|
||||||
cooldown = 66.0
|
cooldown = 50.0
|
||||||
|
debugRebuild = true
|
||||||
|
|
||||||
[node name="avatar" parent="container/info" index="0"]
|
[node name="avatar" parent="container/info" index="0"]
|
||||||
texture = ExtResource("2_ghn43")
|
texture = ExtResource("2_ghn43")
|
||||||
@@ -34,4 +37,4 @@ text = "400"
|
|||||||
displayName = "链式机枪"
|
displayName = "链式机枪"
|
||||||
|
|
||||||
[node name="description" parent="container" index="2"]
|
[node name="description" parent="container" index="2"]
|
||||||
text = "[center]发射[color=cyan]2[/color]→[color=yellow]2[/color]个[b]微型水晶[/b],可造成[color=cyan]5[/color]→[color=yellow]7[/color]点伤害。[/center]"
|
text = "[center]以[color=cyan]20[/color]→[color=yellow]0[/color]单位的间隔发射[color=cyan]1[/color]→[color=yellow]1[/color]个[b]微型水晶[/b],可造成[color=cyan]7[/color]→[color=yellow]9[/color]点伤害。[/center]"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
extends BulletBase
|
extends BulletBase
|
||||||
|
|
||||||
var count: int = 1
|
var count: int = 1
|
||||||
|
var splits: float = 10.0
|
||||||
|
|
||||||
@onready var anchor: Node2D = $"%anchor"
|
@onready var anchor: Node2D = $"%anchor"
|
||||||
|
|
||||||
@@ -9,6 +10,6 @@ func spawn():
|
|||||||
for i in BulletBase.generate(ComponentManager.getBullet("PurpleCrystalSmall"), launcher, anchor.global_position, rotation):
|
for i in BulletBase.generate(ComponentManager.getBullet("PurpleCrystalSmall"), launcher, anchor.global_position, rotation):
|
||||||
i.damage = damage
|
i.damage = damage
|
||||||
var dir = Vector2.from_angle(i.rotation).rotated(deg_to_rad(-90))
|
var dir = Vector2.from_angle(i.rotation).rotated(deg_to_rad(-90))
|
||||||
i.global_position += dir * (count - j * 2) * 20 / 2
|
i.global_position += dir * (count - j * 2) * splits / 2
|
||||||
func ai():
|
func ai():
|
||||||
PresetBulletAI.lockLauncher(self, launcher, true)
|
PresetBulletAI.lockLauncher(self, launcher, true)
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ extends Weapon
|
|||||||
|
|
||||||
func update(to, origin, _entity):
|
func update(to, origin, _entity):
|
||||||
origin["atk"] += 2 * to * soulLevel
|
origin["atk"] += 2 * to * soulLevel
|
||||||
origin["count"] += 0.25 * to * soulLevel
|
origin["count"] = 1 * soulLevel
|
||||||
|
origin["split"] /= 1 + 0.05 * to * soulLevel
|
||||||
return origin
|
return origin
|
||||||
func attack(entity: EntityBase):
|
func attack(entity: EntityBase):
|
||||||
for i in BulletBase.generate(ComponentManager.getBullet("ChainGun"), entity, entity.texture.global_position, (get_global_mouse_position() - entity.texture.global_position).angle()):
|
for i in BulletBase.generate(ComponentManager.getBullet("ChainGun"), entity, entity.texture.global_position, (get_global_mouse_position() - entity.texture.global_position).angle()):
|
||||||
i.damage = readStore("atk")
|
i.damage = readStore("atk")
|
||||||
i.count = floor(readStore("count"))
|
i.count = floor(readStore("count"))
|
||||||
|
i.split = readStore("split")
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
shader_type canvas_item;
|
|
||||||
uniform float inner:hint_range(0.0, 1.0, 0.01)=0.5;
|
|
||||||
uniform float outer:hint_range(0.0, 1.0, 0.01)=0.75;
|
|
||||||
uniform float alpha:hint_range(0.0, 1.0, 0.1)=0.5;
|
|
||||||
void fragment() {
|
|
||||||
vec2 center=vec2(0.5);
|
|
||||||
float dist=distance(UV,center)*2.0;
|
|
||||||
if(dist<inner){
|
|
||||||
COLOR.a*=alpha;
|
|
||||||
}else{
|
|
||||||
COLOR.a*=float(inner<dist&&dist<outer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
shader_type canvas_item;
|
|
||||||
uniform vec4 color:source_color;
|
|
||||||
uniform float mixProgress:hint_range(0.0, 1.0, 0.01)=0.5;
|
|
||||||
void fragment() {
|
|
||||||
float maxDistance=0.5;
|
|
||||||
float dist=distance(UV,vec2(0.5));
|
|
||||||
vec4 mixed=vec4(color.rgb,smoothstep(0,1,(maxDistance-dist)/maxDistance));
|
|
||||||
COLOR=mix(COLOR,mixed,mixProgress);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user