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://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"]
|
[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"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_y5nia"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
shader = ExtResource("2_yunbp")
|
shader = ExtResource("2_yunbp")
|
||||||
|
|
|
@ -30,8 +30,12 @@
|
||||||
],
|
],
|
||||||
"InletList": [
|
"InletList": [
|
||||||
{
|
{
|
||||||
"ErrorType": 0,
|
"ErrorType": 2,
|
||||||
"Path": "resource/map/tileMaps/Test1/inlet/Start"
|
"Path": "resource/map/tileMaps/Test1/inlet/Start"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ErrorType": 0,
|
||||||
|
"Path": "resource/map/tileMaps/Test1/inlet/Start2"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"OutletList": [
|
"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"]
|
[ext_resource type="Shader" path="res://resource/shader/Sawtooth.gdshader" id="1_nrhtr"]
|
||||||
|
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
shader = ExtResource("1_nrhtr")
|
shader = ExtResource("1_nrhtr")
|
||||||
|
|
|
@ -1,18 +1,178 @@
|
||||||
shader_type canvas_item;
|
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() {
|
void vertex() {
|
||||||
VERTEX = VERTEX * vec2(4.0);
|
VERTEX = VERTEX * vec2(4.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
vec2 pixel_size = 1.0 / vec2(textureSize(TEXTURE, 0));
|
if (COLOR.a <= 0.0) {
|
||||||
vec4 color = vec4(0.0);
|
int c = 0;
|
||||||
for (int x = -1; x <= 1; x++) {
|
vec4 cf = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
for (int y = -1; y <= 1; y++) {
|
vec4 cL = texture(TEXTURE, UV + vec2(-TEXTURE_PIXEL_SIZE.x, 0.0));
|
||||||
color += texture(TEXTURE, UV + vec2(float(x), float(y)) * pixel_size / 2.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));
|
||||||
color /= 9.0;
|
if (cL.a > 0.0) {
|
||||||
COLOR = color;
|
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="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://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"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_42m3w"]
|
||||||
|
|
||||||
[node name="TestCreateSector" type="Node2D"]
|
[node name="TestCreateSector" type="Node2D"]
|
||||||
script = ExtResource("1_ieqp4")
|
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="."]
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
position = Vector2(959, 505)
|
position = Vector2(959, 505)
|
||||||
|
|
||||||
|
@ -20,3 +98,14 @@ texture = ExtResource("2_73jok")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D2"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D2"]
|
||||||
shape = SubResource("CircleShape2D_42m3w")
|
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
|
||||||
|
|
|
@ -67,6 +67,17 @@ public static class Utils
|
||||||
|
|
||||||
return angle;
|
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
|
else
|
||||||
{
|
{
|
||||||
|
var oldA = imagePixel.Color.A;
|
||||||
imagePixel.Color.A -= imagePixel.Material.WriteOffSpeed * (_runTime - imagePixel.TempTime);
|
imagePixel.Color.A -= imagePixel.Material.WriteOffSpeed * (_runTime - imagePixel.TempTime);
|
||||||
|
|
||||||
if (imagePixel.Color.A <= 0) //完全透明了
|
if (imagePixel.Color.A <= 0) //完全透明了
|
||||||
|
@ -328,7 +329,7 @@ public partial class LiquidCanvas : Sprite2D, IDestroy
|
||||||
imagePixel.IsUpdate = false;
|
imagePixel.IsUpdate = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else if (!Utils.IsSameGradient(oldA, imagePixel.Color.A, GameConfig.LiquidGradient)) //同一渐变梯度下才会有颜色变化
|
||||||
{
|
{
|
||||||
_changeFlag = true;
|
_changeFlag = true;
|
||||||
_image.SetPixel(imagePixel.X, imagePixel.Y, imagePixel.Color);
|
_image.SetPixel(imagePixel.X, imagePixel.Y, imagePixel.Color);
|
||||||
|
|
|
@ -16,6 +16,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)
|
public override void OnCollisionTarget(IHurt o)
|
||||||
{
|
{
|
||||||
State = BulletStateEnum.CollisionTarget;
|
if (o.CanHurt(Camp))
|
||||||
PlayBoom();
|
{
|
||||||
LogicalFinish();
|
State = BulletStateEnum.CollisionTarget;
|
||||||
|
PlayBoom();
|
||||||
|
LogicalFinish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnMoveCollision(KinematicCollision2D lastSlideCollision)
|
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()
|
public override void OnInit()
|
||||||
{
|
{
|
||||||
RoleState = OnCreateRoleState();
|
RoleState = OnCreateRoleState();
|
||||||
|
|
|
@ -86,6 +86,11 @@ public abstract partial class AiRole : Role
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasMoveDesire { get; private set; } = true;
|
public bool HasMoveDesire { get; private set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 临时存储攻击目标, 获取该值请调用 GetAttackTarget() 函数
|
||||||
|
/// </summary>
|
||||||
|
protected Role AttackTarget { get; set; } = null;
|
||||||
|
|
||||||
public override void OnInit()
|
public override void OnInit()
|
||||||
{
|
{
|
||||||
base.OnInit();
|
base.OnInit();
|
||||||
|
@ -115,7 +120,18 @@ public abstract partial class AiRole : Role
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual Role GetAttackTarget()
|
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>
|
/// <summary>
|
||||||
|
@ -123,7 +139,7 @@ public abstract partial class AiRole : Role
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool CheckUsableWeaponInUnclaimed()
|
public bool CheckUsableWeaponInUnclaimed()
|
||||||
{
|
{
|
||||||
foreach (var unclaimedWeapon in World.Weapon_UnclaimedWeapons)
|
foreach (var unclaimedWeapon in World.Weapon_UnclaimedList)
|
||||||
{
|
{
|
||||||
//判断是否能拾起武器, 条件: 相同的房间
|
//判断是否能拾起武器, 条件: 相同的房间
|
||||||
if (unclaimedWeapon.AffiliationArea == AffiliationArea)
|
if (unclaimedWeapon.AffiliationArea == AffiliationArea)
|
||||||
|
@ -163,7 +179,7 @@ public abstract partial class AiRole : Role
|
||||||
{
|
{
|
||||||
Weapon target = null;
|
Weapon target = null;
|
||||||
var position = Position;
|
var position = Position;
|
||||||
foreach (var weapon in World.Weapon_UnclaimedWeapons)
|
foreach (var weapon in World.Weapon_UnclaimedList)
|
||||||
{
|
{
|
||||||
//判断是否能拾起武器, 条件: 相同的房间, 或者当前房间目前没有战斗, 或者不在战斗房间
|
//判断是否能拾起武器, 条件: 相同的房间, 或者当前房间目前没有战斗, 或者不在战斗房间
|
||||||
if (weapon.AffiliationArea == AffiliationArea)
|
if (weapon.AffiliationArea == AffiliationArea)
|
||||||
|
|
|
@ -62,7 +62,8 @@ public class AiNormalState : StateBase<AiRole, AIStateEnum>
|
||||||
//发现玩家
|
//发现玩家
|
||||||
Master.LookTarget = attackTarget;
|
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 != Master && !enemy.IsDie && enemy.AffiliationArea == Master.AffiliationArea &&
|
||||||
enemy.StateController.CurrState == AIStateEnum.AiNormal) != -1)
|
enemy.StateController.CurrState == AIStateEnum.AiNormal) != -1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -91,20 +91,7 @@ public partial class Enemy : AiRole
|
||||||
roleState.Gold = Mathf.Max(0, Utils.Random.RandomConfigRange(enemyBase.Gold));
|
roleState.Gold = Mathf.Max(0, Utils.Random.RandomConfigRange(enemyBase.Gold));
|
||||||
return roleState;
|
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()
|
protected override void OnDie()
|
||||||
{
|
{
|
||||||
var effPos = Position + new Vector2(0, -Altitude);
|
var effPos = Position + new Vector2(0, -Altitude);
|
||||||
|
@ -181,7 +168,8 @@ public partial class Enemy : AiRole
|
||||||
{
|
{
|
||||||
LookTarget = target;
|
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 != this && !enemy.IsDie && enemy.AffiliationArea == AffiliationArea &&
|
||||||
enemy.StateController.CurrState == AIStateEnum.AiNormal) != -1)
|
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)
|
protected override void OnAffiliationChange(AffiliationArea prevArea)
|
||||||
|
|
|
@ -484,13 +484,13 @@ public abstract partial class Weapon : ActivityObject, IPackageItem<Role>
|
||||||
//收集落在地上的武器
|
//收集落在地上的武器
|
||||||
if (IsInGround())
|
if (IsInGround())
|
||||||
{
|
{
|
||||||
World.Weapon_UnclaimedWeapons.Add(this);
|
World.Weapon_UnclaimedList.Add(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ExitTree()
|
public override void ExitTree()
|
||||||
{
|
{
|
||||||
World.Weapon_UnclaimedWeapons.Remove(this);
|
World.Weapon_UnclaimedList.Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Process(float delta)
|
protected override void Process(float delta)
|
||||||
|
|
|
@ -14,13 +14,12 @@ public class Eff_SwapWeapon : EffectFragment
|
||||||
|
|
||||||
public override void OnUse()
|
public override void OnUse()
|
||||||
{
|
{
|
||||||
var list = new List<Enemy>();
|
var list = new List<AiRole>();
|
||||||
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)
|
||||||
{
|
{
|
||||||
list.Add(enemy);
|
list.Add(enemy);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,9 +44,9 @@ public class Eff_SwapWeapon : EffectFragment
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -858,10 +858,10 @@ public partial class DungeonManager : Node2D
|
||||||
if (room.IsSeclusion)
|
if (room.IsSeclusion)
|
||||||
{
|
{
|
||||||
var playerAffiliationArea = CurrWorld.Player.AffiliationArea;
|
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)
|
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) //没有敌人
|
if (enemyList.Count == 0) //没有敌人
|
||||||
{
|
{
|
||||||
foreach (var sprite in _enemySpriteList)
|
foreach (var sprite in _enemySpriteList)
|
||||||
|
@ -90,8 +90,8 @@ public partial class RoomMapPanel : RoomMap
|
||||||
var count = 0; //绘制数量
|
var count = 0; //绘制数量
|
||||||
for (var i = 0; i < enemyList.Count; i++)
|
for (var i = 0; i < enemyList.Count; i++)
|
||||||
{
|
{
|
||||||
var enemy = enemyList[i];
|
var role = enemyList[i];
|
||||||
if (!enemy.IsDestroyed && !enemy.IsDie && enemy.AffiliationArea != null && enemy.AffiliationArea.RoomInfo.RoomFogMask.IsExplored)
|
if (role is AiRole enemy && !enemy.IsDestroyed && !enemy.IsDie && enemy.AffiliationArea != null && enemy.AffiliationArea.RoomInfo.RoomFogMask.IsExplored)
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
Sprite2D sprite;
|
Sprite2D sprite;
|
||||||
|
|
|
@ -65,12 +65,12 @@ public partial class World : CanvasModulate, ICoroutine
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有被扔在地上的武器
|
/// 所有被扔在地上的武器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public HashSet<Weapon> Weapon_UnclaimedWeapons { get; } = new HashSet<Weapon>();
|
public HashSet<Weapon> Weapon_UnclaimedList { get; } = new HashSet<Weapon>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 记录所有存活的敌人
|
/// 记录所有存活的角色
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<Enemy> Enemy_InstanceList { get; } = new List<Enemy>();
|
public List<Role> Role_InstanceList { get; } = new List<Role>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 随机数对象
|
/// 随机数对象
|
||||||
|
@ -142,12 +142,12 @@ public partial class World : CanvasModulate, ICoroutine
|
||||||
/// <param name="target">目标</param>
|
/// <param name="target">目标</param>
|
||||||
public void NotifyEnemyTarget(Role self, ActivityObject target)
|
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), () =>
|
role.CallDelay(Utils.Random.RandomRangeFloat(0.2f, 1f), () =>
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user