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

feat(角色): 添加KukeMC的AI逻辑和轮廓着色器

实现KukeMC的AI行为,包括子弹检测和Boss伤害逻辑
添加新的轮廓着色器用于角色渲染
在测试场景中新增角色和着色器演示
This commit is contained in:
2025-09-08 22:14:05 +08:00
parent de7a1e7317
commit 49ff189fe5
5 changed files with 80 additions and 2 deletions
+14 -1
View File
@@ -1,7 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://bnf0o8rmin5v4"] [gd_scene load_steps=7 format=3 uid="uid://bnf0o8rmin5v4"]
[ext_resource type="Shader" path="res://shaders/CooldownProgress.gdshader" id="1_vncc3"] [ext_resource type="Shader" path="res://shaders/CooldownProgress.gdshader" id="1_vncc3"]
[ext_resource type="Texture2D" uid="uid://16yhngg3jpun" path="res://resources/weapons/purple-crystal.svg" id="2_gmp7s"] [ext_resource type="Texture2D" uid="uid://16yhngg3jpun" path="res://resources/weapons/purple-crystal.svg" id="2_gmp7s"]
[ext_resource type="Shader" path="res://shaders/Outline.gdshader" id="3_8bxlh"]
[ext_resource type="Texture2D" uid="uid://dkmxuxkwtgbjg" path="res://resources/characters/kernel/7C0F216A29125CA213705918760B1AAA.png" id="3_hridd"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jyenr"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_jyenr"]
shader = ExtResource("1_vncc3") shader = ExtResource("1_vncc3")
@@ -11,8 +13,19 @@ shader_parameter/edgeHeight = 0.05
shader_parameter/trailHeight = 0.3 shader_parameter/trailHeight = 0.3
shader_parameter/trailAlpha = 0.5 shader_parameter/trailAlpha = 0.5
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tnwho"]
shader = ExtResource("3_8bxlh")
shader_parameter/width = 10.0
shader_parameter/outline_color = Color(0.78125, 0, 1, 1)
[node name="Node2D" type="Node2D"] [node name="Node2D" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_jyenr") material = SubResource("ShaderMaterial_jyenr")
position = Vector2(-471, 117)
texture = ExtResource("2_gmp7s") texture = ExtResource("2_gmp7s")
[node name="7c0f216a29125ca213705918760b1aaa" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_tnwho")
position = Vector2(503, 133)
texture = ExtResource("3_hridd")
Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkmxuxkwtgbjg"
path="res://.godot/imported/7C0F216A29125CA213705918760B1AAA.png-dc61b6af222e8d9ef347821cadcb5266.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/characters/kernel/7C0F216A29125CA213705918760B1AAA.png"
dest_files=["res://.godot/imported/7C0F216A29125CA213705918760B1AAA.png-dc61b6af222e8d9ef347821cadcb5266.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+14 -1
View File
@@ -1,2 +1,15 @@
extends EntityBase extends EntityBase
class_name KukeMC class_name KukeMC
func ai():
for bullet in get_tree().get_nodes_in_group("bullet"):
if (
bullet is LGBTBullet and
bullet.position.distance_to(self.position) < 100
):
bullet.tryDestroy()
for entity in get_tree().get_nodes_in_group("bosses"):
if (
entity.name == "FurryR" and
entity.position.distance_to(self.position) < 100
):
entity.takeDamage(114514)
+18
View File
@@ -0,0 +1,18 @@
shader_type canvas_item;
uniform float width:hint_range(0.0,30.0);
uniform vec4 outline_color:source_color;
void fragment(){
float size = width * 1.0 / float(textureSize(TEXTURE,0).x);
vec4 sprite_color = texture(TEXTURE,UV);
float alpha = -8.0 * sprite_color.a;
alpha += texture(TEXTURE,UV + vec2(0.0,-size)).a;
alpha += texture(TEXTURE,UV + vec2(size,-size)).a;
alpha += texture(TEXTURE,UV + vec2(size,0)).a;
alpha += texture(TEXTURE,UV + vec2(size,size)).a;
alpha += texture(TEXTURE,UV + vec2(0.0,size)).a;
alpha += texture(TEXTURE,UV + vec2(-size,size)).a;
alpha += texture(TEXTURE,UV + vec2(-size,0.0)).a;
alpha += texture(TEXTURE,UV + vec2(-size,-size)).a;
vec4 final_color = mix(sprite_color,outline_color,clamp(alpha,0.0,1.0));
COLOR = vec4(final_color.rgb,clamp(abs(alpha) + sprite_color.a,0.0,1.0));
}