Premier commit
@@ -0,0 +1,4 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Normalize EOL for all files that Git considers text files.
|
||||||
|
* text=auto eol=lf
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# Godot 4+ specific ignores
|
||||||
|
.godot/
|
||||||
|
/android/
|
||||||
|
|
||||||
|
# Godot-specific ignores
|
||||||
|
.import/
|
||||||
|
export.cfg
|
||||||
|
export_credentials.cfg
|
||||||
|
|
||||||
|
# Imported translations (automatically generated from CSV files)
|
||||||
|
*.translation
|
||||||
|
|
||||||
|
# Mono-specific ignores
|
||||||
|
.mono/
|
||||||
|
data_*/
|
||||||
|
mono_crash.*.json
|
||||||
|
|
||||||
|
.vscode
|
||||||
|
|
||||||
|
.export/
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
[gd_resource type="AnimatedTexture" format=3 uid="uid://dqasylgir7ka2"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://248ks3fx7lm3" path="res://common/assets/alien_2d_anim/alien_running0001.png" id="1_qwfpk"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cmp2y3c446xoj" path="res://common/assets/alien_2d_anim/alien_running0002.png" id="2_q53jl"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cqfucfwsif5q7" path="res://common/assets/alien_2d_anim/alien_running0011.png" id="3_hehve"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bvvuc0cnn6tvl" path="res://common/assets/alien_2d_anim/alien_running0012.png" id="4_te5nh"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dfmihbrigftd2" path="res://common/assets/alien_2d_anim/alien_running0003.png" id="5_lqyd0"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ds47iqvnbvhnv" path="res://common/assets/alien_2d_anim/alien_running0004.png" id="6_0ekdo"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bvgjs386j1tvo" path="res://common/assets/alien_2d_anim/alien_running0005.png" id="7_7rvmj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d2u7fa7wqvqw8" path="res://common/assets/alien_2d_anim/alien_running0006.png" id="8_jbker"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bmmspo52gh7jf" path="res://common/assets/alien_2d_anim/alien_running0007.png" id="9_2mnul"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cdjotqiqyc33m" path="res://common/assets/alien_2d_anim/alien_running0008.png" id="10_5yosl"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cwmx4vskppoub" path="res://common/assets/alien_2d_anim/alien_running0009.png" id="11_8yks0"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://db67eb3grgik8" path="res://common/assets/alien_2d_anim/alien_running0010.png" id="12_phvay"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
frames = 12
|
||||||
|
speed_scale = 30.0
|
||||||
|
frame_0/texture = ExtResource("1_qwfpk")
|
||||||
|
frame_1/texture = ExtResource("2_q53jl")
|
||||||
|
frame_1/duration = 1.0
|
||||||
|
frame_2/texture = ExtResource("5_lqyd0")
|
||||||
|
frame_2/duration = 1.0
|
||||||
|
frame_3/texture = ExtResource("6_0ekdo")
|
||||||
|
frame_3/duration = 1.0
|
||||||
|
frame_4/texture = ExtResource("7_7rvmj")
|
||||||
|
frame_4/duration = 1.0
|
||||||
|
frame_5/texture = ExtResource("8_jbker")
|
||||||
|
frame_5/duration = 1.0
|
||||||
|
frame_6/texture = ExtResource("9_2mnul")
|
||||||
|
frame_6/duration = 1.0
|
||||||
|
frame_7/texture = ExtResource("10_5yosl")
|
||||||
|
frame_7/duration = 1.0
|
||||||
|
frame_8/texture = ExtResource("11_8yks0")
|
||||||
|
frame_8/duration = 1.0
|
||||||
|
frame_9/texture = ExtResource("12_phvay")
|
||||||
|
frame_9/duration = 1.0
|
||||||
|
frame_10/texture = ExtResource("3_hehve")
|
||||||
|
frame_10/duration = 1.0
|
||||||
|
frame_11/texture = ExtResource("4_te5nh")
|
||||||
|
frame_11/duration = 1.0
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://248ks3fx7lm3"
|
||||||
|
path="res://.godot/imported/alien_running0001.png-42f344f725bc6add53eb238906bdc013.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0001.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0001.png-42f344f725bc6add53eb238906bdc013.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cmp2y3c446xoj"
|
||||||
|
path="res://.godot/imported/alien_running0002.png-7d3a056b15d287b1dacd919a6b87fe96.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0002.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0002.png-7d3a056b15d287b1dacd919a6b87fe96.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dfmihbrigftd2"
|
||||||
|
path="res://.godot/imported/alien_running0003.png-c85a3640a9e96a2e00b10afcc3390df7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0003.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0003.png-c85a3640a9e96a2e00b10afcc3390df7.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ds47iqvnbvhnv"
|
||||||
|
path="res://.godot/imported/alien_running0004.png-cb0333a3fba0c95e0c4e7e23e8ab166a.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0004.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0004.png-cb0333a3fba0c95e0c4e7e23e8ab166a.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bvgjs386j1tvo"
|
||||||
|
path="res://.godot/imported/alien_running0005.png-636f4637d8526267963463e80556cb6e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0005.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0005.png-636f4637d8526267963463e80556cb6e.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d2u7fa7wqvqw8"
|
||||||
|
path="res://.godot/imported/alien_running0006.png-4d7fb0820714fa7c4d3b86fc7669c6f8.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0006.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0006.png-4d7fb0820714fa7c4d3b86fc7669c6f8.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bmmspo52gh7jf"
|
||||||
|
path="res://.godot/imported/alien_running0007.png-c574b372219e5488a5c9f4260277d145.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0007.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0007.png-c574b372219e5488a5c9f4260277d145.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cdjotqiqyc33m"
|
||||||
|
path="res://.godot/imported/alien_running0008.png-d4edc9da9f0aa04bd6b14f12cc5569e6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0008.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0008.png-d4edc9da9f0aa04bd6b14f12cc5569e6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwmx4vskppoub"
|
||||||
|
path="res://.godot/imported/alien_running0009.png-873540969bc2269ebd94ab07d08b55ca.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0009.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0009.png-873540969bc2269ebd94ab07d08b55ca.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://db67eb3grgik8"
|
||||||
|
path="res://.godot/imported/alien_running0010.png-d807b6be13956efb9ff9dd3f5949e1ed.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0010.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0010.png-d807b6be13956efb9ff9dd3f5949e1ed.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cqfucfwsif5q7"
|
||||||
|
path="res://.godot/imported/alien_running0011.png-354b6ed57970ffaa1d41a542c28aee17.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0011.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0011.png-354b6ed57970ffaa1d41a542c28aee17.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bvvuc0cnn6tvl"
|
||||||
|
path="res://.godot/imported/alien_running0012.png-a234c22f318b2e09a2237cc7c59f24b6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/alien_2d_anim/alien_running0012.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_running0012.png-a234c22f318b2e09a2237cc7c59f24b6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 629 B |
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cdr6ynvpd1rx1"
|
||||||
|
path.s3tc="res://.godot/imported/palette.png-7e7ed16a17c6b935383aad2fc09bb560.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/palette.png"
|
||||||
|
dest_files=["res://.godot/imported/palette.png-7e7ed16a17c6b935383aad2fc09bb560.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
|
After Width: | Height: | Size: 7.9 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c46rt5tydx8ih"
|
||||||
|
path="res://.godot/imported/wheat_pattern.png-e6c543a447bed8409ac1e7848eb8b8a5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/assets/wheat_pattern.png"
|
||||||
|
dest_files=["res://.godot/imported/wheat_pattern.png-e6c543a447bed8409ac1e7848eb8b8a5.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://ddiuqfq41f18x"
|
||||||
|
path="res://.godot/imported/BPdotsPlus.otf-7830f8c00ee1e842bd23df9ee4b99d77.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/fonts/BPdotsPlus.otf"
|
||||||
|
dest_files=["res://.godot/imported/BPdotsPlus.otf-7830f8c00ee1e842bd23df9ee4b99d77.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
modulate_color_glyphs=false
|
||||||
|
hinting=3
|
||||||
|
subpixel_positioning=4
|
||||||
|
keep_rounding_remainders=true
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://iug4bpafhqp"
|
||||||
|
path="res://.godot/imported/BPdotsPlusBold.otf-a8a1bcf573cfa976574a1ea039956873.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/fonts/BPdotsPlusBold.otf"
|
||||||
|
dest_files=["res://.godot/imported/BPdotsPlusBold.otf-a8a1bcf573cfa976574a1ea039956873.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
modulate_color_glyphs=false
|
||||||
|
hinting=3
|
||||||
|
subpixel_positioning=4
|
||||||
|
keep_rounding_remainders=true
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://b7ysukag1831b"
|
||||||
|
path="res://.godot/imported/Squarrez.otf-d1fa764de82361511159e4342aa41270.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/fonts/Squarrez.otf"
|
||||||
|
dest_files=["res://.godot/imported/Squarrez.otf-d1fa764de82361511159e4342aa41270.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
modulate_color_glyphs=false
|
||||||
|
hinting=3
|
||||||
|
subpixel_positioning=4
|
||||||
|
keep_rounding_remainders=true
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" format=3 uid="uid://41afldgohk0o"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cdr6ynvpd1rx1" path="res://common/assets/palette.png" id="1_rf3u1"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
shading_mode = 2
|
||||||
|
diffuse_mode = 3
|
||||||
|
specular_mode = 1
|
||||||
|
vertex_color_use_as_albedo = true
|
||||||
|
albedo_texture = ExtResource("1_rf3u1")
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
[gd_resource type="Theme" format=3 uid="uid://pemhq200t8km"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://b7ysukag1831b" path="res://common/fonts/Squarrez.otf" id="1_t2mbe"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://iug4bpafhqp" path="res://common/fonts/BPdotsPlusBold.otf" id="2_21a82"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pd64y"]
|
||||||
|
bg_color = Color(0.9882353, 0.9372549, 0.5529412, 1)
|
||||||
|
border_width_left = 15
|
||||||
|
border_width_top = 15
|
||||||
|
border_width_right = 15
|
||||||
|
border_width_bottom = 15
|
||||||
|
border_color = Color(0.9882353, 0.9372549, 0.5529412, 1)
|
||||||
|
corner_radius_top_left = 100
|
||||||
|
corner_radius_top_right = 100
|
||||||
|
corner_detail = 1
|
||||||
|
expand_margin_left = 40.0
|
||||||
|
expand_margin_right = 40.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t2mbe"]
|
||||||
|
bg_color = Color(0.8, 0.25882354, 0.36862746, 1)
|
||||||
|
border_width_left = 15
|
||||||
|
border_width_top = 15
|
||||||
|
border_width_right = 15
|
||||||
|
border_width_bottom = 15
|
||||||
|
border_color = Color(0.8, 0.25882354, 0.36862746, 1)
|
||||||
|
corner_radius_top_left = 100
|
||||||
|
corner_radius_top_right = 100
|
||||||
|
corner_detail = 1
|
||||||
|
expand_margin_left = 40.0
|
||||||
|
expand_margin_right = 40.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_21a82"]
|
||||||
|
bg_color = Color(0.22352941, 0.03529412, 0.2784314, 1)
|
||||||
|
border_width_left = 15
|
||||||
|
border_width_top = 15
|
||||||
|
border_width_right = 15
|
||||||
|
border_width_bottom = 15
|
||||||
|
border_color = Color(0.8, 0.25882354, 0.36862746, 1)
|
||||||
|
corner_radius_top_left = 100
|
||||||
|
corner_radius_top_right = 100
|
||||||
|
corner_detail = 1
|
||||||
|
expand_margin_left = 40.0
|
||||||
|
expand_margin_right = 40.0
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
Button/colors/font_hover_color = Color(0.23529412, 0.07058824, 0.28235295, 1)
|
||||||
|
Button/font_sizes/font_size = 40
|
||||||
|
Button/fonts/font = ExtResource("2_21a82")
|
||||||
|
Button/styles/hover = SubResource("StyleBoxFlat_pd64y")
|
||||||
|
Button/styles/normal = SubResource("StyleBoxFlat_t2mbe")
|
||||||
|
Button/styles/pressed = SubResource("StyleBoxFlat_21a82")
|
||||||
|
Label/colors/font_color = Color(0.8, 0.2627451, 0.36862746, 1)
|
||||||
|
Label/colors/font_outline_color = Color(0.9882353, 0.9372549, 0.5529412, 1)
|
||||||
|
Label/font_sizes/font_size = 30
|
||||||
|
Label/fonts/font = ExtResource("1_t2mbe")
|
||||||
|
RichTextLabel/colors/selection_color = Color(0.99, 0.93918, 0.5544, 0.7882353)
|
||||||
|
RichTextLabel/font_sizes/bold_font_size = 40
|
||||||
|
RichTextLabel/font_sizes/bold_italics_font_size = 40
|
||||||
|
RichTextLabel/font_sizes/italics_font_size = 30
|
||||||
|
RichTextLabel/font_sizes/mono_font_size = 30
|
||||||
|
RichTextLabel/font_sizes/normal_font_size = 30
|
||||||
|
RichTextLabel/fonts/bold_font = ExtResource("2_21a82")
|
||||||
|
RichTextLabel/fonts/bold_italics_font = ExtResource("2_21a82")
|
||||||
|
RichTextLabel/fonts/italics_font = ExtResource("2_21a82")
|
||||||
|
RichTextLabel/fonts/mono_font = ExtResource("2_21a82")
|
||||||
|
RichTextLabel/fonts/normal_font = ExtResource("2_21a82")
|
||||||
|
VBoxContainer/constants/separation = 15
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
extends Area3D
|
||||||
|
class_name Alien
|
||||||
|
|
||||||
|
const DEATH_SCENE : PackedScene = preload("res://entities/alien/alien_death_effect/alien_death_effect.tscn") as PackedScene
|
||||||
|
const DEATH_SCENE_TIME : float = 10.
|
||||||
|
|
||||||
|
const COLLISION_HEIGHT = 5
|
||||||
|
const COLLISION_RADIUS = 1.5
|
||||||
|
const NEIGHBOR_DETECTION_MARGIN = 0.5
|
||||||
|
|
||||||
|
const ATTACK_DISTANCE = 6.
|
||||||
|
|
||||||
|
const NEIGHBOR_ROTATION = 0.5
|
||||||
|
const NEIGHBOR_BUMP_FORCE = 4. * AlienHordeManager.CALCULATE_SCATTER_FREQUENCY
|
||||||
|
const NEIGHBOR_BLOCKED_SPEED_FACTOR = 0.5
|
||||||
|
const DIRECTION_DRIFT_RANGE = PI/8
|
||||||
|
const DAMAGE_EFFECT_DURATION : float = 0.5
|
||||||
|
|
||||||
|
const DEFAULT_HP : float = 20.
|
||||||
|
const DEFAULT_DAMAGE_RATE : float = 1.
|
||||||
|
|
||||||
|
signal died
|
||||||
|
|
||||||
|
enum State {RUNNING, ATTACKING, DEAD}
|
||||||
|
|
||||||
|
@export var size : float = 1.0
|
||||||
|
@export var speed : float = 10.
|
||||||
|
@export var turn_speed : float = 20.
|
||||||
|
|
||||||
|
@onready var damage_rate : float = size * DEFAULT_DAMAGE_RATE
|
||||||
|
@onready var hp : float = size * DEFAULT_HP
|
||||||
|
var state : State = State.RUNNING
|
||||||
|
var damage_effect_last : float = 0.
|
||||||
|
|
||||||
|
var id : int = 0
|
||||||
|
var target : Node3D
|
||||||
|
|
||||||
|
@onready var collision_shape : CollisionShape3D = generate_collision_shape()
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
monitoring = false
|
||||||
|
|
||||||
|
func generate_collision_shape() -> CollisionShape3D:
|
||||||
|
var new_collision_shape : CollisionShape3D= CollisionShape3D.new()
|
||||||
|
var cylinder_shape : CylinderShape3D = CylinderShape3D.new()
|
||||||
|
|
||||||
|
cylinder_shape.height = COLLISION_HEIGHT
|
||||||
|
cylinder_shape.radius = COLLISION_RADIUS
|
||||||
|
|
||||||
|
new_collision_shape.shape = cylinder_shape
|
||||||
|
|
||||||
|
new_collision_shape.position = Vector3(0,COLLISION_HEIGHT/2.,0)
|
||||||
|
|
||||||
|
add_child(new_collision_shape)
|
||||||
|
|
||||||
|
return new_collision_shape
|
||||||
|
|
||||||
|
func move(
|
||||||
|
delta: float,
|
||||||
|
calculate_direction: bool,
|
||||||
|
calculate_scatter : bool
|
||||||
|
):
|
||||||
|
var target_angle = rotation.y
|
||||||
|
var current_speed = speed
|
||||||
|
|
||||||
|
if calculate_direction and target:
|
||||||
|
target_angle = calculate_target_angle()
|
||||||
|
|
||||||
|
if calculate_scatter:
|
||||||
|
var collision_right = has_neighbor(1)
|
||||||
|
var collision_left = has_neighbor(-1)
|
||||||
|
|
||||||
|
if collision_left and not collision_right:
|
||||||
|
target_angle += - NEIGHBOR_ROTATION
|
||||||
|
position += Vector3.RIGHT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta
|
||||||
|
elif collision_right and not collision_left:
|
||||||
|
target_angle += NEIGHBOR_ROTATION
|
||||||
|
position += Vector3.LEFT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta
|
||||||
|
elif collision_left and collision_right:
|
||||||
|
current_speed = speed * get_random().randf_range(0., NEIGHBOR_BLOCKED_SPEED_FACTOR)
|
||||||
|
|
||||||
|
rotation.y = lerp_angle(
|
||||||
|
rotation.y,
|
||||||
|
target_angle,
|
||||||
|
min(1, delta*turn_speed)
|
||||||
|
)
|
||||||
|
|
||||||
|
position += Vector3.FORWARD.rotated(Vector3.UP, rotation.y) * current_speed * delta
|
||||||
|
|
||||||
|
func calculate_target_angle() -> float:
|
||||||
|
|
||||||
|
var target_angle : float = (
|
||||||
|
Vector2(global_position.z,global_position.x)
|
||||||
|
- Vector2(target.global_position.z,target.global_position.x)
|
||||||
|
).normalized().angle()
|
||||||
|
|
||||||
|
# Random drift in direction
|
||||||
|
target_angle += get_random().randf_range(-DIRECTION_DRIFT_RANGE, DIRECTION_DRIFT_RANGE)
|
||||||
|
|
||||||
|
return target_angle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func has_neighbor(direction = 1) -> bool:
|
||||||
|
var space_state = get_world_3d().direct_space_state
|
||||||
|
|
||||||
|
var query = PhysicsRayQueryParameters3D.create(
|
||||||
|
global_position,
|
||||||
|
global_position + Vector3(
|
||||||
|
direction * (COLLISION_RADIUS + NEIGHBOR_DETECTION_MARGIN), 0,0
|
||||||
|
).rotated(Vector3.UP, rotation.y)
|
||||||
|
)
|
||||||
|
query.collide_with_areas = true
|
||||||
|
query.exclude.append(get_rid())
|
||||||
|
|
||||||
|
var result = space_state.intersect_ray(query)
|
||||||
|
|
||||||
|
return result != {}
|
||||||
|
|
||||||
|
func attack_target(delta : float):
|
||||||
|
if target and target.has_method("hit"):
|
||||||
|
target.hit(delta * damage_rate)
|
||||||
|
|
||||||
|
func hit(damage = 1.):
|
||||||
|
hp = max(0, hp - damage)
|
||||||
|
damage_effect_last = DAMAGE_EFFECT_DURATION
|
||||||
|
if hp == 0:
|
||||||
|
die()
|
||||||
|
|
||||||
|
func die():
|
||||||
|
died.emit()
|
||||||
|
state = State.DEAD
|
||||||
|
collision_shape.disabled = true
|
||||||
|
add_child(DEATH_SCENE.instantiate())
|
||||||
|
await get_tree().create_timer(DEATH_SCENE_TIME).timeout
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
func get_random() -> RandomNumberGenerator:
|
||||||
|
var random : RandomNumberGenerator = RandomNumberGenerator.new()
|
||||||
|
random.seed = id
|
||||||
|
|
||||||
|
return random
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bkfr1dvvrmota
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
[gd_scene format=3 uid="uid://10ogf77klwu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bkfr1dvvrmota" path="res://entities/alien/alien.gd" id="1_qp64o"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dvgqy34aw6xfc" path="res://entities/mecha/assets/textures/pointer.svg" id="3_ym0y8"]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_g4v7s"]
|
||||||
|
height = 4.0
|
||||||
|
radius = 1.5
|
||||||
|
|
||||||
|
[node name="Alien" type="Area3D" unique_id=537229132]
|
||||||
|
monitoring = false
|
||||||
|
monitorable = false
|
||||||
|
script = ExtResource("1_qp64o")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=209124875]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
shape = SubResource("CylinderShape3D_g4v7s")
|
||||||
|
|
||||||
|
[node name="ColliderRayCast3D" type="RayCast3D" parent="." unique_id=303441313]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 2, -0.1)
|
||||||
|
target_position = Vector3(0, -2, 0)
|
||||||
|
|
||||||
|
[node name="NeighborRRayCast3D" type="RayCast3D" parent="." unique_id=91948683]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.1, 2, 0.5)
|
||||||
|
target_position = Vector3(2, 0, 0)
|
||||||
|
collide_with_areas = true
|
||||||
|
collide_with_bodies = false
|
||||||
|
|
||||||
|
[node name="NeighborLRayCast3D" type="RayCast3D" parent="." unique_id=580620392]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.1, 2, 0.5)
|
||||||
|
target_position = Vector3(-2, 0, 0)
|
||||||
|
collide_with_areas = true
|
||||||
|
collide_with_bodies = false
|
||||||
|
|
||||||
|
[node name="Indicator" type="Sprite3D" parent="." unique_id=1377230752]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.514289, 0)
|
||||||
|
visible = false
|
||||||
|
billboard = 1
|
||||||
|
texture = ExtResource("3_ym0y8")
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
%ExplosionGPUParticles3D.emitting = true
|
||||||
|
%CorpseGPUParticles3D.emitting = true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://lhn14psdj7hr
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
[gd_scene format=3 uid="uid://mi0hwb80ud8h"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://lhn14psdj7hr" path="res://entities/alien/alien_death_effect/alien_death_effect.gd" id="1_vt2i7"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://667gyf6p35nw" path="res://entities/alien/assets/3d/alien_part.tres" id="2_on0xa"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_t4u1q"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.8219697, 1)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_p1u0y"]
|
||||||
|
gradient = SubResource("Gradient_t4u1q")
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_p83er"]
|
||||||
|
_data = [Vector2(0, 0), 0.0, 2.7057414, 0, 0, Vector2(0.8, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 3
|
||||||
|
|
||||||
|
[sub_resource type="CurveTexture" id="CurveTexture_3gngh"]
|
||||||
|
curve = SubResource("Curve_p83er")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_g4v7s"]
|
||||||
|
lifetime_randomness = 0.5
|
||||||
|
angle_min = 1.0728835e-05
|
||||||
|
angle_max = 1.0728835e-05
|
||||||
|
direction = Vector3(0, 1, 0)
|
||||||
|
spread = 114.231
|
||||||
|
initial_velocity_min = 2.0
|
||||||
|
initial_velocity_max = 3.0
|
||||||
|
radial_velocity_min = -2.2351742e-05
|
||||||
|
radial_velocity_max = 0.39997762
|
||||||
|
gravity = Vector3(0, 0, 0)
|
||||||
|
use_scale_3d = true
|
||||||
|
scale_3d_min = Vector3(1, 1, 1)
|
||||||
|
scale_3d_max = Vector3(1, 1, 1)
|
||||||
|
scale_min = 0.5
|
||||||
|
scale_max = 0.5
|
||||||
|
scale_curve = SubResource("CurveTexture_3gngh")
|
||||||
|
color_ramp = SubResource("GradientTexture1D_p1u0y")
|
||||||
|
hue_variation_min = -2.2351742e-08
|
||||||
|
hue_variation_max = 0.09999997
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_d6cdn"]
|
||||||
|
interpolation_mode = 1
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture2D" id="GradientTexture2D_fcnqv"]
|
||||||
|
gradient = SubResource("Gradient_d6cdn")
|
||||||
|
fill = 1
|
||||||
|
fill_from = Vector2(0.5, 0.5)
|
||||||
|
fill_to = Vector2(1, 0.5)
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"]
|
||||||
|
transparency = 1
|
||||||
|
shading_mode = 0
|
||||||
|
vertex_color_use_as_albedo = true
|
||||||
|
albedo_color = Color(0.73333335, 0.6156863, 0.69803923, 1)
|
||||||
|
albedo_texture = SubResource("GradientTexture2D_fcnqv")
|
||||||
|
billboard_mode = 1
|
||||||
|
billboard_keep_scale = true
|
||||||
|
|
||||||
|
[sub_resource type="QuadMesh" id="QuadMesh_yf5fn"]
|
||||||
|
material = SubResource("StandardMaterial3D_57qmd")
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_kxalf"]
|
||||||
|
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.8793103, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 3
|
||||||
|
|
||||||
|
[sub_resource type="CurveTexture" id="CurveTexture_fcnqv"]
|
||||||
|
curve = SubResource("Curve_kxalf")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_emcji"]
|
||||||
|
lifetime_randomness = 0.5
|
||||||
|
angle_min = 1.0728835e-05
|
||||||
|
angle_max = 1.0728835e-05
|
||||||
|
use_rotation_3d = true
|
||||||
|
rotation_3d_min = Vector3(0, 0, 0)
|
||||||
|
rotation_3d_max = Vector3(360, 360, 360)
|
||||||
|
inherit_velocity_ratio = 1.0
|
||||||
|
direction = Vector3(0, 1, 0)
|
||||||
|
spread = 33.462
|
||||||
|
initial_velocity_min = 4.0
|
||||||
|
initial_velocity_max = 6.0
|
||||||
|
radial_velocity_min = -2.2351742e-05
|
||||||
|
radial_velocity_max = 0.39997762
|
||||||
|
gravity = Vector3(0, -9.1, 0)
|
||||||
|
scale_min = 0.59999996
|
||||||
|
scale_curve = SubResource("CurveTexture_fcnqv")
|
||||||
|
collision_mode = 1
|
||||||
|
collision_friction = 1.0
|
||||||
|
collision_bounce = 0.5
|
||||||
|
|
||||||
|
[node name="AlienDeathEffect" type="Node3D" unique_id=1248383251]
|
||||||
|
script = ExtResource("1_vt2i7")
|
||||||
|
|
||||||
|
[node name="ExplosionGPUParticles3D" type="GPUParticles3D" parent="." unique_id=416874722]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376)
|
||||||
|
emitting = false
|
||||||
|
amount = 20
|
||||||
|
one_shot = true
|
||||||
|
speed_scale = 3.0
|
||||||
|
explosiveness = 1.0
|
||||||
|
local_coords = true
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_g4v7s")
|
||||||
|
draw_pass_1 = SubResource("QuadMesh_yf5fn")
|
||||||
|
|
||||||
|
[node name="CorpseGPUParticles3D" type="GPUParticles3D" parent="." unique_id=810474087]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376)
|
||||||
|
emitting = false
|
||||||
|
amount = 5
|
||||||
|
lifetime = 10.0
|
||||||
|
one_shot = true
|
||||||
|
speed_scale = 2.0
|
||||||
|
explosiveness = 1.0
|
||||||
|
local_coords = true
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_emcji")
|
||||||
|
draw_pass_1 = ExtResource("2_on0xa")
|
||||||
|
|
||||||
|
[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="." unique_id=813937432]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||||
|
size = Vector3(12, 2, 12)
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
extends Node
|
||||||
|
class_name AlienHordeManager
|
||||||
|
|
||||||
|
const CALCULATE_TARGET_FREQUENCY = 10
|
||||||
|
const CALCULATE_DIRECTION_FREQUENCY = 10
|
||||||
|
const CALCULATE_SCATTER_FREQUENCY = 5
|
||||||
|
const CALCULATE_STATE_FREQUENCY = 5
|
||||||
|
const ATTACK_DISTANCE = 10.
|
||||||
|
const MECHA_ATTACK_DISTANCE = 5.
|
||||||
|
const MAX_ALIEN_MECHA_AGGRO_DISTANCE = 100
|
||||||
|
const ALIEN_RANDOM_SCALE = 0.3
|
||||||
|
const MASTODONT_CHANCE = 0.01
|
||||||
|
const MASTODONT_SCALE_FACTOR = 4.
|
||||||
|
|
||||||
|
@export var hex_map : HexMap
|
||||||
|
@export var mecha : Mecha
|
||||||
|
|
||||||
|
@onready var multimeshes : Array[MultiMeshInstance3D] = [
|
||||||
|
%RunningAlienMultiMesh,
|
||||||
|
%AttackingAlienMultiMesh
|
||||||
|
]
|
||||||
|
@onready var targets : Array = hex_map.get_all_tiles_with_id("House")
|
||||||
|
|
||||||
|
var current_frame : int = 0
|
||||||
|
|
||||||
|
var alien_id_acc : int = 0
|
||||||
|
|
||||||
|
var aliens : Array[Alien] = []
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
current_frame += 1
|
||||||
|
|
||||||
|
for t in targets:
|
||||||
|
if t is HouseHexTile:
|
||||||
|
if t.destroyed:
|
||||||
|
targets.erase(t)
|
||||||
|
|
||||||
|
# if current_frame % CALCULATE_CLUSTERS_FREQUENCY == 0:
|
||||||
|
# calculate_clusters()
|
||||||
|
|
||||||
|
calculate_target()
|
||||||
|
calculate_state()
|
||||||
|
update_horde(delta)
|
||||||
|
spawn_models(delta)
|
||||||
|
|
||||||
|
func spawn_alien(position : Vector3, rotation: float) -> Alien:
|
||||||
|
var alien : Alien = Alien.new()
|
||||||
|
alien.id = alien_id_acc
|
||||||
|
alien.position = position
|
||||||
|
alien.rotation.y = rotation
|
||||||
|
var is_mastodont = randf() < MASTODONT_CHANCE
|
||||||
|
alien.size = randf_range(1. - ALIEN_RANDOM_SCALE, 1. + ALIEN_RANDOM_SCALE) * (MASTODONT_SCALE_FACTOR if is_mastodont else 1.)
|
||||||
|
alien.scale = Vector3.ONE * alien.size
|
||||||
|
|
||||||
|
add_child(alien)
|
||||||
|
|
||||||
|
aliens.append(alien)
|
||||||
|
|
||||||
|
alien.died.connect(
|
||||||
|
func():
|
||||||
|
aliens.erase(alien)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
alien_id_acc += 1
|
||||||
|
|
||||||
|
return alien
|
||||||
|
|
||||||
|
func calculate_target():
|
||||||
|
for alien in aliens:
|
||||||
|
if (current_frame + alien.id)%CALCULATE_TARGET_FREQUENCY and alien.state != Alien.State.DEAD :
|
||||||
|
if (
|
||||||
|
len(targets) == 0
|
||||||
|
or mecha.position.distance_to(alien.position) < alien.get_random().randf_range(0., MAX_ALIEN_MECHA_AGGRO_DISTANCE)
|
||||||
|
):
|
||||||
|
alien.target = mecha
|
||||||
|
else :
|
||||||
|
var old_target = alien.target
|
||||||
|
alien.target = targets[alien.get_random().randi() % len(targets)]
|
||||||
|
if old_target != alien.target:
|
||||||
|
alien.state = Alien.State.RUNNING
|
||||||
|
|
||||||
|
|
||||||
|
func calculate_state():
|
||||||
|
for alien in aliens:
|
||||||
|
if (current_frame + alien.id)%CALCULATE_STATE_FREQUENCY and alien.state != Alien.State.DEAD and alien.target:
|
||||||
|
var target_attack_distance = MECHA_ATTACK_DISTANCE if alien.target is Mecha else ATTACK_DISTANCE
|
||||||
|
alien.state = (
|
||||||
|
Alien.State.RUNNING if alien.target.position.distance_to(alien.position) > target_attack_distance
|
||||||
|
else Alien.State.ATTACKING
|
||||||
|
)
|
||||||
|
|
||||||
|
func update_horde(delta):
|
||||||
|
for alien in aliens:
|
||||||
|
match alien.state:
|
||||||
|
Alien.State.RUNNING:
|
||||||
|
alien.move(
|
||||||
|
delta,
|
||||||
|
(current_frame + alien.id)%CALCULATE_DIRECTION_FREQUENCY,
|
||||||
|
(current_frame + alien.id)%CALCULATE_SCATTER_FREQUENCY
|
||||||
|
)
|
||||||
|
Alien.State.ATTACKING:
|
||||||
|
alien.attack_target(delta)
|
||||||
|
|
||||||
|
func alien_to_multimesh_id(alien : Alien) -> int:
|
||||||
|
match alien.state:
|
||||||
|
Alien.State.RUNNING:
|
||||||
|
return 0
|
||||||
|
Alien.State.ATTACKING:
|
||||||
|
return 1
|
||||||
|
_: return -1
|
||||||
|
|
||||||
|
func spawn_models(delta):
|
||||||
|
|
||||||
|
for m_id in range(len(multimeshes)):
|
||||||
|
var multimesh = multimeshes[m_id].multimesh
|
||||||
|
|
||||||
|
multimesh.instance_count = len(aliens)
|
||||||
|
|
||||||
|
for i in range(len(aliens)):
|
||||||
|
var alien = aliens[i]
|
||||||
|
var is_current = m_id == alien_to_multimesh_id(alien)
|
||||||
|
|
||||||
|
multimesh.set_instance_transform(
|
||||||
|
i,
|
||||||
|
alien.transform.scaled(Vector3.ONE if is_current else Vector3.ZERO)
|
||||||
|
)
|
||||||
|
|
||||||
|
if alien.damage_effect_last > 0:
|
||||||
|
alien.damage_effect_last -= delta
|
||||||
|
|
||||||
|
multimesh.set_instance_custom_data(
|
||||||
|
i,
|
||||||
|
Color(
|
||||||
|
alien.id,
|
||||||
|
alien.damage_effect_last > 0,
|
||||||
|
alien.size,
|
||||||
|
0
|
||||||
|
))
|
||||||
|
multimesh.set_instance_color(i ,Color(alien.get_random().randi()%255,alien.get_random().randi()%255,alien.get_random().randi()%255))
|
||||||
|
|
||||||
|
func is_alien_alive(alien):
|
||||||
|
return alien and alien is Alien and alien.hp > 0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bsiixctjr7ml4
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[gd_scene format=3 uid="uid://brr2idsr7qmpf"]
|
||||||
|
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://cgv8clg8y80on" path="res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres" id="1_0bggl"]
|
||||||
|
[ext_resource type="Script" uid="uid://bsiixctjr7ml4" path="res://entities/alien/alien_horde_manager/alien_horde_manager.gd" id="1_hjbcl"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://chhggu10sxmuc" path="res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres" id="2_hjbcl"]
|
||||||
|
|
||||||
|
[sub_resource type="MultiMesh" id="MultiMesh_33mok"]
|
||||||
|
transform_format = 1
|
||||||
|
use_colors = true
|
||||||
|
use_custom_data = true
|
||||||
|
mesh = ExtResource("2_hjbcl")
|
||||||
|
|
||||||
|
[sub_resource type="MultiMesh" id="MultiMesh_tj3hn"]
|
||||||
|
transform_format = 1
|
||||||
|
use_colors = true
|
||||||
|
use_custom_data = true
|
||||||
|
mesh = ExtResource("1_0bggl")
|
||||||
|
|
||||||
|
[node name="AlienHordeManager" type="Node" unique_id=1604717993]
|
||||||
|
script = ExtResource("1_hjbcl")
|
||||||
|
|
||||||
|
[node name="AttackingAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=1055420147]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
multimesh = SubResource("MultiMesh_33mok")
|
||||||
|
|
||||||
|
[node name="RunningAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=245629817]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
multimesh = SubResource("MultiMesh_tj3hn")
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cyjynungpt2a6"
|
||||||
|
path="res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/3d/alien_part.blend"
|
||||||
|
dest_files=["res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={
|
||||||
|
"meshes": {
|
||||||
|
"alien_part_Plane_002": {
|
||||||
|
"generate/lightmap_uv": 0,
|
||||||
|
"generate/lods": 0,
|
||||||
|
"generate/shadow_meshes": 0,
|
||||||
|
"lods/normal_merge_angle": 20.0,
|
||||||
|
"save_to_file/enabled": true,
|
||||||
|
"save_to_file/fallback_path": "res://entities/alien/assets/3d/alien_part.tres",
|
||||||
|
"save_to_file/path": "uid://dbxb76bsurcoy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
blender/nodes/visible=0
|
||||||
|
blender/nodes/active_collection_only=false
|
||||||
|
blender/nodes/punctual_lights=true
|
||||||
|
blender/nodes/cameras=true
|
||||||
|
blender/nodes/custom_properties=true
|
||||||
|
blender/nodes/modifiers=1
|
||||||
|
blender/meshes/vertex_colors=1
|
||||||
|
blender/meshes/uvs=true
|
||||||
|
blender/meshes/normals=true
|
||||||
|
blender/meshes/export_geometry_nodes_instances=false
|
||||||
|
blender/meshes/gpu_instances=false
|
||||||
|
blender/meshes/tangents=true
|
||||||
|
blender/meshes/skins=2
|
||||||
|
blender/meshes/export_bones_deforming_mesh_only=false
|
||||||
|
blender/materials/unpack_enabled=true
|
||||||
|
blender/materials/export_materials=1
|
||||||
|
blender/animation/limit_playback=true
|
||||||
|
blender/animation/always_sample=true
|
||||||
|
blender/animation/group_tracks=true
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
[gd_resource type="ArrayMesh" format=4 uid="uid://667gyf6p35nw"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://41afldgohk0o" path="res://common/materials/default3d.tres" id="1_ndtte"]
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_ndtte"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288),
|
||||||
|
"format": 34359742465,
|
||||||
|
"index_count": 102,
|
||||||
|
"index_data": PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMACQAMAAAAAAAFAAQADAAFAAAACgAMAAkAAgAKAAkABQAMAA0ACgANAAwACgAOAA0ABQANAA4AAgAPAAoAEAAOAAoAEAAKAA8ABQAOABAAAgARAA8AEAAPABEABQAQABIAEAARABIAEQATABIAFAASABMAEQAUABMAFAAFABIAAgAGABEAEQAGABQABgACAAcACAAGAAcABgALABQACwAGAAgABQAUAAsACwAIAAQABQALAAQA"),
|
||||||
|
"lods": [0.7015672, PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMAAgAKAAkACgAAAAkACgACAAYABgACAAcACgAFAAAACgAGAAUAAAAFAAQACAAGAAcABgALAAUACwAGAAgABQALAAQACwAIAAQA"), 1.0523508, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMAAgAFAAAAAAAFAAQAAgAGAAUABQAGAAQABgACAAcABgAIAAQACAAGAAcA")],
|
||||||
|
"name": "Material",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 21,
|
||||||
|
"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc9WD6TuiCyRz5Agb0+eNEDMyj6Ir78ywo/8AUBM/xJ5b6uUCq/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+fD2TOiCyRz5Agb0+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/tQk6P8iij7748Gs+tQk6P9TYvr4Au3C+dmqQPoiL5b5mRyq/YCOHsjjmwD44ErK+wPeaMfAN9b2evC6/S3cBv4DqSTxQA5a+dGqQvpCL5b52Ryq/tQk6v9jYvr4gu3C+tQk6v8iij7748Gs+")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "alien_part_Plane_002"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288),
|
||||||
|
"attribute_data": PackedByteArray("qFa/PjyPYT+oVr8+bMeHPqhWvz6Sn88+qFa/PsO5YD+oVr8+VoVhP6hWvz5MFyM/qFa/PmzHhz5C8Lg+VCp8P0LwuD6uI3w/QvC4PsEEUj9C8Lg+YD4SP0LwuD4MM1I/QvC4PsEEUj9C8Lg+YD4SP6hWvz5MFyM/qFa/PkWOIz+oVr8+PI9hP0LwuD4MM1I/QvC4PlQqfD+oVr8+RY4jP6hWvz4uv9E+qFa/PsuPYT+oVr8+y49hP6hWvz7gzmA/qFa/PhzSLD+oVr8+4M5gP6hWvz7Lj2E/qFa/PsuPYT8="),
|
||||||
|
"format": 34359742487,
|
||||||
|
"index_count": 102,
|
||||||
|
"index_data": PackedByteArray("DgABAAIABQACAAYAAgAPAA4AAgAFABMAAgAUAA8AAgATABQAEwAFABUABQAQABUAEwAVABYAAwAVABAAAwAQAAQAFQAXABYAEwAWABcAFQADABcAGAAUABMAGAATABcAGAAPABQAAwAYABcAGAAZAA8AAwAZABgADwAZABoAAwAaABkAAAADAAQADwAaABsAAwAbABoAGwADAAAADwAbAA4ADgAbAAAABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"),
|
||||||
|
"lods": [0.7015672, PackedByteArray("DgABAAIAAgAPAA4ADwAAAA4ADwACAAUABQACAAYADwADAAAADwAFAAMAAAADAAQABQAQAAMAAwAQAAQABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"), 1.0523508, PackedByteArray("AAABAAIAAgADAAAAAAADAAQAAwAFAAQAAgAFAAMABQACAAYABwAIAAkACQAKAAcACwAMAAgADAALAA0A")],
|
||||||
|
"material": ExtResource("1_ndtte"),
|
||||||
|
"name": "Material",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 28,
|
||||||
|
"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc98AUBM/xJ5b6uUCq/eNEDMyj6Ir78ywo/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+ISdgPwiTGr5SJQ8/eNEDMyj6Ir78ywo/WD6TuiCyRz5Agb0+2gkwu8CYTT/gi28+yAYav7B/QD78Mbg+fD2TOiCyRz5Agb0+vgkwO8CYTT/Yi28+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/xwYaP8B/QD4AMrg+ICdgvwiTGr5SJQ8/S3cBv4DqSTxQA5a+YCOHsjjmwD44ErK+tQk6v8iij7748Gs+tQk6v9jYvr4gu3C+dGqQvpCL5b52Ryq/wPeaMfAN9b2evC6/dmqQPoiL5b5mRyq/tQk6P9TYvr4Au3C+tQk6P8iij7748Gs+gMYlbv///z8Gvsu9////P4G2//////+/YbYAAP///7//f0FY////PwJSkLb///8/+EHLvf///z+AxiVu////P/9/QVj///8/wIBjov///z8Gvsu9////PwJSkLb///8/Pn9jov///z/4Qcu9////P/ytkLb///8/hth3zP///79+OSVu////P/ytkLb///8/fjklbv///z94J3fM////v6i0//////+/SyvGTf///79lK7xC////v6AuBx3///+/MNv//////79e0Qcd////v5nUvEL///+/s9TGTf///78=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_ndtte")
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" format=3 uid="uid://b48t0vv053qrt"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_nk817"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_a2hb3"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_7iaoq"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cbjj8cusm385o" path="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr" id="4_nk817"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_nk817")
|
||||||
|
shader_parameter/vertex_animation_texture = ExtResource("4_nk817")
|
||||||
|
shader_parameter/min_bounds = Vector3(-0.2, -0.8, -0.4)
|
||||||
|
shader_parameter/max_bounds = Vector3(1, 2.2, 4.9)
|
||||||
|
shader_parameter/autoplay = true
|
||||||
|
shader_parameter/autoplay_speed = 30.0
|
||||||
|
shader_parameter/frame = 12.0
|
||||||
|
shader_parameter/use_uv_1 = false
|
||||||
|
shader_parameter/cull_mode = 0
|
||||||
|
shader_parameter/albedo_map = ExtResource("2_a2hb3")
|
||||||
|
shader_parameter/albedo_tint = Color(1, 1, 1, 1)
|
||||||
|
shader_parameter/occlusion_channel = Color(1, 0, 0, 1)
|
||||||
|
shader_parameter/occlusion = 1.0
|
||||||
|
shader_parameter/roughness_channel = Color(0, 1, 0, 1)
|
||||||
|
shader_parameter/roughness = 1.0
|
||||||
|
shader_parameter/metallic_channel = Color(0, 0, 1, 1)
|
||||||
|
shader_parameter/metallic = 1.0
|
||||||
|
shader_parameter/specular = 0.5
|
||||||
|
shader_parameter/normal_map = ExtResource("3_7iaoq")
|
||||||
|
shader_parameter/normal_map_scale = 1.0
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" format=3 uid="uid://b7o0pgg1fweqq"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_ig0tm"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_cxjnj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_1leus"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cxy6bh1jymqsk" path="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr" id="3_ig0tm"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_ig0tm")
|
||||||
|
shader_parameter/vertex_animation_texture = ExtResource("3_ig0tm")
|
||||||
|
shader_parameter/min_bounds = Vector3(-0.2, -2, -0.9)
|
||||||
|
shader_parameter/max_bounds = Vector3(0.1, 3.4, 1.1)
|
||||||
|
shader_parameter/autoplay = true
|
||||||
|
shader_parameter/autoplay_speed = 30.0
|
||||||
|
shader_parameter/frame = 12.0
|
||||||
|
shader_parameter/use_uv_1 = false
|
||||||
|
shader_parameter/cull_mode = 0
|
||||||
|
shader_parameter/albedo_map = ExtResource("2_cxjnj")
|
||||||
|
shader_parameter/albedo_tint = Color(1, 1, 1, 1)
|
||||||
|
shader_parameter/occlusion_channel = Color(1, 0, 0, 1)
|
||||||
|
shader_parameter/occlusion = 1.0
|
||||||
|
shader_parameter/roughness_channel = Color(0, 1, 0, 1)
|
||||||
|
shader_parameter/roughness = 1.0
|
||||||
|
shader_parameter/metallic_channel = Color(0, 0, 1, 1)
|
||||||
|
shader_parameter/metallic = 1.0
|
||||||
|
shader_parameter/specular = 0.5
|
||||||
|
shader_parameter/normal_map = ExtResource("3_1leus")
|
||||||
|
shader_parameter/normal_map_scale = 1.0
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
// Shader stolen here : https://godotshaders.com/shader/vertex-animation-texture-uses-openvat-output/
|
||||||
|
shader_type spatial;
|
||||||
|
render_mode cull_disabled; // Prevents GPU hardware culling so shader can handle it
|
||||||
|
/*
|
||||||
|
For use with models exported from Blender using the OpenVAT plugin.
|
||||||
|
Expects:
|
||||||
|
Vertex Normals - Packed (Math gets too complex to include a toggle. Making a separate shader recommended if normals are not needed.)
|
||||||
|
Use Single Row - On
|
||||||
|
Export Model - On
|
||||||
|
Model Format - glTF Binary. (Unsure why the otherse do not work)
|
||||||
|
|
||||||
|
Ensure .exr file is set to Lossless compression and MipMaps - Off.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// --- Uniforms ---
|
||||||
|
group_uniforms openVAT_inputs;
|
||||||
|
/** OpenVAT texture exported from Blender plugin. */
|
||||||
|
uniform sampler2D vertex_animation_texture : repeat_disable;
|
||||||
|
/** Min values from the .json file included with OpenVAT exports. */
|
||||||
|
uniform vec3 min_bounds;
|
||||||
|
/** Max values from the .json file included with OpenVAT exports. */
|
||||||
|
uniform vec3 max_bounds;
|
||||||
|
/** Plays animation automatically. Turn off to control manually via keyframes. */
|
||||||
|
uniform bool autoplay = true;
|
||||||
|
/**
|
||||||
|
Autoplay speed in frames per second. Defaults to 30.
|
||||||
|
[b]Blender default is 24. May require adjustment either in Blender or Here to match speed.[b]
|
||||||
|
*/
|
||||||
|
uniform float autoplay_speed = 30.0;
|
||||||
|
/** Frame to display if animating manually. */
|
||||||
|
uniform float frame = 1.0;
|
||||||
|
|
||||||
|
/** Enable this if the asset does not have 2 UV sets. */
|
||||||
|
uniform bool use_uv_1 = false;
|
||||||
|
/** Cull Mode, editable here for flexibility.
|
||||||
|
0: Backface Cull
|
||||||
|
1: Frontface Cull
|
||||||
|
2: Cull disabled (double sided rendering)*/
|
||||||
|
uniform int cull_mode : hint_enum("Back:0", "Front:1", "Disabled:2") = 0;
|
||||||
|
group_uniforms;
|
||||||
|
|
||||||
|
group_uniforms Albedo_map;
|
||||||
|
uniform sampler2D albedo_map : source_color, hint_default_white;
|
||||||
|
uniform vec4 albedo_tint : source_color = vec4(1.0);
|
||||||
|
group_uniforms;
|
||||||
|
|
||||||
|
group_uniforms ORM_inputs;
|
||||||
|
/**
|
||||||
|
[b]ORM texture.[/b] Standardized detail maps for PBR materials. Ignore, remap, or remove as needed.
|
||||||
|
[b]O[/b]cclusion (Ambient)
|
||||||
|
[b]R[/b]oughness
|
||||||
|
[b]M[/b]etallic
|
||||||
|
*/
|
||||||
|
uniform sampler2D orm_map : hint_default_white;
|
||||||
|
/** Select channel used by Occlusion map. R G [b]or[/b] B, combining will have strange results */
|
||||||
|
uniform vec4 occlusion_channel : source_color = vec4(1.0, 0.0, 0.0, 1.0);
|
||||||
|
/** Strength of Occlusion*/
|
||||||
|
uniform float occlusion : hint_range(0.0, 1.0) = 1.0;
|
||||||
|
/** Select channel used by Roughness map. R G [b]or[/b] B, combining will have strange results */
|
||||||
|
uniform vec4 roughness_channel : source_color = vec4(0.0, 1.0, 0.0, 1.0);
|
||||||
|
/** Strength of Roughness*/
|
||||||
|
uniform float roughness : hint_range(0.0, 1.0) = 1.0;
|
||||||
|
/** Select channel used by Metallic map. R G [b]or[/b] B, combining will have strange results */
|
||||||
|
uniform vec4 metallic_channel : source_color = vec4(0.0, 0.0, 1.0, 1.0);
|
||||||
|
/** Strength of Metallic*/
|
||||||
|
uniform float metallic : hint_range(0.0, 1.0) = 1.0;
|
||||||
|
/** Strength of Specular (No Map Included)*/
|
||||||
|
uniform float specular : hint_range(0.0, 1.0) = 0.5;
|
||||||
|
group_uniforms;
|
||||||
|
|
||||||
|
group_uniforms Normal_map;
|
||||||
|
uniform sampler2D normal_map : hint_roughness_normal;
|
||||||
|
uniform float normal_map_scale : hint_range(-10.0, 10.0) = 1.0;
|
||||||
|
|
||||||
|
/** Passed data from INSTANCE_CUSTOM_VARIABLE :
|
||||||
|
x : Unique Id
|
||||||
|
y : Damage effect
|
||||||
|
z : Size
|
||||||
|
**/
|
||||||
|
|
||||||
|
varying flat float unique_id;
|
||||||
|
varying flat float damage_effect;
|
||||||
|
varying flat float size;
|
||||||
|
|
||||||
|
float remapFloat(float value, float input_min, float input_max, float output_min, float output_max){
|
||||||
|
// Code to replicate the remap feature from Visual Shader.
|
||||||
|
float _input_range = input_max - input_min;
|
||||||
|
float _output_range = output_max - output_min;
|
||||||
|
return output_min + _output_range * ((value - input_min) / _input_range);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
unique_id = INSTANCE_CUSTOM.x;
|
||||||
|
damage_effect = INSTANCE_CUSTOM.y;
|
||||||
|
size = INSTANCE_CUSTOM.z;
|
||||||
|
|
||||||
|
// Animation Timing
|
||||||
|
// ------
|
||||||
|
// Divided by 2. since bottom half of texture is the normal data.
|
||||||
|
// Second argument (0) is MipMap level. These VATs use no mipmaps so always 0.
|
||||||
|
int total_frames = textureSize(vertex_animation_texture, 0).y / 2;
|
||||||
|
// Checks if Autoplaying is checked
|
||||||
|
float play_frame = autoplay ? (TIME * autoplay_speed / size) : frame;
|
||||||
|
|
||||||
|
|
||||||
|
// Loops the current frame counter so it stays between 0 and total_frames - 1
|
||||||
|
float current_frame = mod(play_frame + unique_id, float(total_frames));
|
||||||
|
|
||||||
|
// Compute UV Coordinates
|
||||||
|
// ------
|
||||||
|
// samples pixel from the center, not the edge. Avoid unwanted bleeding into normal data pixels at the end of the loop.
|
||||||
|
float center_pixel = current_frame - 0.5;
|
||||||
|
float vat_y = center_pixel / float(total_frames);
|
||||||
|
vat_y = clamp(vat_y * 0.5, 0.0, 0.5);
|
||||||
|
|
||||||
|
vec2 vat_uv = vec2((use_uv_1 ? UV.x : UV2.x), vat_y);
|
||||||
|
|
||||||
|
// Vertex Position Displacement
|
||||||
|
// ------
|
||||||
|
vec4 vat_pos_raw = texture(vertex_animation_texture, vat_uv);
|
||||||
|
// Must go through some remapping to convert Blender to Godot coordinates
|
||||||
|
vec3 offset_values = vec3(
|
||||||
|
remapFloat(vat_pos_raw.r, 0.0, 1.0, min_bounds.x, max_bounds.x),
|
||||||
|
remapFloat(vat_pos_raw.b, 0.0, 1.0, min_bounds.z, max_bounds.z),
|
||||||
|
remapFloat(vat_pos_raw.g, 1.0, 0.0, min_bounds.y, max_bounds.y)
|
||||||
|
);
|
||||||
|
VERTEX += offset_values;
|
||||||
|
|
||||||
|
// Normals. 0.5 added to UV.y to shift it down by 1/2 the map - to the normals section.
|
||||||
|
vec4 vat_norm_raw = texture(vertex_animation_texture, vat_uv + vec2(0.0, 0.5));
|
||||||
|
vec3 decoded_normals = vec3(
|
||||||
|
remapFloat(vat_norm_raw.r, 0.0, 1.0, -1.0, 1.0),
|
||||||
|
remapFloat(vat_norm_raw.b, 0.0, 1.0, -1.0, 1.0),
|
||||||
|
remapFloat(vat_norm_raw.g, 1.0, 0.0, -1.0, 1.0)
|
||||||
|
);
|
||||||
|
NORMAL = normalize(decoded_normals);
|
||||||
|
|
||||||
|
// Calculate Tangent and Binormal from computed Normal
|
||||||
|
TANGENT = normalize(vec3(abs(NORMAL.y) + abs(NORMAL.z), 0.0, -abs(NORMAL.x)));
|
||||||
|
BINORMAL = normalize(vec3(0.0, abs(NORMAL.x) + abs(NORMAL.z), -abs(NORMAL.y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
// Cull Mode
|
||||||
|
if (cull_mode == 0 && !FRONT_FACING) {
|
||||||
|
discard; // Cull back faces
|
||||||
|
}
|
||||||
|
else if (cull_mode == 1 && FRONT_FACING) {
|
||||||
|
discard; // Cull front faces
|
||||||
|
}
|
||||||
|
|
||||||
|
// Albedo
|
||||||
|
ALBEDO = texture(albedo_map, UV).rgb * albedo_tint.rgb;
|
||||||
|
|
||||||
|
EMISSION = vec3(1.,1.,1.) * damage_effect;
|
||||||
|
|
||||||
|
// ORM maps (Occlusion, Roughness, Metallic) Packing
|
||||||
|
vec4 orm_tex = texture(orm_map, UV);
|
||||||
|
AO = occlusion * dot(orm_tex.rgb, occlusion_channel.rgb);
|
||||||
|
ROUGHNESS = roughness * dot(orm_tex.rgb, roughness_channel.rgb);
|
||||||
|
METALLIC = metallic * dot(orm_tex.rgb, metallic_channel.rgb);
|
||||||
|
|
||||||
|
// Specular
|
||||||
|
SPECULAR = specular;
|
||||||
|
|
||||||
|
// Normal Map
|
||||||
|
NORMAL_MAP = texture(normal_map, UV).rgb;
|
||||||
|
NORMAL_MAP_DEPTH = normal_map_scale;
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://gjx57s1ye44t
|
||||||
|
After Width: | Height: | Size: 94 KiB |
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cmyt23s5n76ak"
|
||||||
|
path.s3tc="res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/textures/alien_base_color.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
|
After Width: | Height: | Size: 27 KiB |
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://4peb6wokfoyu"
|
||||||
|
path.s3tc="res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/textures/alien_normal.png"
|
||||||
|
dest_files=["res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=1
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=1
|
||||||
|
roughness/src_normal="res://entities/alien/assets/textures/alien_normal.png"
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="79.375mm"
|
||||||
|
height="79.375mm"
|
||||||
|
viewBox="0 0 79.375 79.375"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||||
|
sodipodi:docname="stain.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#ffffff"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="2.2375049"
|
||||||
|
inkscape:cx="130.27904"
|
||||||
|
inkscape:cy="161.78736"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs1" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Calque 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
|
||||||
|
d="M 38.600507,23.826755 C 33.435229,26.617406 23.967905,12.705978 24.302365,13.542127 c 0.334459,0.836148 5.450332,11.19757 3.488055,12.308192 -3.353618,1.898103 -18.037041,-10.71951 -18.037041,-10.71951 0,0 7.412537,9.636789 5.68581,14.548987 -1.130403,3.215773 -8.863175,5.100506 -8.863175,5.100506 0,0 9.071694,-1.522301 10.869932,1.672296 2.071801,3.680585 -4.849662,11.706082 -4.849662,11.706082 0,0 12.541637,-4.879053 15.30152,-0.585304 2.379106,3.701344 -5.936656,11.789697 -5.936656,11.789697 0,0 9.269778,-8.334192 13.766893,-6.103886 5.414476,2.685263 4.180743,17.642735 4.180743,17.642735 0,0 0.304675,-12.335049 4.962837,-14.130912 8.343511,-3.216675 23.579391,12.793076 23.579391,12.793076 0,0 -16.366284,-17.953012 -14.381755,-20.820102 1.468454,-2.121506 11.873309,3.260979 12.709459,3.428209 0.836149,0.16723 -5.713781,-3.30117 -5.184122,-5.853039 0.562559,-2.710379 7.525337,-3.511825 7.525337,-3.511825 0,0 -9.290842,-1.681472 -9.699323,-5.351351 -0.659584,-5.925848 13.378378,-11.873311 13.378378,-11.873311 0,0 -15.447192,6.786266 -17.057432,4.766048 -1.251294,-1.569883 12.040541,-8.612332 12.040541,-8.612332 0,0 -8.720738,4.194812 -12.124156,1.923143 -3.266774,-2.180465 -2.759291,-11.455237 -2.759291,-11.455237 0,0 -2.332874,6.07263 -5.016891,6.354729 -4.251764,0.446876 -9.866554,-8.194256 -9.866554,-8.194256 0,0 4.537013,11.326998 0.585304,13.461993 z"
|
||||||
|
id="path1"
|
||||||
|
sodipodi:nodetypes="asscacacacacacssacacscacaca" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
|
||||||
|
d="m 19.680232,16.465199 c 0.896728,4.593961 3.477795,7.479963 3.341915,2.902904 -0.05403,-1.819945 -3.341915,-2.902904 -3.341915,-2.902904 z"
|
||||||
|
id="path2"
|
||||||
|
sodipodi:nodetypes="czc" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
|
||||||
|
d="m 59.353071,52.958861 c -1.811385,2.713194 7.483347,6.307322 7.483347,6.307322 -1.359715,-1.888021 -6.479923,-7.810307 -7.483347,-6.307322 z"
|
||||||
|
id="path3"
|
||||||
|
sodipodi:nodetypes="scs" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ci1qyjgjvtpbj"
|
||||||
|
path.s3tc="res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/textures/stain.svg"
|
||||||
|
dest_files=["res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"os-remap": {
|
||||||
|
"Min": [
|
||||||
|
-0.2,
|
||||||
|
-0.8,
|
||||||
|
-0.4
|
||||||
|
],
|
||||||
|
"Max": [
|
||||||
|
1.0,
|
||||||
|
2.2,
|
||||||
|
4.9
|
||||||
|
],
|
||||||
|
"Frames": 12
|
||||||
|
},
|
||||||
|
"animations": {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://blpvoauvdf700"
|
||||||
|
path="res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien.glb"
|
||||||
|
dest_files=["res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"@MATERIAL:0": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/path": "uid://b48t0vv053qrt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meshes": {
|
||||||
|
"Alien_Alien_mesh": {
|
||||||
|
"generate/lightmap_uv": 0,
|
||||||
|
"generate/lods": 0,
|
||||||
|
"generate/shadow_meshes": 0,
|
||||||
|
"lods/normal_merge_angle": 20.0,
|
||||||
|
"save_to_file/enabled": true,
|
||||||
|
"save_to_file/fallback_path": "res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres",
|
||||||
|
"save_to_file/path": "uid://dmkpueem7h3gg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cbjj8cusm385o"
|
||||||
|
path="res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr"
|
||||||
|
dest_files=["res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"os-remap": {
|
||||||
|
"Min": [
|
||||||
|
-0.2,
|
||||||
|
-2.0,
|
||||||
|
-0.9
|
||||||
|
],
|
||||||
|
"Max": [
|
||||||
|
0.1,
|
||||||
|
3.4,
|
||||||
|
1.1
|
||||||
|
],
|
||||||
|
"Frames": 12
|
||||||
|
},
|
||||||
|
"animations": {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://c8b280nh1i42w"
|
||||||
|
path="res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/vat/running_alien_vat/Alien.glb"
|
||||||
|
dest_files=["res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"@MATERIAL:0": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/path": "uid://b7o0pgg1fweqq"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meshes": {
|
||||||
|
"Alien_Alien_mesh_001": {
|
||||||
|
"generate/lightmap_uv": 0,
|
||||||
|
"generate/lods": 0,
|
||||||
|
"generate/shadow_meshes": 0,
|
||||||
|
"lods/normal_merge_angle": 20.0,
|
||||||
|
"save_to_file/enabled": true,
|
||||||
|
"save_to_file/fallback_path": "res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres",
|
||||||
|
"save_to_file/path": "uid://cgv8clg8y80on"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cxy6bh1jymqsk"
|
||||||
|
path="res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr"
|
||||||
|
dest_files=["res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://hq2acth6vm2d"
|
||||||
|
path="res://.godot/imported/mecha-body.blend-9265dc8fca82c0eb6c666e9c3b7ef0a5.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/mecha/assets/3d/mecha-body.blend"
|
||||||
|
dest_files=["res://.godot/imported/mecha-body.blend-9265dc8fca82c0eb6c666e9c3b7ef0a5.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"Material": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/fallback_path": "res://common/materials/default3d.tres",
|
||||||
|
"use_external/path": "uid://41afldgohk0o"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
blender/nodes/visible=0
|
||||||
|
blender/nodes/active_collection_only=false
|
||||||
|
blender/nodes/punctual_lights=true
|
||||||
|
blender/nodes/cameras=true
|
||||||
|
blender/nodes/custom_properties=true
|
||||||
|
blender/nodes/modifiers=1
|
||||||
|
blender/meshes/vertex_colors=1
|
||||||
|
blender/meshes/uvs=true
|
||||||
|
blender/meshes/normals=true
|
||||||
|
blender/meshes/export_geometry_nodes_instances=false
|
||||||
|
blender/meshes/gpu_instances=false
|
||||||
|
blender/meshes/tangents=true
|
||||||
|
blender/meshes/skins=2
|
||||||
|
blender/meshes/export_bones_deforming_mesh_only=false
|
||||||
|
blender/materials/unpack_enabled=true
|
||||||
|
blender/materials/export_materials=1
|
||||||
|
blender/animation/limit_playback=true
|
||||||
|
blender/animation/always_sample=true
|
||||||
|
blender/animation/group_tracks=true
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cahdsj2xg25fy"
|
||||||
|
path="res://.godot/imported/mecha-leg.blend-6470342e2c60263cb402b38e461944d0.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/mecha/assets/3d/mecha-leg.blend"
|
||||||
|
dest_files=["res://.godot/imported/mecha-leg.blend-6470342e2c60263cb402b38e461944d0.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"Material": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/fallback_path": "res://common/materials/default3d.tres",
|
||||||
|
"use_external/path": "uid://41afldgohk0o"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
blender/nodes/visible=0
|
||||||
|
blender/nodes/active_collection_only=false
|
||||||
|
blender/nodes/punctual_lights=true
|
||||||
|
blender/nodes/cameras=true
|
||||||
|
blender/nodes/custom_properties=true
|
||||||
|
blender/nodes/modifiers=1
|
||||||
|
blender/meshes/vertex_colors=1
|
||||||
|
blender/meshes/uvs=true
|
||||||
|
blender/meshes/normals=true
|
||||||
|
blender/meshes/export_geometry_nodes_instances=false
|
||||||
|
blender/meshes/gpu_instances=false
|
||||||
|
blender/meshes/tangents=true
|
||||||
|
blender/meshes/skins=2
|
||||||
|
blender/meshes/export_bones_deforming_mesh_only=false
|
||||||
|
blender/materials/unpack_enabled=true
|
||||||
|
blender/materials/export_materials=1
|
||||||
|
blender/animation/limit_playback=true
|
||||||
|
blender/animation/always_sample=true
|
||||||
|
blender/animation/group_tracks=true
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
class="icon icon-tabler icons-tabler-outline icon-tabler-viewfinder"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="pointer.svg"
|
||||||
|
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs7">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="fillet_chamfer"
|
||||||
|
id="path-effect2"
|
||||||
|
is_visible="true"
|
||||||
|
lpeversion="1"
|
||||||
|
nodesatellites_param="F,0,1,1,0,3.0840606,0,1 @ F,0,1,1,0,3.0840606,0,1 @ F,0,1,1,0,3.0840606,0,1 @ F,0,0,1,0,3.0840606,0,1"
|
||||||
|
radius="0"
|
||||||
|
unit="px"
|
||||||
|
method="auto"
|
||||||
|
mode="F"
|
||||||
|
chamfer_steps="1"
|
||||||
|
flexible="false"
|
||||||
|
use_knot_distance="true"
|
||||||
|
apply_no_radius="true"
|
||||||
|
apply_with_radius="true"
|
||||||
|
only_selected="false"
|
||||||
|
hide_knots="false" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#ffffff"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:zoom="26.162951"
|
||||||
|
inkscape:cx="7.8546186"
|
||||||
|
inkscape:cy="10.855045"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
style="opacity:0.99;fill:#ffffff;stroke:none;stroke-width:7.32073;stroke-linecap:round;paint-order:stroke fill markers"
|
||||||
|
d="M 4.5637528,7.5609963 10.142119,18.132668 a 1.7858436,1.7858436 2.2539244 0 0 3.088495,0.121559 L 20.496517,6.7727607 A 1.1112523,1.1112523 52.142331 0 0 19.21332,5.1219064 L 15.745404,6.2515455 A 10.824164,10.824164 177.861 0 1 9.8175039,6.472952 L 6.1199605,5.5671764 A 1.386555,1.386555 127.9726 0 0 4.5637528,7.5609963 Z"
|
||||||
|
id="path2"
|
||||||
|
inkscape:path-effect="#path-effect2"
|
||||||
|
inkscape:original-d="M 3.1244684,4.8333801 11.581403,20.860284 22.145728,4.1667036 12.812996,7.2067483 Z"
|
||||||
|
transform="matrix(1.190867,0,0,1.190867,-2.3927323,-2.3049427)" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dvgqy34aw6xfc"
|
||||||
|
path.s3tc="res://.godot/imported/pointer.svg-f098bd9bb13ed2213cbb52b3b3bd4f05.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/mecha/assets/textures/pointer.svg"
|
||||||
|
dest_files=["res://.godot/imported/pointer.svg-f098bd9bb13ed2213cbb52b3b3bd4f05.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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=0
|
||||||
|
svg/scale=5.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
@tool
|
||||||
|
extends CharacterBody3D
|
||||||
|
class_name Mecha
|
||||||
|
|
||||||
|
const STEP_MOVE_DISPLACEMENT = 3
|
||||||
|
const RECOIL_STRENGHT = 0.5
|
||||||
|
const MOUSE_SENSIVITY = 0.01
|
||||||
|
const ZOOM_SENSIVITY = 1.
|
||||||
|
|
||||||
|
const MAX_ZOOM = 60.
|
||||||
|
const MIN_ZOOM = 15.
|
||||||
|
|
||||||
|
const MAX_HP : float = 50.
|
||||||
|
|
||||||
|
signal died
|
||||||
|
|
||||||
|
@export var hp : float = MAX_HP
|
||||||
|
|
||||||
|
@export var max_speed : float = 15.
|
||||||
|
@export var turn_speed : float = 5.
|
||||||
|
|
||||||
|
var destination := Vector2()
|
||||||
|
|
||||||
|
@onready var legs : Array[MechaLeg] = [
|
||||||
|
%Leg1,
|
||||||
|
%Leg2,
|
||||||
|
%Leg3,
|
||||||
|
%Leg4,
|
||||||
|
]
|
||||||
|
|
||||||
|
var turn_normal : Vector2 = Vector2.UP
|
||||||
|
|
||||||
|
var selected_item = 0
|
||||||
|
|
||||||
|
var current_recoil = 0.
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
for l in legs:
|
||||||
|
l.step.connect(next_leg_can_step)
|
||||||
|
|
||||||
|
|
||||||
|
func next_leg_can_step():
|
||||||
|
for l in legs:
|
||||||
|
l.can_step = false
|
||||||
|
await get_tree().create_timer(MechaLeg.STEP_DURATION / len(legs)).timeout
|
||||||
|
for l in legs:
|
||||||
|
l.can_step = true
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
if not Engine.is_editor_hint():
|
||||||
|
var target = calculate_target_position()
|
||||||
|
%Target.global_position = target
|
||||||
|
|
||||||
|
var target_turn = (Vector2(position.x,position.z) - Vector2(target.x,target.z)).normalized()
|
||||||
|
|
||||||
|
turn_normal = lerp(
|
||||||
|
turn_normal,
|
||||||
|
target_turn,
|
||||||
|
min(turn_speed * delta, 1.)
|
||||||
|
)
|
||||||
|
|
||||||
|
var speed = 0.
|
||||||
|
var item_used = false
|
||||||
|
|
||||||
|
for i in range(len(%Inventory.get_children())):
|
||||||
|
var item = %Inventory.get_children()[i]
|
||||||
|
if item is Weapon:
|
||||||
|
var used = item.process_fire(
|
||||||
|
delta,
|
||||||
|
self,
|
||||||
|
selected_item == i and Input.is_action_pressed("fire")
|
||||||
|
)
|
||||||
|
if used:
|
||||||
|
item_used = true
|
||||||
|
|
||||||
|
if not item_used and Input.is_action_pressed("move_to"):
|
||||||
|
speed = max_speed
|
||||||
|
|
||||||
|
var front_factor = 1 - (turn_normal - target_turn).length() / 2.
|
||||||
|
|
||||||
|
velocity = position.direction_to(target) * speed * front_factor
|
||||||
|
|
||||||
|
%Model.rotation.y = - turn_normal.angle()
|
||||||
|
|
||||||
|
# Recoil
|
||||||
|
%Model.position = Vector3(turn_normal.x, 0, turn_normal.y) * current_recoil * RECOIL_STRENGHT
|
||||||
|
current_recoil = lerp(current_recoil, 0., 0.5)
|
||||||
|
|
||||||
|
%StepTargets.position.x = lerp(
|
||||||
|
0,
|
||||||
|
-STEP_MOVE_DISPLACEMENT,
|
||||||
|
speed/max_speed
|
||||||
|
)
|
||||||
|
|
||||||
|
%Camera3D.look_at(self.position)
|
||||||
|
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
func calculate_target_position() -> Vector3:
|
||||||
|
var camera : Camera3D = get_viewport().get_camera_3d()
|
||||||
|
|
||||||
|
if camera:
|
||||||
|
var ray_normal := camera.project_ray_normal(get_viewport().get_mouse_position())
|
||||||
|
var ray_origin := camera.project_ray_origin(get_viewport().get_mouse_position())
|
||||||
|
|
||||||
|
var plane = Plane(Vector3.UP, 0)
|
||||||
|
var intersection = plane.intersects_ray(ray_origin, ray_normal)
|
||||||
|
if intersection:
|
||||||
|
return intersection
|
||||||
|
return global_position
|
||||||
|
|
||||||
|
func get_target_angle() -> float:
|
||||||
|
return - turn_normal.angle() + PI / 2
|
||||||
|
|
||||||
|
func get_projectile_spwan_point() -> Vector3:
|
||||||
|
return global_position + Vector3.UP * 2.
|
||||||
|
|
||||||
|
func add_recoil(recoil : = 1.):
|
||||||
|
current_recoil += recoil
|
||||||
|
|
||||||
|
func hit(damage = 1.):
|
||||||
|
hp = max(0, hp - damage)
|
||||||
|
if hp == 0:
|
||||||
|
die()
|
||||||
|
|
||||||
|
func die():
|
||||||
|
died.emit()
|
||||||
|
|
||||||
|
func _unhandled_input(event):
|
||||||
|
if Input.is_action_just_pressed("zoom_in"):
|
||||||
|
%Camera3D.position.z = max(MIN_ZOOM, %Camera3D.position.z - ZOOM_SENSIVITY)
|
||||||
|
if Input.is_action_just_pressed("zoom_out"):
|
||||||
|
%Camera3D.position.z = min(MAX_ZOOM, %Camera3D.position.z + ZOOM_SENSIVITY)
|
||||||
|
if event is InputEventMouseMotion and Input.is_action_pressed("turn_camera") and Input.mouse_mode == Input.MOUSE_MODE_VISIBLE:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
|
%CameraPivot.rotation.y -= event.relative.x * MOUSE_SENSIVITY
|
||||||
|
%CameraPivot.rotation.x -= event.relative.y * MOUSE_SENSIVITY
|
||||||
|
if %CameraPivot.rotation.x > deg_to_rad(-20):
|
||||||
|
%CameraPivot.rotation.x = deg_to_rad(-20)
|
||||||
|
if %CameraPivot.rotation.x < deg_to_rad(-80):
|
||||||
|
%CameraPivot.rotation.x = deg_to_rad(-80)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bbjxgsv6p27ly
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
[gd_scene format=3 uid="uid://0t1qprxnrxpw"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bbjxgsv6p27ly" path="res://entities/mecha/mecha.gd" id="1_ariye"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://hq2acth6vm2d" path="res://entities/mecha/assets/3d/mecha-body.blend" id="1_wfen8"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dhgclnvdm41nl" path="res://entities/mecha/mecha_leg.tscn" id="2_p6u1l"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dvgqy34aw6xfc" path="res://entities/mecha/assets/textures/pointer.svg" id="4_ua006"]
|
||||||
|
[ext_resource type="Script" uid="uid://7s4jtqkpp21e" path="res://entities/mecha/weapons/gatling/gatling.gd" id="5_pfbkk"]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_g4v7s"]
|
||||||
|
height = 5.0075684
|
||||||
|
radius = 2.546875
|
||||||
|
|
||||||
|
[node name="Mecha" type="CharacterBody3D" unique_id=608967332]
|
||||||
|
axis_lock_linear_y = true
|
||||||
|
axis_lock_angular_x = true
|
||||||
|
axis_lock_angular_z = true
|
||||||
|
motion_mode = 1
|
||||||
|
script = ExtResource("1_ariye")
|
||||||
|
max_speed = 20.0
|
||||||
|
|
||||||
|
[node name="Model" type="Node3D" parent="." unique_id=1153097662]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="mecha-body" parent="Model" unique_id=479724907 instance=ExtResource("1_wfen8")]
|
||||||
|
transform = Transform3D(1.3113416e-07, 0, -1, 0, 1, 0, 1, 0, 1.3113416e-07, 0, 2, 0)
|
||||||
|
|
||||||
|
[node name="Leg1" parent="Model" unique_id=1161871766 instance=ExtResource("2_p6u1l")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-0.70710665, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, -0.70710665, 0, 2, 0)
|
||||||
|
step_target_path = NodePath("../StepTargets/Marker3D")
|
||||||
|
|
||||||
|
[node name="Leg2" parent="Model" unique_id=1040806054 instance=ExtResource("2_p6u1l")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(0.70710677, 0, -0.70710665, 0, 1, 0, 0.70710665, 0, 0.70710677, 0, 2, 0)
|
||||||
|
step_target_path = NodePath("../StepTargets/Marker3D2")
|
||||||
|
|
||||||
|
[node name="Leg3" parent="Model" unique_id=636817449 instance=ExtResource("2_p6u1l")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(0.70710665, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710665, 0, 2, 0)
|
||||||
|
step_target_path = NodePath("../StepTargets/Marker3D3")
|
||||||
|
|
||||||
|
[node name="Leg4" parent="Model" unique_id=373252400 instance=ExtResource("2_p6u1l")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-0.70710677, 0, 0.70710665, 0, 1, 0, -0.70710665, 0, -0.70710677, 0, 2, 0)
|
||||||
|
step_target_path = NodePath("../StepTargets/Marker3D4")
|
||||||
|
|
||||||
|
[node name="StepTargets" type="Node3D" parent="Model" unique_id=1107229276]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Marker3D" type="Marker3D" parent="Model/StepTargets" unique_id=1883887265]
|
||||||
|
transform = Transform3D(-0.7071066, 0, -0.7071067, 0, 1, 0, 0.7071067, 0, -0.7071066, -2.1213202, 0, 2.1213205)
|
||||||
|
|
||||||
|
[node name="Marker3D2" type="Marker3D" parent="Model/StepTargets" unique_id=2083428784]
|
||||||
|
transform = Transform3D(0.7071067, 0, -0.7071066, 0, 1, 0, 0.7071066, 0, 0.7071067, 2.1213205, 0, 2.1213202)
|
||||||
|
|
||||||
|
[node name="Marker3D3" type="Marker3D" parent="Model/StepTargets" unique_id=203630463]
|
||||||
|
transform = Transform3D(0.7071066, 0, 0.7071067, 0, 1, 0, -0.7071067, 0, 0.7071066, 2.12132, 0, -2.1213207)
|
||||||
|
|
||||||
|
[node name="Marker3D4" type="Marker3D" parent="Model/StepTargets" unique_id=1646251219]
|
||||||
|
transform = Transform3D(-0.7071067, 0, 0.7071066, 0, 1, 0, -0.7071066, 0, -0.7071067, -2.1213207, 0, -2.1213205)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=781282910]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5037842, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_g4v7s")
|
||||||
|
|
||||||
|
[node name="TargetContainer" type="Node" parent="." unique_id=857862335]
|
||||||
|
|
||||||
|
[node name="Target" type="Node3D" parent="TargetContainer" unique_id=871238190]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="TargetContainer/Target" unique_id=328289766]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9376632, -0.07640457)
|
||||||
|
modulate = Color(0.79607844, 0.2627451, 0.3647059, 1)
|
||||||
|
pixel_size = 0.02
|
||||||
|
billboard = 1
|
||||||
|
no_depth_test = true
|
||||||
|
texture = ExtResource("4_ua006")
|
||||||
|
|
||||||
|
[node name="CameraPivot" type="Node3D" parent="." unique_id=1668504271]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.8660253, 0.49999997, 0, -0.49999997, 0.8660253, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="CameraPivot" unique_id=2082056518]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
|
||||||
|
|
||||||
|
[node name="Inventory" type="Node3D" parent="." unique_id=1873054596]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Gatling" type="Node" parent="Inventory" unique_id=2131873567]
|
||||||
|
script = ExtResource("5_pfbkk")
|
||||||
|
metadata/_custom_type_script = "uid://7s4jtqkpp21e"
|
||||||
|
|
||||||
|
[editable path="Model/mecha-body"]
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
@tool
|
||||||
|
extends Node3D
|
||||||
|
class_name MechaLeg
|
||||||
|
|
||||||
|
const STEP_DURATION = 0.15
|
||||||
|
signal step
|
||||||
|
|
||||||
|
@export_node_path("Node3D") var step_target_path : NodePath
|
||||||
|
@onready var local_target : Node3D = %LocalTarget
|
||||||
|
|
||||||
|
@export var step_distance: float = 5
|
||||||
|
|
||||||
|
@export var can_step = true
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
if step_target_path and can_step:
|
||||||
|
var step_target : Node3D = get_node(step_target_path) as Node3D
|
||||||
|
var dist := step_target.global_position.distance_to(local_target.global_position)
|
||||||
|
if dist > step_distance:
|
||||||
|
step.emit()
|
||||||
|
tween_step(get_node(step_target_path).global_position)
|
||||||
|
|
||||||
|
|
||||||
|
func tween_step(target_pos: Vector3):
|
||||||
|
var tween = create_tween().set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT)
|
||||||
|
|
||||||
|
tween.set_parallel(true)
|
||||||
|
tween.tween_property(local_target, "global_position:x", target_pos.x, STEP_DURATION * 0.7)
|
||||||
|
tween.tween_property(local_target, "global_position:z", target_pos.z, STEP_DURATION * 0.7)
|
||||||
|
tween.tween_property(local_target, "global_position:y", target_pos.y + 1.5, STEP_DURATION * 0.5)
|
||||||
|
tween.set_parallel(false)
|
||||||
|
tween.tween_property(local_target, "global_position:y", target_pos.y, STEP_DURATION * 0.3)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://brd008shv85w7
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dhgclnvdm41nl"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cahdsj2xg25fy" path="res://entities/mecha/assets/3d/mecha-leg.blend" id="1_h7rhd"]
|
||||||
|
[ext_resource type="Script" uid="uid://brd008shv85w7" path="res://entities/mecha/mecha_leg.gd" id="1_rf6lx"]
|
||||||
|
|
||||||
|
[node name="MechaLeg" type="Node3D" unique_id=1161871766]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.673074, 0.8926722, -2.4868906)
|
||||||
|
script = ExtResource("1_rf6lx")
|
||||||
|
step_target_path = NodePath("StepTarget")
|
||||||
|
step_distance = 4.0
|
||||||
|
|
||||||
|
[node name="StepTarget" type="Marker3D" parent="." unique_id=1875541333]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -2, 0)
|
||||||
|
|
||||||
|
[node name="mecha-leg" parent="." unique_id=597959552 instance=ExtResource("1_h7rhd")]
|
||||||
|
transform = Transform3D(0.83249575, -0.55403143, 0, 0.55403143, 0.83249575, 0, 0, 0, 1, -0.018096328, 0, -0.013853073)
|
||||||
|
|
||||||
|
[node name="Skeleton3D" parent="mecha-leg/Armature" parent_id_path=PackedInt32Array(597959552, 1015042136) index="0" unique_id=1015525704]
|
||||||
|
bones/0/rotation = Quaternion(-3.2671387e-08, -1.890937e-08, -0.86549115, 0.5009242)
|
||||||
|
bones/0/scale = Vector3(0.99999994, 0.99999994, 1)
|
||||||
|
bones/1/position = Vector3(7.566918e-08, 2, -1.2818292e-14)
|
||||||
|
bones/1/rotation = Quaternion(-2.992432e-08, 6.2881918e-15, -0.39635947, 0.9180954)
|
||||||
|
bones/1/scale = Vector3(1.0000002, 1.0000002, 1)
|
||||||
|
bones/2/position = Vector3(6.1847814e-08, 2.1000001, 3.2634116e-14)
|
||||||
|
bones/2/rotation = Quaternion(-2.8624317e-08, -1.0078329e-14, -0.3791404, 0.92533916)
|
||||||
|
|
||||||
|
[node name="Bone_001" parent="mecha-leg/Armature/Skeleton3D" index="0" unique_id=442116879]
|
||||||
|
transform = Transform3D(-0.91758627, -0.39747998, 0.006730333, 0.39629143, -0.9132409, 0.094576165, -0.031445723, 0.089448966, 0.9954949, 1.6874223, -1.0735638, 0.008158923)
|
||||||
|
|
||||||
|
[node name="Bone" parent="mecha-leg/Armature/Skeleton3D" index="1" unique_id=1147044007]
|
||||||
|
transform = Transform3D(-0.5367859, 0.84371114, -0.00349133, -0.8437184, -0.53678185, 0.0021121316, -9.205331e-05, 0.0040794616, 0.99999166, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="CCDIK3D" type="CCDIK3D" parent="mecha-leg/Armature/Skeleton3D" index="2" unique_id=720183381]
|
||||||
|
angular_delta_limit = 0.606676447993229
|
||||||
|
deterministic = true
|
||||||
|
setting_count = 1
|
||||||
|
settings/0/target_node = NodePath("../../../../Node/LocalTarget")
|
||||||
|
settings/0/root_bone_name = "Bone"
|
||||||
|
settings/0/root_bone = 0
|
||||||
|
settings/0/end_bone_name = "Bone.002"
|
||||||
|
settings/0/end_bone = 2
|
||||||
|
settings/0/extend_end_bone = false
|
||||||
|
settings/0/joint_count = 3
|
||||||
|
settings/0/joints/0/rotation_axis = 3
|
||||||
|
settings/0/joints/0/limitation = null
|
||||||
|
settings/0/joints/1/rotation_axis = 3
|
||||||
|
settings/0/joints/1/limitation = null
|
||||||
|
settings/0/joints/2/rotation_axis = 3
|
||||||
|
settings/0/joints/2/limitation = null
|
||||||
|
|
||||||
|
[node name="Node" type="Node" parent="." unique_id=196901171]
|
||||||
|
|
||||||
|
[node name="LocalTarget" type="Marker3D" parent="Node" unique_id=1076144472]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3219225, -1.137534, -2.3036175)
|
||||||
|
|
||||||
|
[editable path="mecha-leg"]
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
extends Node3D
|
||||||
|
class_name Bullet
|
||||||
|
|
||||||
|
const MAX_LIFETIME = 3.
|
||||||
|
|
||||||
|
var damage : float = 10.
|
||||||
|
var speed : float = 150.
|
||||||
|
var lifetime : float = 0.
|
||||||
|
|
||||||
|
@onready var raycast : RayCast3D = %RayCast3D
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
lifetime += delta
|
||||||
|
position += transform.basis * Vector3(0,0,-speed) * delta
|
||||||
|
|
||||||
|
if raycast.is_colliding():
|
||||||
|
if raycast.get_collider() is Alien:
|
||||||
|
raycast.get_collider().hit(damage)
|
||||||
|
queue_free()
|
||||||
|
if raycast.get_collider() is StaticBody3D:
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
if lifetime > MAX_LIFETIME:
|
||||||
|
queue_free()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://es5nf3pho7t1
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[gd_scene format=3 uid="uid://da2dnjy802y1l"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://es5nf3pho7t1" path="res://entities/mecha/weapons/gatling/bullet/bullet.gd" id="1_s22gb"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleMesh" id="CapsuleMesh_yf5fn"]
|
||||||
|
radius = 0.328125
|
||||||
|
height = 2.694336
|
||||||
|
radial_segments = 4
|
||||||
|
rings = 1
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"]
|
||||||
|
shading_mode = 0
|
||||||
|
albedo_color = Color(0.99215686, 0.9372549, 0.56078434, 1)
|
||||||
|
disable_receive_shadows = true
|
||||||
|
|
||||||
|
[node name="Bullet" type="Node3D" unique_id=226363088]
|
||||||
|
script = ExtResource("1_s22gb")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=564603597]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0)
|
||||||
|
mesh = SubResource("CapsuleMesh_yf5fn")
|
||||||
|
surface_material_override/0 = SubResource("StandardMaterial3D_57qmd")
|
||||||
|
|
||||||
|
[node name="RayCast3D" type="RayCast3D" parent="." unique_id=888262706]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, -1.3228955)
|
||||||
|
target_position = Vector3(0, -3, 0)
|
||||||
|
collide_with_areas = true
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
extends Weapon
|
||||||
|
class_name Gatling
|
||||||
|
|
||||||
|
const BULLET_SCENE : PackedScene = preload("res://entities/mecha/weapons/gatling/bullet/bullet.tscn")
|
||||||
|
|
||||||
|
var max_bullet_rate : float = 100.
|
||||||
|
var min_bullet_rate : float = 1.
|
||||||
|
var bullet_dispersion : float = 0.03
|
||||||
|
var bullet_rate := min_bullet_rate
|
||||||
|
var bullet_acc = 0.1
|
||||||
|
var bullet_decc = 1.
|
||||||
|
var time_shooting = 0.
|
||||||
|
|
||||||
|
func process_fire(delta : float, mecha : Mecha, shoot : bool) -> bool:
|
||||||
|
if shoot:
|
||||||
|
bullet_rate = lerp(
|
||||||
|
bullet_rate,
|
||||||
|
max_bullet_rate,
|
||||||
|
min(bullet_acc * delta, 1)
|
||||||
|
)
|
||||||
|
else :
|
||||||
|
bullet_rate = lerp(
|
||||||
|
bullet_rate,
|
||||||
|
min_bullet_rate,
|
||||||
|
min(bullet_decc * delta, 1)
|
||||||
|
)
|
||||||
|
|
||||||
|
time_shooting += delta
|
||||||
|
|
||||||
|
if shoot:
|
||||||
|
for i in range(roundi(bullet_rate * time_shooting)):
|
||||||
|
time_shooting -= 1/bullet_rate
|
||||||
|
shoot_bullet(mecha)
|
||||||
|
else :
|
||||||
|
time_shooting = 0.
|
||||||
|
return shoot
|
||||||
|
|
||||||
|
func shoot_bullet(mecha : Mecha,):
|
||||||
|
var new_bullet : Bullet = BULLET_SCENE.instantiate()
|
||||||
|
new_bullet.rotation.y = mecha.get_target_angle()
|
||||||
|
new_bullet.position = mecha.get_projectile_spwan_point()
|
||||||
|
mecha.add_recoil()
|
||||||
|
add_child(new_bullet)
|
||||||
|
new_bullet.rotation += Vector3(
|
||||||
|
randf_range(-bullet_dispersion, bullet_dispersion),
|
||||||
|
randf_range(-bullet_dispersion, bullet_dispersion),
|
||||||
|
randf_range(-bullet_dispersion, bullet_dispersion)
|
||||||
|
)
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://7s4jtqkpp21e
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
@abstract
|
||||||
|
extends Node
|
||||||
|
class_name Weapon
|
||||||
|
|
||||||
|
@abstract func process_fire(delta : float, mecha : Mecha, shoot : bool) -> bool
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cyonrs821lwwg
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
extends Node
|
||||||
|
class_name GameGui
|
||||||
|
|
||||||
|
@export var mecha : Mecha
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
%FPSCount.text = "%d fps" % Engine.get_frames_per_second()
|
||||||
|
if mecha:
|
||||||
|
%HPProgressBar.value = lerp(
|
||||||
|
%HPProgressBar.value,
|
||||||
|
(mecha.hp / Mecha.MAX_HP) * 100.,
|
||||||
|
0.5,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
printerr("Missing mecha in GameGui")
|
||||||
|
|
||||||
|
func show_lose_gui():
|
||||||
|
%LooseAnimationPlayer.play("Appear")
|
||||||
|
|
||||||
|
func _on_retry_button_pressed():
|
||||||
|
get_tree().paused = false
|
||||||
|
get_tree().reload_current_scene()
|
||||||
|
|
||||||