Compare commits
5 Commits
ff7712db8f
...
c805f60898
Author | SHA1 | Date | |
---|---|---|---|
c805f60898 | |||
a66803ba2b | |||
5a338271d8 | |||
8cd0f5bd45 | |||
1f8c75c6ba |
|
@ -9,7 +9,6 @@
|
|||
[ext_resource type="Animation" uid="uid://cmje7jsgrhgmx" path="res://resource/animation/enemy/Enemy_query.res" id="7_h4cls"]
|
||||
[ext_resource type="Animation" uid="uid://16rxpnsgj5tl" path="res://resource/animation/enemy/Enemy_notify.res" id="8_0688j"]
|
||||
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_y5nia"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("2_yunbp")
|
||||
|
|
|
@ -30,8 +30,12 @@
|
|||
],
|
||||
"InletList": [
|
||||
{
|
||||
"ErrorType": 0,
|
||||
"ErrorType": 2,
|
||||
"Path": "resource/map/tileMaps/Test1/inlet/Start"
|
||||
},
|
||||
{
|
||||
"ErrorType": 0,
|
||||
"Path": "resource/map/tileMaps/Test1/inlet/Start2"
|
||||
}
|
||||
],
|
||||
"OutletList": [
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 2.6 KiB |
|
@ -1 +1 @@
|
|||
{"Position":{"X":-9,"Y":-11},"Size":{"X":20,"Y":21},"DoorAreaInfos":[{"Direction":2,"Start":48,"End":176},{"Direction":3,"Start":0,"End":256},{"Direction":0,"Start":0,"End":208},{"Direction":1,"Start":0,"End":224}],"GroupName":"Test1","RoomType":2,"RoomName":"Start","Weight":100,"Remark":""}
|
||||
{"Position":{"X":-10,"Y":-12},"Size":{"X":22,"Y":23},"DoorAreaInfos":[{"Direction":2,"Start":48,"End":176},{"Direction":3,"Start":0,"End":256},{"Direction":0,"Start":0,"End":208},{"Direction":1,"Start":0,"End":224}],"GroupName":"Test1","RoomType":2,"RoomName":"Start","Weight":100,"Remark":""}
|
|
@ -1 +1 @@
|
|||
{"NavigationVertices":[{"X":134,"Y":38},{"X":138,"Y":-122},{"X":138,"Y":138},{"X":134,"Y":90},{"X":134,"Y":-6},{"X":90,"Y":-6},{"X":86,"Y":-58},{"X":86,"Y":-102},{"X":-106,"Y":-122},{"X":-38,"Y":-102},{"X":74,"Y":10},{"X":74,"Y":54},{"X":58,"Y":90},{"X":-26,"Y":38},{"X":-26,"Y":-6},{"X":90,"Y":10},{"X":-38,"Y":-58},{"X":118,"Y":54},{"X":118,"Y":38},{"X":134,"Y":138},{"X":58,"Y":138},{"X":-58,"Y":138},{"X":-58,"Y":106},{"X":-86,"Y":38},{"X":-106,"Y":106},{"X":-86,"Y":-6}],"NavigationPolygon":[[0,1,2,3],[1,0,4],[1,4,5,6,7],[8,1,7,9],[10,11,12,13,14],[6,5,15,10,14,16],[17,18,0,3],[2,19,3],[17,3,12,11],[13,12,20,21,22],[23,13,22,24],[23,24,8,25],[25,8,9,16],[14,25,16]],"Floor":[-3,-4,0,3,-2,-4,0,3,-2,-3,0,3,-3,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-5,-3,0,3,-5,-2,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-4,-3,0,3,-4,-2,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-3,-2,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-2,6,0,3,-2,7,0,3,-1,3,0,3,-1,4,0,3,-1,7,0,3,0,3,0,3,0,4,0,3,0,7,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,5,-4,0,3,5,-3,0,3,5,-1,0,3,3,1,0,3,3,2,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,3,0,3,5,4,0,3,6,3,0,3,6,4,0,3,6,-3,0,3,7,-3,0,3,7,-2,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,-1,2,0,3,0,2,0,3,1,2,0,3,2,2,0,3,2,1,0,3,1,1,0,3,0,1,0,3,-1,1,0,3,-1,5,0,3,0,5,0,3,0,6,0,3,-1,6,0,3,-7,-3,0,3,6,-2,0,3,5,-2,0,3,8,5,0,3,8,6,0,3,8,7,0,3,-3,-5,0,3,-3,-6,0,3,5,-6,0,3,5,-5,0,3,5,-7,0,3,-3,-7,0,3,5,-8,0,3,4,-8,0,3,3,-8,0,3,2,-8,0,3,1,-8,0,3,0,-8,0,3,-1,-8,0,3,-2,-8,0,3,-3,-8,0,3,3,7,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3],"CustomFloor1":[-4,2,1,7,14,-3,3,1,8,15,-4,3,1,7,15,-5,3,1,6,15,6,4,1,8,15,5,4,1,7,15,-5,2,1,6,14,4,3,1,6,14,4,4,1,6,15,6,3,1,8,14,5,3,1,7,14,-3,2,1,8,14],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[-3,4,1,10,5,-3,5,1,10,6,2,4,1,10,5,2,5,1,10,6],"CustomMiddle2":[5,-4,1,6,0,5,-3,1,6,1,-2,-1,1,5,0,-2,0,1,5,1],"CustomTop":[]}
|
||||
{"NavigationVertices":[{"X":134,"Y":38},{"X":138,"Y":-122},{"X":138,"Y":138},{"X":134,"Y":90},{"X":134,"Y":-6},{"X":90,"Y":-6},{"X":86,"Y":-58},{"X":86,"Y":-102},{"X":-106,"Y":-122},{"X":-38,"Y":-102},{"X":74,"Y":10},{"X":74,"Y":54},{"X":58,"Y":90},{"X":-26,"Y":38},{"X":-26,"Y":-6},{"X":90,"Y":10},{"X":-38,"Y":-58},{"X":118,"Y":54},{"X":118,"Y":38},{"X":134,"Y":138},{"X":58,"Y":138},{"X":-58,"Y":138},{"X":-58,"Y":106},{"X":-86,"Y":38},{"X":-106,"Y":106},{"X":-86,"Y":-6}],"NavigationPolygon":[[0,1,2,3],[1,0,4],[1,4,5,6,7],[8,1,7,9],[10,11,12,13,14],[6,5,15,10,14,16],[17,18,0,3],[2,19,3],[17,3,12,11],[13,12,20,21,22],[23,13,22,24],[23,24,8,25],[25,8,9,16],[14,25,16]],"Floor":[-3,-4,0,3,-2,-4,0,3,-2,-3,0,3,-3,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-5,-3,0,3,-5,-2,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-4,-3,0,3,-4,-2,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-3,-2,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-2,6,0,3,-2,7,0,3,-1,3,0,3,-1,4,0,3,-1,7,0,3,0,3,0,3,0,4,0,3,0,7,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,5,-4,0,3,5,-3,0,3,5,-1,0,3,3,1,0,3,3,2,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,3,0,3,5,4,0,3,6,3,0,3,6,4,0,3,6,-3,0,3,7,-3,0,3,7,-2,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,-1,2,0,3,0,2,0,3,1,2,0,3,2,2,0,3,2,1,0,3,1,1,0,3,0,1,0,3,-1,1,0,3,-1,5,0,3,0,5,0,3,0,6,0,3,-1,6,0,3,-7,-3,0,3,6,-2,0,3,5,-2,0,3,8,5,0,3,8,6,0,3,8,7,0,3,-3,-5,0,3,-3,-6,0,3,5,-6,0,3,5,-5,0,3,5,-7,0,3,-3,-7,0,3,5,-8,0,3,4,-8,0,3,3,-8,0,3,2,-8,0,3,1,-8,0,3,0,-8,0,3,-1,-8,0,3,-2,-8,0,3,-3,-8,0,3,3,7,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,-2,-6,0,3],"CustomFloor1":[-4,2,1,7,14,-3,3,1,8,15,-4,3,1,7,15,-5,3,1,6,15,6,4,1,8,15,5,4,1,7,15,-5,2,1,6,14,4,3,1,6,14,4,4,1,6,15,6,3,1,8,14,5,3,1,7,14,-3,2,1,8,14],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[-3,4,1,10,5,-3,5,1,10,6,2,4,1,10,5,2,5,1,10,6],"CustomMiddle2":[5,-4,1,6,0,5,-3,1,6,1,-2,-1,1,5,0,-2,0,1,5,1],"CustomTop":[]}
|
|
@ -0,0 +1 @@
|
|||
[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[{"Position":{"X":0,"Y":0},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":53,"Y":31},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0003","CurrAmmon":"12","ResidueAmmo":"12"},"Altitude":0,"VerticalSpeed":5.551115E-14}]}]]}]
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cpx43bg5na8f4"
|
||||
path="res://.godot/imported/Preview.png-a179680c55da0fe1cc56e9132032b6e3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://resource/map/tileMaps/Test1/inlet/Start2/Preview.png"
|
||||
dest_files=["res://.godot/imported/Preview.png-a179680c55da0fe1cc56e9132032b6e3.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
|
|
@ -0,0 +1 @@
|
|||
{"Position":{"X":-5,"Y":-7},"Size":{"X":15,"Y":16},"DoorAreaInfos":[],"GroupName":"Test1","RoomType":2,"RoomName":"Start2","Weight":100,"Remark":""}
|
|
@ -0,0 +1 @@
|
|||
{"NavigationVertices":[{"X":122,"Y":122},{"X":-42,"Y":122},{"X":-42,"Y":-58},{"X":122,"Y":-58}],"NavigationPolygon":[[0,1,2,3]],"Floor":[-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-3,6,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-2,6,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,-1,5,0,3,-1,6,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,0,5,0,3,0,6,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,4,6,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,5,5,0,3,5,6,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,5,0,3,6,6,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,7,5,0,3,7,6,0,3],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
|
|
@ -2,6 +2,5 @@
|
|||
|
||||
[ext_resource type="Shader" path="res://resource/shader/Sawtooth.gdshader" id="1_nrhtr"]
|
||||
|
||||
|
||||
[resource]
|
||||
shader = ExtResource("1_nrhtr")
|
||||
|
|
|
@ -1,18 +1,178 @@
|
|||
shader_type canvas_item;
|
||||
|
||||
bool checkLB(float len, sampler2D tex, vec2 uv) {
|
||||
int c = 0;
|
||||
int c2 = 0;
|
||||
if (texture(tex, uv + vec2(-len, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(-len * 2.0, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
if (c > 0) {
|
||||
if (texture(tex, uv + vec2(0.0, -len)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(0.0, -len * 2.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
}
|
||||
return c >= 2 && c2 <= 3;
|
||||
}
|
||||
|
||||
bool checkLT(float len, sampler2D tex, vec2 uv) {
|
||||
int c = 0;
|
||||
int c2 = 0;
|
||||
if (texture(tex, uv + vec2(-len, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(-len * 2.0, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
if (c > 0) {
|
||||
if (texture(tex, uv + vec2(0.0, len)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(0.0, len * 2.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
}
|
||||
return c >= 2 && c2 <= 3;
|
||||
}
|
||||
|
||||
bool checkRB(float len, sampler2D tex, vec2 uv) {
|
||||
int c = 0;
|
||||
int c2 = 0;
|
||||
if (texture(tex, uv + vec2(len, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(len * 2.0, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
if (c > 0) {
|
||||
if (texture(tex, uv + vec2(0.0, -len)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(0.0, -len * 2.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
}
|
||||
return c >= 2 && c2 <= 3;
|
||||
}
|
||||
|
||||
bool checkRT(float len, sampler2D tex, vec2 uv) {
|
||||
int c = 0;
|
||||
int c2 = 0;
|
||||
if (texture(tex, uv + vec2(len, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(len * 2.0, 0.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
if (c > 0) {
|
||||
if (texture(tex, uv + vec2(0.0, len)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 1;
|
||||
} else if (texture(tex, uv + vec2(0.0, len * 2.0)).a > 0.0) {
|
||||
c++;
|
||||
c2 += 2;
|
||||
}
|
||||
}
|
||||
return c >= 2 && c2 <= 3;
|
||||
}
|
||||
|
||||
|
||||
void vertex() {
|
||||
VERTEX = VERTEX * vec2(4.0);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec2 pixel_size = 1.0 / vec2(textureSize(TEXTURE, 0));
|
||||
vec4 color = vec4(0.0);
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
for (int y = -1; y <= 1; y++) {
|
||||
color += texture(TEXTURE, UV + vec2(float(x), float(y)) * pixel_size / 2.0);
|
||||
}
|
||||
}
|
||||
color /= 9.0;
|
||||
COLOR = color;
|
||||
}
|
||||
if (COLOR.a <= 0.0) {
|
||||
int c = 0;
|
||||
vec4 cf = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 cL = texture(TEXTURE, UV + vec2(-TEXTURE_PIXEL_SIZE.x, 0.0));
|
||||
vec4 cr = texture(TEXTURE, UV + vec2(TEXTURE_PIXEL_SIZE.x, 0.0));
|
||||
vec4 ct = texture(TEXTURE, UV + vec2(0.0, TEXTURE_PIXEL_SIZE.y));
|
||||
vec4 cb = texture(TEXTURE, UV + vec2(0.0, -TEXTURE_PIXEL_SIZE.y));
|
||||
if (cL.a > 0.0) {
|
||||
c++;
|
||||
cf += cL;
|
||||
}
|
||||
if (cr.a > 0.0) {
|
||||
c++;
|
||||
cf += cr;
|
||||
}
|
||||
if (ct.a > 0.0) {
|
||||
c++;
|
||||
cf += ct;
|
||||
}
|
||||
if (cb.a > 0.0) {
|
||||
c++;
|
||||
cf += cb;
|
||||
}
|
||||
if (c >= 2) {
|
||||
if (cb.a > 0.0 && cL.a > 0.0) {
|
||||
if (checkLB(TEXTURE_PIXEL_SIZE.y / 4.0, TEXTURE, UV)) {
|
||||
cf /= float(c);
|
||||
COLOR = cf;
|
||||
}
|
||||
}
|
||||
if (ct.a > 0.0 && cL.a > 0.0) {
|
||||
if (checkLT(TEXTURE_PIXEL_SIZE.y / 4.0, TEXTURE, UV)) {
|
||||
cf /= float(c);
|
||||
COLOR = cf;
|
||||
}
|
||||
}
|
||||
|
||||
if (cb.a > 0.0 && cr.a > 0.0) {
|
||||
if (checkRB(TEXTURE_PIXEL_SIZE.y / 4.0, TEXTURE, UV)) {
|
||||
cf /= float(c);
|
||||
COLOR = cf;
|
||||
}
|
||||
}
|
||||
if (ct.a > 0.0 && cr.a > 0.0) {
|
||||
if (checkRT(TEXTURE_PIXEL_SIZE.y / 4.0, TEXTURE, UV)) {
|
||||
cf /= float(c);
|
||||
COLOR = cf;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int c = 0;
|
||||
float tempV = TEXTURE_PIXEL_SIZE.x / 4.0;
|
||||
vec4 cf = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 clt = texture(TEXTURE, UV + vec2(-tempV, tempV));
|
||||
vec4 crt = texture(TEXTURE, UV + vec2(tempV, tempV));
|
||||
vec4 clb = texture(TEXTURE, UV + vec2(-tempV, -tempV));
|
||||
vec4 crb = texture(TEXTURE, UV + vec2(tempV, -tempV));
|
||||
|
||||
if (clt.a > 0.0) {
|
||||
c++;
|
||||
cf += clt;
|
||||
}
|
||||
if (crt.a > 0.0) {
|
||||
c++;
|
||||
cf += crt;
|
||||
}
|
||||
if (clb.a > 0.0) {
|
||||
c++;
|
||||
cf += clb;
|
||||
}
|
||||
if (crb.a > 0.0) {
|
||||
c++;
|
||||
cf += crb;
|
||||
}
|
||||
if (c > 0 && c < 2) {
|
||||
COLOR = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
} else {
|
||||
COLOR = cf / float(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
BIN
DungeonShooting_Godot/resource/sprite/brush/Temp.png
Normal file
BIN
DungeonShooting_Godot/resource/sprite/brush/Temp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 137 B |
34
DungeonShooting_Godot/resource/sprite/brush/Temp.png.import
Normal file
34
DungeonShooting_Godot/resource/sprite/brush/Temp.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b6iklkty6p8sx"
|
||||
path="res://.godot/imported/Temp.png-eb88d17e172de4ef1d192f84370ff0de.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://resource/sprite/brush/Temp.png"
|
||||
dest_files=["res://.godot/imported/Temp.png-eb88d17e172de4ef1d192f84370ff0de.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
|
|
@ -1,13 +1,91 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://d4axmwaqk1f55"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://d4axmwaqk1f55"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/test/TestCreateSector.cs" id="1_ieqp4"]
|
||||
[ext_resource type="Texture2D" uid="uid://uhhfgdhpk7i4" path="res://icon.png" id="2_73jok"]
|
||||
[ext_resource type="Texture2D" uid="uid://b6iklkty6p8sx" path="res://resource/sprite/brush/Temp.png" id="3_mchtg"]
|
||||
[ext_resource type="Material" uid="uid://cca0ka64xmrrd" path="res://resource/material/Sawtooth.tres" id="3_p1gue"]
|
||||
[ext_resource type="Texture2D" uid="uid://jnx4wfn5hu3u" path="res://resource/sprite/brush/Brush3.png" id="5_1h5h3"]
|
||||
[ext_resource type="Texture2D" uid="uid://betgai078na4v" path="res://resource/map/tileSet/TileSet1/Main.png" id="6_22ncj"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_on1ir"]
|
||||
texture = ExtResource("6_22ncj")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
2:0/0 = 0
|
||||
3:0/0 = 0
|
||||
4:0/0 = 0
|
||||
5:0/0 = 0
|
||||
6:0/0 = 0
|
||||
7:0/0 = 0
|
||||
8:0/0 = 0
|
||||
9:0/0 = 0
|
||||
10:0/0 = 0
|
||||
11:0/0 = 0
|
||||
0:1/0 = 0
|
||||
1:1/0 = 0
|
||||
2:1/0 = 0
|
||||
3:1/0 = 0
|
||||
4:1/0 = 0
|
||||
5:1/0 = 0
|
||||
6:1/0 = 0
|
||||
7:1/0 = 0
|
||||
8:1/0 = 0
|
||||
9:1/0 = 0
|
||||
11:1/0 = 0
|
||||
0:2/0 = 0
|
||||
1:2/0 = 0
|
||||
2:2/0 = 0
|
||||
3:2/0 = 0
|
||||
4:2/0 = 0
|
||||
5:2/0 = 0
|
||||
6:2/0 = 0
|
||||
7:2/0 = 0
|
||||
8:2/0 = 0
|
||||
9:2/0 = 0
|
||||
10:2/0 = 0
|
||||
11:2/0 = 0
|
||||
0:3/0 = 0
|
||||
1:3/0 = 0
|
||||
2:3/0 = 0
|
||||
3:3/0 = 0
|
||||
4:3/0 = 0
|
||||
5:3/0 = 0
|
||||
6:3/0 = 0
|
||||
7:3/0 = 0
|
||||
8:3/0 = 0
|
||||
9:3/0 = 0
|
||||
10:3/0 = 0
|
||||
11:3/0 = 0
|
||||
0:4/0 = 0
|
||||
1:4/0 = 0
|
||||
2:4/0 = 0
|
||||
3:4/0 = 0
|
||||
4:4/0 = 0
|
||||
5:4/0 = 0
|
||||
6:4/0 = 0
|
||||
7:4/0 = 0
|
||||
8:4/0 = 0
|
||||
9:4/0 = 0
|
||||
10:4/0 = 0
|
||||
0:5/0 = 0
|
||||
1:5/0 = 0
|
||||
2:5/0 = 0
|
||||
3:5/0 = 0
|
||||
4:5/0 = 0
|
||||
|
||||
[sub_resource type="TileSet" id="TileSet_5gh5n"]
|
||||
sources/0 = SubResource("TileSetAtlasSource_on1ir")
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_42m3w"]
|
||||
|
||||
[node name="TestCreateSector" type="Node2D"]
|
||||
script = ExtResource("1_ieqp4")
|
||||
|
||||
[node name="TileMap" type="TileMap" parent="."]
|
||||
tile_set = SubResource("TileSet_5gh5n")
|
||||
format = 2
|
||||
layer_0/tile_data = PackedInt32Array(-65535, 0, 4, 0, 0, 4, 65536, 0, 4, 131072, 0, 4, 131073, 0, 4, 131074, 0, 4, 65538, 0, 4, 2, 0, 4, 1, 0, 4, 65537, 0, 4, 196609, 0, 4, 196610, 0, 4, 65539, 0, 4, 3, 0, 4, 131075, 0, 4, 196611, 0, 4, 262147, 0, 4, 65540, 0, 4, 4, 0, 4, 131076, 0, 4, 196612, 0, 4, 262148, 0, 4, 262146, 0, 4, 262145, 0, 4, 196608, 0, 4, 262144, 0, 4)
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
position = Vector2(959, 505)
|
||||
|
||||
|
@ -20,3 +98,14 @@ texture = ExtResource("2_73jok")
|
|||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D2"]
|
||||
shape = SubResource("CircleShape2D_42m3w")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
material = ExtResource("3_p1gue")
|
||||
position = Vector2(5, -19)
|
||||
texture = ExtResource("3_mchtg")
|
||||
centered = false
|
||||
|
||||
[node name="Sprite2D2" type="Sprite2D" parent="."]
|
||||
position = Vector2(32, 43)
|
||||
texture = ExtResource("5_1h5h3")
|
||||
centered = false
|
||||
|
|
|
@ -68,6 +68,17 @@ public static class Utils
|
|||
return angle;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断a和b是否在同一梯度下
|
||||
/// </summary>
|
||||
/// <param name="a"></param>
|
||||
/// <param name="b"></param>
|
||||
/// <param name="gradient">梯度间距</param>
|
||||
public static bool IsSameGradient(float a, float b, float gradient)
|
||||
{
|
||||
return (int)(a / gradient) == (int)(b / gradient);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据步长吸附值
|
||||
/// </summary>
|
||||
|
|
|
@ -318,6 +318,7 @@ public partial class LiquidCanvas : Sprite2D, IDestroy
|
|||
}
|
||||
else
|
||||
{
|
||||
var oldA = imagePixel.Color.A;
|
||||
imagePixel.Color.A -= imagePixel.Material.WriteOffSpeed * (_runTime - imagePixel.TempTime);
|
||||
|
||||
if (imagePixel.Color.A <= 0) //完全透明了
|
||||
|
@ -328,7 +329,7 @@ public partial class LiquidCanvas : Sprite2D, IDestroy
|
|||
imagePixel.IsUpdate = false;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else if (!Utils.IsSameGradient(oldA, imagePixel.Color.A, GameConfig.LiquidGradient)) //同一渐变梯度下才会有颜色变化
|
||||
{
|
||||
_changeFlag = true;
|
||||
_image.SetPixel(imagePixel.X, imagePixel.Y, imagePixel.Color);
|
||||
|
|
|
@ -17,6 +17,11 @@ public static class GameConfig
|
|||
|
||||
// ----------------------- 常量 -----------------------
|
||||
|
||||
/// <summary>
|
||||
/// 液体画布渐变梯度
|
||||
/// </summary>
|
||||
public const float LiquidGradient = 0.1f;
|
||||
|
||||
/// <summary>
|
||||
/// 连接房间的过道宽度
|
||||
/// </summary>
|
||||
|
|
|
@ -21,9 +21,12 @@ public partial class BoomBullet : Bullet
|
|||
|
||||
public override void OnCollisionTarget(IHurt o)
|
||||
{
|
||||
State = BulletStateEnum.CollisionTarget;
|
||||
PlayBoom();
|
||||
LogicalFinish();
|
||||
if (o.CanHurt(Camp))
|
||||
{
|
||||
State = BulletStateEnum.CollisionTarget;
|
||||
PlayBoom();
|
||||
LogicalFinish();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnMoveCollision(KinematicCollision2D lastSlideCollision)
|
||||
|
|
|
@ -451,6 +451,20 @@ public abstract partial class Role : ActivityObject
|
|||
{
|
||||
}
|
||||
|
||||
public override void EnterTree()
|
||||
{
|
||||
if (!World.Role_InstanceList.Contains(this))
|
||||
{
|
||||
World.Role_InstanceList.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public override void ExitTree()
|
||||
{
|
||||
World.Role_InstanceList.Remove(this);
|
||||
}
|
||||
|
||||
|
||||
public override void OnInit()
|
||||
{
|
||||
RoleState = OnCreateRoleState();
|
||||
|
|
|
@ -86,6 +86,11 @@ public abstract partial class AiRole : Role
|
|||
/// </summary>
|
||||
public bool HasMoveDesire { get; private set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 临时存储攻击目标, 获取该值请调用 GetAttackTarget() 函数
|
||||
/// </summary>
|
||||
protected Role AttackTarget { get; set; } = null;
|
||||
|
||||
public override void OnInit()
|
||||
{
|
||||
base.OnInit();
|
||||
|
@ -115,7 +120,18 @@ public abstract partial class AiRole : Role
|
|||
/// </summary>
|
||||
public virtual Role GetAttackTarget()
|
||||
{
|
||||
return World.Player;
|
||||
if (AttackTarget == null || AttackTarget.IsDestroyed || !IsEnemy(AttackTarget))
|
||||
{
|
||||
foreach (var role in World.Role_InstanceList)
|
||||
{
|
||||
if (role.AffiliationArea == AffiliationArea && IsEnemy(role))
|
||||
{
|
||||
AttackTarget = role;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return AttackTarget;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -123,7 +139,7 @@ public abstract partial class AiRole : Role
|
|||
/// </summary>
|
||||
public bool CheckUsableWeaponInUnclaimed()
|
||||
{
|
||||
foreach (var unclaimedWeapon in World.Weapon_UnclaimedWeapons)
|
||||
foreach (var unclaimedWeapon in World.Weapon_UnclaimedList)
|
||||
{
|
||||
//判断是否能拾起武器, 条件: 相同的房间
|
||||
if (unclaimedWeapon.AffiliationArea == AffiliationArea)
|
||||
|
@ -163,7 +179,7 @@ public abstract partial class AiRole : Role
|
|||
{
|
||||
Weapon target = null;
|
||||
var position = Position;
|
||||
foreach (var weapon in World.Weapon_UnclaimedWeapons)
|
||||
foreach (var weapon in World.Weapon_UnclaimedList)
|
||||
{
|
||||
//判断是否能拾起武器, 条件: 相同的房间, 或者当前房间目前没有战斗, 或者不在战斗房间
|
||||
if (weapon.AffiliationArea == AffiliationArea)
|
||||
|
|
|
@ -62,7 +62,8 @@ public class AiNormalState : StateBase<AiRole, AIStateEnum>
|
|||
//发现玩家
|
||||
Master.LookTarget = attackTarget;
|
||||
//判断是否进入通知状态
|
||||
if (Master.World.Enemy_InstanceList.FindIndex(enemy =>
|
||||
if (Master.World.Role_InstanceList.FindIndex(role =>
|
||||
role is AiRole enemy &&
|
||||
enemy != Master && !enemy.IsDie && enemy.AffiliationArea == Master.AffiliationArea &&
|
||||
enemy.StateController.CurrState == AIStateEnum.AiNormal) != -1)
|
||||
{
|
||||
|
|
|
@ -92,19 +92,6 @@ public partial class Enemy : AiRole
|
|||
return roleState;
|
||||
}
|
||||
|
||||
public override void EnterTree()
|
||||
{
|
||||
if (!World.Enemy_InstanceList.Contains(this))
|
||||
{
|
||||
World.Enemy_InstanceList.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public override void ExitTree()
|
||||
{
|
||||
World.Enemy_InstanceList.Remove(this);
|
||||
}
|
||||
|
||||
protected override void OnDie()
|
||||
{
|
||||
var effPos = Position + new Vector2(0, -Altitude);
|
||||
|
@ -181,7 +168,8 @@ public partial class Enemy : AiRole
|
|||
{
|
||||
LookTarget = target;
|
||||
//判断是否进入通知状态
|
||||
if (World.Enemy_InstanceList.FindIndex(enemy =>
|
||||
if (World.Role_InstanceList.FindIndex(role =>
|
||||
role is AiRole enemy &&
|
||||
enemy != this && !enemy.IsDie && enemy.AffiliationArea == AffiliationArea &&
|
||||
enemy.StateController.CurrState == AIStateEnum.AiNormal) != -1)
|
||||
{
|
||||
|
|
|
@ -255,7 +255,7 @@ public partial class Player : Role
|
|||
}
|
||||
|
||||
//测试刷地
|
||||
//DrawLiquid(_brushData2);
|
||||
DrawLiquid(_brushData2);
|
||||
}
|
||||
|
||||
protected override void OnAffiliationChange(AffiliationArea prevArea)
|
||||
|
|
|
@ -484,13 +484,13 @@ public abstract partial class Weapon : ActivityObject, IPackageItem<Role>
|
|||
//收集落在地上的武器
|
||||
if (IsInGround())
|
||||
{
|
||||
World.Weapon_UnclaimedWeapons.Add(this);
|
||||
World.Weapon_UnclaimedList.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public override void ExitTree()
|
||||
{
|
||||
World.Weapon_UnclaimedWeapons.Remove(this);
|
||||
World.Weapon_UnclaimedList.Remove(this);
|
||||
}
|
||||
|
||||
protected override void Process(float delta)
|
||||
|
|
|
@ -14,13 +14,12 @@ public class Eff_SwapWeapon : EffectFragment
|
|||
|
||||
public override void OnUse()
|
||||
{
|
||||
var list = new List<Enemy>();
|
||||
foreach (var enemy in Master.World.Enemy_InstanceList)
|
||||
var list = new List<AiRole>();
|
||||
foreach (var role in Master.World.Role_InstanceList)
|
||||
{
|
||||
if (enemy.WeaponPack.ActiveItem != null)
|
||||
if (role is AiRole enemy && enemy.IsEnemy(Role) && enemy.WeaponPack.ActiveItem != null)
|
||||
{
|
||||
list.Add(enemy);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,9 +44,9 @@ public class Eff_SwapWeapon : EffectFragment
|
|||
return false;
|
||||
}
|
||||
|
||||
foreach (var enemy in Master.World.Enemy_InstanceList)
|
||||
foreach (var role in Master.World.Role_InstanceList)
|
||||
{
|
||||
if (enemy.WeaponPack.ActiveItem != null)
|
||||
if (role is AiRole enemy && enemy.IsEnemy(Role) && enemy.WeaponPack.ActiveItem != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -858,10 +858,10 @@ public partial class DungeonManager : Node2D
|
|||
if (room.IsSeclusion)
|
||||
{
|
||||
var playerAffiliationArea = CurrWorld.Player.AffiliationArea;
|
||||
foreach (var enemy in CurrWorld.Enemy_InstanceList)
|
||||
foreach (var role in CurrWorld.Role_InstanceList)
|
||||
{
|
||||
//不与玩家处于同一个房间
|
||||
if (!enemy.IsDestroyed && enemy.AffiliationArea != playerAffiliationArea)
|
||||
if (role is AiRole enemy && !enemy.IsDestroyed && enemy.AffiliationArea != playerAffiliationArea)
|
||||
{
|
||||
if (enemy.StateController.CurrState != AIStateEnum.AiNormal)
|
||||
{
|
||||
|
|
|
@ -75,7 +75,7 @@ public partial class RoomMapPanel : RoomMap
|
|||
|
||||
//更新敌人位置
|
||||
{
|
||||
var enemyList = World.Current.Enemy_InstanceList;
|
||||
var enemyList = World.Current.Role_InstanceList;
|
||||
if (enemyList.Count == 0) //没有敌人
|
||||
{
|
||||
foreach (var sprite in _enemySpriteList)
|
||||
|
@ -90,8 +90,8 @@ public partial class RoomMapPanel : RoomMap
|
|||
var count = 0; //绘制数量
|
||||
for (var i = 0; i < enemyList.Count; i++)
|
||||
{
|
||||
var enemy = enemyList[i];
|
||||
if (!enemy.IsDestroyed && !enemy.IsDie && enemy.AffiliationArea != null && enemy.AffiliationArea.RoomInfo.RoomFogMask.IsExplored)
|
||||
var role = enemyList[i];
|
||||
if (role is AiRole enemy && !enemy.IsDestroyed && !enemy.IsDie && enemy.AffiliationArea != null && enemy.AffiliationArea.RoomInfo.RoomFogMask.IsExplored)
|
||||
{
|
||||
count++;
|
||||
Sprite2D sprite;
|
||||
|
|
|
@ -65,12 +65,12 @@ public partial class World : CanvasModulate, ICoroutine
|
|||
/// <summary>
|
||||
/// 所有被扔在地上的武器
|
||||
/// </summary>
|
||||
public HashSet<Weapon> Weapon_UnclaimedWeapons { get; } = new HashSet<Weapon>();
|
||||
public HashSet<Weapon> Weapon_UnclaimedList { get; } = new HashSet<Weapon>();
|
||||
|
||||
/// <summary>
|
||||
/// 记录所有存活的敌人
|
||||
/// 记录所有存活的角色
|
||||
/// </summary>
|
||||
public List<Enemy> Enemy_InstanceList { get; } = new List<Enemy>();
|
||||
public List<Role> Role_InstanceList { get; } = new List<Role>();
|
||||
|
||||
/// <summary>
|
||||
/// 随机数对象
|
||||
|
@ -142,12 +142,12 @@ public partial class World : CanvasModulate, ICoroutine
|
|||
/// <param name="target">目标</param>
|
||||
public void NotifyEnemyTarget(Role self, ActivityObject target)
|
||||
{
|
||||
foreach (var role in Enemy_InstanceList)
|
||||
foreach (var role in Role_InstanceList)
|
||||
{
|
||||
if (role != self && !role.IsDestroyed && role.AffiliationArea == self.AffiliationArea)
|
||||
if (role != self && !role.IsDestroyed && role.AffiliationArea == self.AffiliationArea && role is AiRole enemy)
|
||||
{
|
||||
//将未发现目标的敌人状态置为惊讶状态
|
||||
var controller = role.StateController;
|
||||
var controller = enemy.StateController;
|
||||
//延时通知效果
|
||||
role.CallDelay(Utils.Random.RandomRangeFloat(0.2f, 1f), () =>
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user