My first 3D game with Godot 4.4

This commit is contained in:
2025-08-18 18:48:02 -04:00
commit aef6af1eca
89 changed files with 10495 additions and 0 deletions

10
mob/bat/bat_mob_mat.tres Normal file
View File

@@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://vxjmb87ocrs3"]
[ext_resource type="Texture2D" uid="uid://2qvp3lxbf3ae" path="res://mob/bat/bat_model_bat_palette.png" id="1_sri6l"]
[resource]
resource_local_to_scene = true
resource_name = "bat_mat"
cull_mode = 2
albedo_texture = ExtResource("1_sri6l")
roughness = 0.427273

BIN
mob/bat/bat_model.glb Normal file

Binary file not shown.

1839
mob/bat/bat_model.glb.import Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2qvp3lxbf3ae"
path.s3tc="res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.s3tc.ctex"
path.etc2="res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://mob/bat/bat_model_bat_palette.png"
dest_files=["res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.s3tc.ctex", "res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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

47
mob/bat_mob.gd Normal file
View File

@@ -0,0 +1,47 @@
extends RigidBody3D
signal died
@onready var bat_model: Node3D = %bat_model
@onready var player: CharacterBody3D = get_node("/root/Game/Player")
@onready var corpse_timer: Timer = $CorpseTimer
@onready var hurt_box: Area3D = %HurtBox
var speed = randf_range(2.0, 4.0)
var health = 100.0
func take_damage(damage: float = 25.0) -> void:
if is_zero_approx(health):
return # catch shooting mob on ground and stopping it from despawning
else:
%HurtSound.play()
bat_model.hurt()
health = clampf((health - damage), 0.0, health)
if is_zero_approx(health):
# TODO: do more with this
set_physics_process(false)
gravity_scale = 1.0
%DieSound.play()
var die_direction = global_position.direction_to(player.global_position) * -1.0
var blerg_force = Vector3.UP * randf_range(2.0, 5.0)
apply_central_impulse(die_direction * 8.0 + blerg_force)
died.emit()
corpse_timer.start()
func _on_corpse_timer_timeout() -> void:
queue_free()
func _physics_process(delta: float) -> void:
var direction: Vector3 = global_position.direction_to(player.global_position)
direction.y = 0.0
linear_velocity = direction * speed
bat_model.rotation.y = Vector3.MODEL_FRONT.signed_angle_to(direction, Vector3.UP)
var targets = hurt_box.get_overlapping_bodies()
if not targets.is_empty():
for t in targets:
if t.has_method("hurt"):
t.hurt(5*delta)

1
mob/bat_mob.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://c0nx5q5ppfatt

81
mob/bat_mob.tscn Normal file
View File

@@ -0,0 +1,81 @@
[gd_scene load_steps=9 format=3 uid="uid://3t7u0llrbbi"]
[ext_resource type="Script" uid="uid://c0nx5q5ppfatt" path="res://mob/bat_mob.gd" id="1_0ebaf"]
[ext_resource type="PackedScene" uid="uid://gvin6dmn1uk8" path="res://mob/bat_model.tscn" id="1_1xugm"]
[ext_resource type="Texture2D" uid="uid://2qvp3lxbf3ae" path="res://mob/bat/bat_model_bat_palette.png" id="3_yuo4x"]
[ext_resource type="AudioStream" uid="uid://cvge1n06euj5o" path="res://mob/mob_take_damage.wav" id="4_mjy8e"]
[ext_resource type="AudioStream" uid="uid://hghb3bqm52oh" path="res://mob/mob_ko.wav" id="5_5et38"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_0ebaf"]
height = 1.4
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iwjed"]
resource_local_to_scene = true
resource_name = "bat_mat"
cull_mode = 2
albedo_texture = ExtResource("3_yuo4x")
roughness = 0.427273
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yuo4x"]
height = 1.6
[node name="BatMob" type="RigidBody3D"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
collision_layer = 2
gravity_scale = 0.0
script = ExtResource("1_0ebaf")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(-2.62268e-08, 0.6, 0, -0.6, -2.62268e-08, 0, 0, 0, 0.6, 0, 0, 0)
shape = SubResource("CapsuleShape3D_0ebaf")
[node name="bat_model" parent="." instance=ExtResource("1_1xugm")]
unique_name_in_owner = true
[node name="Skeleton3D" parent="bat_model/Armature" index="0"]
bones/0/position = Vector3(0, -0.0173995, 0)
bones/1/rotation = Quaternion(0.0455521, 0.109607, -0.618641, 0.776656)
bones/2/rotation = Quaternion(-0.129224, -0.0444413, 0.324096, 0.936102)
bones/3/rotation = Quaternion(-0.201664, -0.00156411, 0.238139, 0.950063)
bones/4/rotation = Quaternion(0.0455521, -0.109607, 0.618641, 0.776656)
bones/5/rotation = Quaternion(-0.129224, 0.0444413, -0.324096, 0.936102)
bones/6/rotation = Quaternion(-0.201664, 0.00156411, -0.238139, 0.950063)
bones/7/position = Vector3(0.130992, -0.227392, -0.0878515)
bones/7/rotation = Quaternion(0.261968, 0.0834552, 0.265751, 0.924005)
bones/8/rotation = Quaternion(3.46134e-08, 0.550375, 0.834917, 2.3571e-08)
bones/10/position = Vector3(-0.130992, -0.227392, -0.0878515)
bones/10/rotation = Quaternion(0.261968, -0.0834552, -0.265751, 0.924005)
bones/11/rotation = Quaternion(2.41321e-08, 0.550375, 0.834917, 3.92162e-08)
[node name="bat" parent="bat_model/Armature/Skeleton3D" index="0"]
surface_material_override/0 = SubResource("StandardMaterial3D_iwjed")
[node name="CorpseTimer" type="Timer" parent="."]
wait_time = 5.0
one_shot = true
[node name="HurtSound" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = ExtResource("4_mjy8e")
volume_db = -20.0
max_db = 1.0
[node name="DieSound" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = ExtResource("5_5et38")
volume_db = -20.0
max_db = 1.0
[node name="HurtBox" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="HurtBox"]
transform = Transform3D(0.45, -3.93403e-08, 3.93403e-08, 3.93403e-08, -1.96701e-08, -0.45, 3.93403e-08, 0.45, -1.96701e-08, -1.74846e-08, 0, 0.2)
shape = SubResource("CapsuleShape3D_yuo4x")
debug_color = Color(0.894118, 0.254902, 0.482353, 0.607843)
[connection signal="timeout" from="CorpseTimer" to="." method="_on_corpse_timer_timeout"]
[editable path="bat_model"]

10
mob/bat_model.gd Normal file
View File

@@ -0,0 +1,10 @@
extends Node3D
@onready var animation_tree: AnimationTree = %AnimationTree
@onready var animation_player: AnimationPlayer = $AnimationPlayer
func hurt() -> void:
animation_tree.set("parameters/OneShot/request", true)
func die() -> void:
animation_player.pause()

1
mob/bat_model.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://cgv01dthn7641

223
mob/bat_model.tscn Normal file
View File

@@ -0,0 +1,223 @@
[gd_scene load_steps=13 format=3 uid="uid://gvin6dmn1uk8"]
[ext_resource type="PackedScene" uid="uid://hglc5k68m7d1" path="res://mob/bat/bat_model.glb" id="1_12yrx"]
[ext_resource type="Script" uid="uid://cgv01dthn7641" path="res://mob/bat_model.gd" id="2_dmdl0"]
[ext_resource type="Material" uid="uid://vxjmb87ocrs3" path="res://mob/bat/bat_mob_mat.tres" id="2_vofu1"]
[sub_resource type="Animation" id="Animation_0gbdx"]
resource_name = "Idle"
length = 1.33333
loop_mode = 1
tracks/0/type = "position_3d"
tracks/0/imported = true
tracks/0/enabled = true
tracks/0/path = NodePath("Armature/Skeleton3D:body")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0, -0.0074, 0, 0.0333333, 1, 0, -0.0142, 0, 0.0666667, 1, 0, -0.0198, 0, 0.1, 1, 0, -0.0236, 0, 0.166667, 1, 0, -0.0236, 0, 0.2, 1, 0, -0.0198, 0, 0.233333, 1, 0, -0.0142, 0, 0.266667, 1, 0, -0.0074, 0, 0.333333, 1, 0, 0.00739999, 0, 0.366667, 1, 0, 0.0142, 0, 0.4, 1, 0, 0.0198, 0, 0.433333, 1, 0, 0.0236, 0, 0.5, 1, 0, 0.0236, 0, 0.533333, 1, 0, 0.0198, 0, 0.566667, 1, 0, 0.0142, 0, 0.6, 1, 0, 0.00739999, 0, 0.666667, 1, 0, -0.0074, 0, 0.7, 1, 0, -0.0142, 0, 0.733333, 1, 0, -0.0198, 0, 0.766667, 1, 0, -0.0236, 0, 0.833333, 1, 0, -0.0236, 0, 0.866667, 1, 0, -0.0198, 0, 0.9, 1, 0, -0.0142, 0, 0.933333, 1, 0, -0.0074, 0, 1, 1, 0, 0.00739999, 0, 1.03333, 1, 0, 0.0142, 0, 1.06667, 1, 0, 0.0198, 0, 1.1, 1, 0, 0.0236, 0, 1.16667, 1, 0, 0.0236, 0, 1.2, 1, 0, 0.0198, 0, 1.23333, 1, 0, 0.0142, 0, 1.26667, 1, 0, 0.00739999, 0, 1.33333, 1, 0, -0.0074, 0)
tracks/1/type = "rotation_3d"
tracks/1/imported = true
tracks/1/enabled = true
tracks/1/path = NodePath("Armature/Skeleton3D:wing_1.L")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = PackedFloat32Array(0, 1, -0.0286549, 0.188485, -0.686718, 0.701478, 0.0333333, 1, -0.0506094, 0.208724, -0.677509, 0.703459, 0.0666667, 1, -0.0610847, 0.215431, -0.666256, 0.71131, 0.1, 1, -0.05709, 0.207045, -0.655256, 0.724233, 0.133333, 1, -0.0396006, 0.186493, -0.644631, 0.74034, 0.166667, 1, -0.0107812, 0.157663, -0.633842, 0.757147, 0.2, 1, 0.0267386, 0.12419, -0.622616, 0.772147, 0.266667, 1, 0.114195, 0.0556545, -0.600903, 0.789163, 0.3, 1, 0.155982, 0.0253652, -0.59312, 0.789452, 0.333333, 1, 0.190651, 6.60251e-05, -0.590026, 0.784552, 0.366667, 1, 0.213966, -0.0185891, -0.593371, 0.775747, 0.4, 1, 0.222174, -0.0279345, -0.602828, 0.765805, 0.433333, 1, 0.213282, -0.0252487, -0.61726, 0.756877, 0.466667, 1, 0.19033, -0.0110549, -0.634785, 0.7488, 0.5, 1, 0.157487, 0.0130927, -0.653025, 0.740665, 0.533333, 1, 0.118744, 0.045142, -0.669545, 0.731827, 0.6, 1, 0.0378164, 0.121276, -0.689637, 0.712925, 0.633333, 1, 0.001578, 0.158023, -0.691096, 0.705275, 0.666667, 1, -0.0286549, 0.188485, -0.686718, 0.701478, 0.7, 1, -0.0506094, 0.208724, -0.677509, 0.703459, 0.733333, 1, -0.0610847, 0.215431, -0.666256, 0.71131, 0.766667, 1, -0.05709, 0.207045, -0.655256, 0.724233, 0.8, 1, -0.0396006, 0.186493, -0.644631, 0.74034, 0.833333, 1, -0.0107812, 0.157663, -0.633842, 0.757147, 0.866667, 1, 0.0267386, 0.12419, -0.622616, 0.772147, 0.933333, 1, 0.114195, 0.0556545, -0.600903, 0.789163, 0.966667, 1, 0.155982, 0.0253652, -0.59312, 0.789452, 1, 1, 0.190651, 6.60251e-05, -0.590026, 0.784552, 1.03333, 1, 0.213966, -0.0185891, -0.593371, 0.775747, 1.06667, 1, 0.222174, -0.0279345, -0.602828, 0.765805, 1.1, 1, 0.213282, -0.0252487, -0.61726, 0.756877, 1.13333, 1, 0.19033, -0.0110549, -0.634785, 0.7488, 1.16667, 1, 0.157487, 0.0130927, -0.653025, 0.740665, 1.2, 1, 0.118744, 0.045142, -0.669545, 0.731827, 1.26667, 1, 0.0378164, 0.121276, -0.689637, 0.712925, 1.3, 1, 0.001578, 0.158023, -0.691096, 0.705275, 1.33333, 1, -0.0286549, 0.188485, -0.686718, 0.701478)
tracks/2/type = "rotation_3d"
tracks/2/imported = true
tracks/2/enabled = true
tracks/2/path = NodePath("Armature/Skeleton3D:wing_2.L")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = PackedFloat32Array(0, 1, -0.0560155, -0.016041, 0.274838, 0.959724, 0.0333333, 1, -0.107724, -0.0293087, 0.260889, 0.958892, 0.0666667, 1, -0.150109, -0.0400536, 0.254681, 0.954464, 0.1, 1, -0.178377, -0.0485314, 0.258005, 0.948293, 0.133333, 1, -0.188128, -0.0538743, 0.269983, 0.94277, 0.166667, 1, -0.176689, -0.0543572, 0.288976, 0.939318, 0.2, 1, -0.147367, -0.0491943, 0.312801, 0.937026, 0.233333, 1, -0.104947, -0.0380736, 0.338908, 0.934172, 0.266667, 1, -0.0542423, -0.0212793, 0.364585, 0.929345, 0.3, 1, 4.35922e-07, 2.55374e-07, 0.387197, 0.921997, 0.333333, 1, 0.0532716, 0.023607, 0.404457, 0.912699, 0.366667, 1, 0.101459, 0.0465808, 0.414628, 0.903117, 0.4, 1, 0.140874, 0.0655118, 0.416552, 0.895738, 0.433333, 1, 0.168002, 0.0771313, 0.410045, 0.893134, 0.466667, 1, 0.178911, 0.0792831, 0.397312, 0.896576, 0.5, 1, 0.170442, 0.0715782, 0.380524, 0.906106, 0.533333, 1, 0.14463, 0.056739, 0.360771, 0.919623, 0.566667, 1, 0.104948, 0.0380741, 0.338908, 0.934172, 0.6, 1, 0.0552696, 0.0184505, 0.316108, 0.946932, 0.633333, 1, 3.97739e-07, 2.93199e-07, 0.294044, 0.955792, 0.666667, 1, -0.0560155, -0.016041, 0.274838, 0.959724, 0.7, 1, -0.107724, -0.0293087, 0.260889, 0.958892, 0.733333, 1, -0.150109, -0.0400536, 0.254681, 0.954464, 0.766667, 1, -0.178377, -0.0485314, 0.258005, 0.948293, 0.8, 1, -0.188128, -0.0538743, 0.269983, 0.94277, 0.833333, 1, -0.176689, -0.0543572, 0.288976, 0.939318, 0.866667, 1, -0.147367, -0.0491943, 0.312801, 0.937026, 0.9, 1, -0.104947, -0.0380736, 0.338908, 0.934172, 0.933333, 1, -0.0542423, -0.0212793, 0.364585, 0.929345, 0.966667, 1, 4.35922e-07, 2.55374e-07, 0.387197, 0.921997, 1, 1, 0.0532716, 0.023607, 0.404457, 0.912699, 1.03333, 1, 0.101459, 0.0465808, 0.414628, 0.903117, 1.06667, 1, 0.140874, 0.0655118, 0.416552, 0.895738, 1.1, 1, 0.168002, 0.0771313, 0.410045, 0.893134, 1.13333, 1, 0.178911, 0.0792831, 0.397312, 0.896576, 1.16667, 1, 0.170442, 0.0715782, 0.380524, 0.906106, 1.2, 1, 0.14463, 0.056739, 0.360771, 0.919623, 1.23333, 1, 0.104948, 0.0380741, 0.338908, 0.934172, 1.26667, 1, 0.0552696, 0.0184505, 0.316108, 0.946932, 1.3, 1, 3.97739e-07, 2.93199e-07, 0.294044, 0.955792, 1.33333, 1, -0.0560155, -0.016041, 0.274838, 0.959723)
tracks/3/type = "rotation_3d"
tracks/3/imported = true
tracks/3/enabled = true
tracks/3/path = NodePath("Armature/Skeleton3D:wing_3.L")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = PackedFloat32Array(0, 1, 0.0412136, 0.059985, 0.264753, 0.961566, 0.0333333, 1, -0.0159354, 0.0440908, 0.244883, 0.968419, 0.0666667, 1, -0.073461, 0.0305335, 0.228073, 0.970389, 0.1, 1, -0.126218, 0.0194948, 0.21651, 0.967891, 0.133333, 1, -0.169154, 0.0105836, 0.212432, 0.962366, 0.166667, 1, -0.197486, 0.00342183, 0.217359, 0.955899, 0.2, 1, -0.20688, -0.00128304, 0.230104, 0.950921, 0.233333, 1, -0.194684, -0.00193852, 0.248813, 0.948782, 0.266667, 1, -0.164213, 0.00231133, 0.271453, 0.948336, 0.3, 1, -0.120273, 0.011884, 0.29574, 0.947592, 0.333333, 1, -0.0677396, 0.0266105, 0.319228, 0.944879, 0.366667, 1, -0.0114933, 0.0454515, 0.339527, 0.939427, 0.4, 1, 0.0437561, 0.0664394, 0.354556, 0.931645, 0.433333, 1, 0.0936447, 0.086843, 0.362736, 0.923099, 0.466667, 1, 0.134205, 0.103508, 0.36302, 0.916238, 0.5, 1, 0.161688, 0.113444, 0.355316, 0.91364, 0.533333, 1, 0.172105, 0.114807, 0.34197, 0.916655, 0.566667, 1, 0.162369, 0.107434, 0.325273, 0.925361, 0.6, 1, 0.134745, 0.0938879, 0.306267, 0.937672, 0.633333, 1, 0.0929822, 0.077208, 0.285731, 0.950658, 0.666667, 1, 0.0412136, 0.059985, 0.264753, 0.961566, 0.7, 1, -0.0159354, 0.0440908, 0.244883, 0.968419, 0.733333, 1, -0.073461, 0.0305335, 0.228073, 0.970389, 0.766667, 1, -0.126218, 0.0194948, 0.21651, 0.967891, 0.8, 1, -0.169154, 0.0105836, 0.212432, 0.962366, 0.833333, 1, -0.197486, 0.00342183, 0.217359, 0.955899, 0.866667, 1, -0.20688, -0.00128304, 0.230104, 0.950921, 0.9, 1, -0.194684, -0.00193852, 0.248813, 0.948782, 0.933333, 1, -0.164213, 0.00231133, 0.271453, 0.948336, 0.966667, 1, -0.120273, 0.011884, 0.29574, 0.947592, 1, 1, -0.0677396, 0.0266105, 0.319228, 0.944879, 1.03333, 1, -0.0114933, 0.0454515, 0.339527, 0.939427, 1.06667, 1, 0.0437561, 0.0664394, 0.354556, 0.931645, 1.1, 1, 0.0936447, 0.086843, 0.362736, 0.923099, 1.13333, 1, 0.134205, 0.103508, 0.36302, 0.916238, 1.16667, 1, 0.161688, 0.113444, 0.355316, 0.91364, 1.2, 1, 0.172105, 0.114807, 0.34197, 0.916655, 1.23333, 1, 0.162369, 0.107434, 0.325273, 0.925361, 1.26667, 1, 0.134745, 0.0938879, 0.306267, 0.937672, 1.3, 1, 0.0929822, 0.077208, 0.285731, 0.950658, 1.33333, 1, 0.0412136, 0.059985, 0.264753, 0.961566)
tracks/4/type = "rotation_3d"
tracks/4/imported = true
tracks/4/enabled = true
tracks/4/path = NodePath("Armature/Skeleton3D:wing_1.R")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = PackedFloat32Array(0, 1, -0.0286549, -0.188485, 0.686718, 0.701478, 0.0333333, 1, -0.0506094, -0.208724, 0.677509, 0.703459, 0.0666667, 1, -0.0610847, -0.215431, 0.666256, 0.71131, 0.1, 1, -0.05709, -0.207045, 0.655256, 0.724233, 0.133333, 1, -0.0396006, -0.186493, 0.644631, 0.74034, 0.166667, 1, -0.0107812, -0.157663, 0.633842, 0.757147, 0.2, 1, 0.0267386, -0.12419, 0.622616, 0.772147, 0.266667, 1, 0.114195, -0.0556545, 0.600903, 0.789163, 0.3, 1, 0.155982, -0.0253652, 0.59312, 0.789452, 0.333333, 1, 0.190651, -6.60251e-05, 0.590026, 0.784552, 0.366667, 1, 0.213966, 0.0185891, 0.593371, 0.775747, 0.4, 1, 0.222174, 0.0279345, 0.602828, 0.765805, 0.433333, 1, 0.213282, 0.0252487, 0.61726, 0.756877, 0.466667, 1, 0.19033, 0.0110549, 0.634785, 0.7488, 0.5, 1, 0.157487, -0.0130927, 0.653025, 0.740665, 0.533333, 1, 0.118744, -0.045142, 0.669545, 0.731827, 0.6, 1, 0.0378164, -0.121276, 0.689637, 0.712925, 0.633333, 1, 0.001578, -0.158023, 0.691096, 0.705275, 0.666667, 1, -0.0286549, -0.188485, 0.686718, 0.701478, 0.7, 1, -0.0506094, -0.208724, 0.677509, 0.703459, 0.733333, 1, -0.0610847, -0.215431, 0.666256, 0.71131, 0.766667, 1, -0.05709, -0.207045, 0.655256, 0.724233, 0.8, 1, -0.0396006, -0.186493, 0.644631, 0.74034, 0.833333, 1, -0.0107812, -0.157663, 0.633842, 0.757147, 0.866667, 1, 0.0267386, -0.12419, 0.622616, 0.772147, 0.933333, 1, 0.114195, -0.0556545, 0.600903, 0.789163, 0.966667, 1, 0.155982, -0.0253652, 0.59312, 0.789452, 1, 1, 0.190651, -6.60251e-05, 0.590026, 0.784552, 1.03333, 1, 0.213966, 0.0185891, 0.593371, 0.775747, 1.06667, 1, 0.222174, 0.0279345, 0.602828, 0.765805, 1.1, 1, 0.213282, 0.0252487, 0.61726, 0.756877, 1.13333, 1, 0.19033, 0.0110549, 0.634785, 0.7488, 1.16667, 1, 0.157487, -0.0130927, 0.653025, 0.740665, 1.2, 1, 0.118744, -0.045142, 0.669545, 0.731827, 1.26667, 1, 0.0378164, -0.121276, 0.689637, 0.712925, 1.3, 1, 0.001578, -0.158023, 0.691096, 0.705275, 1.33333, 1, -0.0286549, -0.188485, 0.686718, 0.701478)
tracks/5/type = "rotation_3d"
tracks/5/imported = true
tracks/5/enabled = true
tracks/5/path = NodePath("Armature/Skeleton3D:wing_2.R")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = PackedFloat32Array(0, 1, -0.0560155, 0.016041, -0.274838, 0.959724, 0.0333333, 1, -0.107724, 0.0293087, -0.260889, 0.958892, 0.0666667, 1, -0.150109, 0.0400536, -0.254681, 0.954464, 0.1, 1, -0.178377, 0.0485314, -0.258005, 0.948293, 0.133333, 1, -0.188128, 0.0538743, -0.269983, 0.94277, 0.166667, 1, -0.176689, 0.0543572, -0.288976, 0.939318, 0.2, 1, -0.147367, 0.0491943, -0.312801, 0.937026, 0.233333, 1, -0.104947, 0.0380736, -0.338908, 0.934172, 0.266667, 1, -0.0542423, 0.0212793, -0.364585, 0.929345, 0.3, 1, 4.35922e-07, -2.55374e-07, -0.387197, 0.921997, 0.333333, 1, 0.0532716, -0.023607, -0.404457, 0.912699, 0.366667, 1, 0.101459, -0.0465808, -0.414628, 0.903117, 0.4, 1, 0.140874, -0.0655118, -0.416552, 0.895738, 0.433333, 1, 0.168002, -0.0771313, -0.410045, 0.893134, 0.466667, 1, 0.178911, -0.0792831, -0.397312, 0.896576, 0.5, 1, 0.170442, -0.0715782, -0.380524, 0.906106, 0.533333, 1, 0.14463, -0.056739, -0.360771, 0.919623, 0.566667, 1, 0.104948, -0.0380741, -0.338908, 0.934172, 0.6, 1, 0.0552696, -0.0184505, -0.316108, 0.946932, 0.633333, 1, 3.97739e-07, -2.93199e-07, -0.294044, 0.955792, 0.666667, 1, -0.0560155, 0.016041, -0.274838, 0.959724, 0.7, 1, -0.107724, 0.0293087, -0.260889, 0.958892, 0.733333, 1, -0.150109, 0.0400536, -0.254681, 0.954464, 0.766667, 1, -0.178377, 0.0485314, -0.258005, 0.948293, 0.8, 1, -0.188128, 0.0538743, -0.269983, 0.94277, 0.833333, 1, -0.176689, 0.0543572, -0.288976, 0.939318, 0.866667, 1, -0.147367, 0.0491943, -0.312801, 0.937026, 0.9, 1, -0.104947, 0.0380736, -0.338908, 0.934172, 0.933333, 1, -0.0542423, 0.0212793, -0.364585, 0.929345, 0.966667, 1, 4.35922e-07, -2.55374e-07, -0.387197, 0.921997, 1, 1, 0.0532716, -0.023607, -0.404457, 0.912699, 1.03333, 1, 0.101459, -0.0465808, -0.414628, 0.903117, 1.06667, 1, 0.140874, -0.0655118, -0.416552, 0.895738, 1.1, 1, 0.168002, -0.0771313, -0.410045, 0.893134, 1.13333, 1, 0.178911, -0.0792831, -0.397312, 0.896576, 1.16667, 1, 0.170442, -0.0715782, -0.380524, 0.906106, 1.2, 1, 0.14463, -0.056739, -0.360771, 0.919623, 1.23333, 1, 0.104948, -0.0380741, -0.338908, 0.934172, 1.26667, 1, 0.0552696, -0.0184505, -0.316108, 0.946932, 1.3, 1, 3.97739e-07, -2.93199e-07, -0.294044, 0.955792, 1.33333, 1, -0.0560155, 0.016041, -0.274838, 0.959723)
tracks/6/type = "rotation_3d"
tracks/6/imported = true
tracks/6/enabled = true
tracks/6/path = NodePath("Armature/Skeleton3D:wing_3.R")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = PackedFloat32Array(0, 1, 0.0412136, -0.059985, -0.264753, 0.961566, 0.0333333, 1, -0.0159354, -0.0440908, -0.244883, 0.968419, 0.0666667, 1, -0.073461, -0.0305335, -0.228073, 0.970389, 0.1, 1, -0.126218, -0.0194948, -0.21651, 0.967891, 0.133333, 1, -0.169154, -0.0105836, -0.212432, 0.962366, 0.166667, 1, -0.197486, -0.00342183, -0.217359, 0.955899, 0.2, 1, -0.20688, 0.00128304, -0.230104, 0.950921, 0.233333, 1, -0.194684, 0.00193852, -0.248813, 0.948782, 0.266667, 1, -0.164213, -0.00231133, -0.271453, 0.948336, 0.3, 1, -0.120273, -0.011884, -0.29574, 0.947592, 0.333333, 1, -0.0677396, -0.0266105, -0.319228, 0.944879, 0.366667, 1, -0.0114933, -0.0454515, -0.339527, 0.939427, 0.4, 1, 0.0437561, -0.0664394, -0.354556, 0.931645, 0.433333, 1, 0.0936447, -0.086843, -0.362736, 0.923099, 0.466667, 1, 0.134205, -0.103508, -0.36302, 0.916238, 0.5, 1, 0.161688, -0.113444, -0.355316, 0.91364, 0.533333, 1, 0.172105, -0.114807, -0.34197, 0.916655, 0.566667, 1, 0.162369, -0.107434, -0.325273, 0.925361, 0.6, 1, 0.134745, -0.0938879, -0.306267, 0.937672, 0.633333, 1, 0.0929822, -0.077208, -0.285731, 0.950658, 0.666667, 1, 0.0412136, -0.059985, -0.264753, 0.961566, 0.7, 1, -0.0159354, -0.0440908, -0.244883, 0.968419, 0.733333, 1, -0.073461, -0.0305335, -0.228073, 0.970389, 0.766667, 1, -0.126218, -0.0194948, -0.21651, 0.967891, 0.8, 1, -0.169154, -0.0105836, -0.212432, 0.962366, 0.833333, 1, -0.197486, -0.00342183, -0.217359, 0.955899, 0.866667, 1, -0.20688, 0.00128304, -0.230104, 0.950921, 0.9, 1, -0.194684, 0.00193852, -0.248813, 0.948782, 0.933333, 1, -0.164213, -0.00231133, -0.271453, 0.948336, 0.966667, 1, -0.120273, -0.011884, -0.29574, 0.947592, 1, 1, -0.0677396, -0.0266105, -0.319228, 0.944879, 1.03333, 1, -0.0114933, -0.0454515, -0.339527, 0.939427, 1.06667, 1, 0.0437561, -0.0664394, -0.354556, 0.931645, 1.1, 1, 0.0936447, -0.086843, -0.362736, 0.923099, 1.13333, 1, 0.134205, -0.103508, -0.36302, 0.916238, 1.16667, 1, 0.161688, -0.113444, -0.355316, 0.91364, 1.2, 1, 0.172105, -0.114807, -0.34197, 0.916655, 1.23333, 1, 0.162369, -0.107434, -0.325273, 0.925361, 1.26667, 1, 0.134745, -0.0938879, -0.306267, 0.937672, 1.3, 1, 0.0929822, -0.077208, -0.285731, 0.950658, 1.33333, 1, 0.0412136, -0.059985, -0.264753, 0.961566)
tracks/7/type = "position_3d"
tracks/7/imported = true
tracks/7/enabled = true
tracks/7/path = NodePath("Armature/Skeleton3D:foot.L")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = PackedFloat32Array(0, 1, 0.130992, -0.227392, -0.0878515)
tracks/8/type = "rotation_3d"
tracks/8/imported = true
tracks/8/enabled = true
tracks/8/path = NodePath("Armature/Skeleton3D:foot.L")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = PackedFloat32Array(0, 1, 0.261968, 0.0834551, 0.265751, 0.924004)
tracks/9/type = "rotation_3d"
tracks/9/imported = true
tracks/9/enabled = true
tracks/9/path = NodePath("Armature/Skeleton3D:foot_2.L")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = PackedFloat32Array(0, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08, 0.0333333, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.0666667, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.133333, 1, 3.47263e-08, 0.60042, 0.799685, 2.08202e-08, 0.166667, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.2, 1, 3.92535e-08, 0.556296, 0.830985, 2.60857e-08, 0.233333, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.3, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.333333, 1, 3.40507e-08, 0.556296, 0.830985, 2.08829e-08, 0.366667, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.4, 1, 1.85956e-08, 0.60042, 0.799685, 2.6308e-08, 0.466667, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.5, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.533333, 1, 3.33283e-08, 0.690882, 0.722967, 2.18859e-08, 0.566667, 1, 3.86219e-08, 0.702774, 0.711413, 2.28649e-08, 0.633333, 1, 3.82926e-08, 0.702774, 0.711413, 2.25356e-08, 0.666667, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08, 0.7, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.733333, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.8, 1, 3.47263e-08, 0.60042, 0.799685, 2.08202e-08, 0.833333, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.866667, 1, 3.92535e-08, 0.556296, 0.830985, 2.60857e-08, 0.9, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.966667, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 1, 1, 3.40507e-08, 0.556296, 0.830985, 2.08829e-08, 1.03333, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 1.06667, 1, 1.85956e-08, 0.60042, 0.799685, 2.6308e-08, 1.13333, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 1.16667, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 1.2, 1, 3.33283e-08, 0.690882, 0.722967, 2.18859e-08, 1.23333, 1, 3.86219e-08, 0.702774, 0.711413, 2.28649e-08, 1.3, 1, 3.82926e-08, 0.702774, 0.711413, 2.25356e-08, 1.33333, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08)
tracks/10/type = "position_3d"
tracks/10/imported = true
tracks/10/enabled = true
tracks/10/path = NodePath("Armature/Skeleton3D:foot.R")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = PackedFloat32Array(0, 1, -0.130992, -0.227392, -0.0878515)
tracks/11/type = "rotation_3d"
tracks/11/imported = true
tracks/11/enabled = true
tracks/11/path = NodePath("Armature/Skeleton3D:foot.R")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = PackedFloat32Array(0, 1, 0.261968, -0.0834551, -0.265751, 0.924004)
tracks/12/type = "rotation_3d"
tracks/12/imported = true
tracks/12/enabled = true
tracks/12/path = NodePath("Armature/Skeleton3D:foot_2.R")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = PackedFloat32Array(0, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08, 0.0333333, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.0666667, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.133333, 1, 3.67218e-08, 0.60042, 0.799685, 4.70949e-08, 0.166667, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.2, 1, 2.33095e-08, 0.556296, 0.830984, 3.56522e-08, 0.233333, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.3, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.333333, 1, 2.31416e-08, 0.556296, 0.830984, 3.54843e-08, 0.366667, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.4, 1, 3.15666e-08, 0.60042, 0.799685, 3.09642e-08, 0.466667, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.5, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.533333, 1, 2.52591e-08, 0.690882, 0.722967, 3.62129e-08, 0.566667, 1, 2.11702e-08, 0.702774, 0.711413, 3.50482e-08, 0.633333, 1, 2.14994e-08, 0.702774, 0.711413, 3.53775e-08, 0.666667, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08, 0.7, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.733333, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.8, 1, 3.67218e-08, 0.60042, 0.799685, 4.70949e-08, 0.833333, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.866667, 1, 2.33095e-08, 0.556296, 0.830984, 3.56522e-08, 0.9, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.966667, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 1, 1, 2.31416e-08, 0.556296, 0.830984, 3.54843e-08, 1.03333, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 1.06667, 1, 3.15666e-08, 0.60042, 0.799685, 3.09642e-08, 1.13333, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 1.16667, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 1.2, 1, 2.52591e-08, 0.690882, 0.722967, 3.62129e-08, 1.23333, 1, 2.11702e-08, 0.702774, 0.711413, 3.50482e-08, 1.3, 1, 2.14994e-08, 0.702774, 0.711413, 3.53775e-08, 1.33333, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08)
[sub_resource type="Animation" id="Animation_dmdl0"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Armature/Skeleton3D/bat:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Armature/Skeleton3D/bat:surface_material_override/0:albedo_color")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2h6wp"]
_data = {
&"Idle": SubResource("Animation_0gbdx"),
&"RESET": SubResource("Animation_dmdl0")
}
[sub_resource type="Animation" id="Animation_xl0h5"]
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Armature/Skeleton3D/bat:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1, 1, 1), Vector3(1.3, 1.3, 1.3), Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Armature/Skeleton3D/bat:surface_material_override/0:albedo_color")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.199951),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(0.843431, 0.0363174, 0.22484, 1), Color(1, 1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xjlni"]
_data = {
&"hurt": SubResource("Animation_xl0h5")
}
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1xugm"]
animation = &"Idle"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0ebaf"]
animation = &"GodotBatMob/hurt"
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_a7d3o"]
mix_mode = 1
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xl0h5"]
graph_offset = Vector2(-446.039, -41.214)
"nodes/Idle Loop/node" = SubResource("AnimationNodeAnimation_1xugm")
"nodes/Idle Loop/position" = Vector2(200, 60)
"nodes/Mob Hurt/node" = SubResource("AnimationNodeAnimation_0ebaf")
"nodes/Mob Hurt/position" = Vector2(200, 240)
nodes/OneShot/node = SubResource("AnimationNodeOneShot_a7d3o")
nodes/OneShot/position = Vector2(440, 20)
nodes/output/position = Vector2(640, 160)
node_connections = [&"OneShot", 0, &"Idle Loop", &"OneShot", 1, &"Mob Hurt", &"output", 0, &"OneShot"]
[node name="bat_model" instance=ExtResource("1_12yrx")]
script = ExtResource("2_dmdl0")
[node name="Skeleton3D" parent="Armature" index="0"]
bones/0/position = Vector3(0, -0.0172648, 0)
bones/1/rotation = Quaternion(0.0466063, 0.108788, -0.618407, 0.776895)
bones/2/rotation = Quaternion(-0.128204, -0.0441741, 0.324725, 0.936037)
bones/3/rotation = Quaternion(-0.201371, -0.00157988, 0.238589, 0.950012)
bones/4/rotation = Quaternion(0.0466063, -0.108788, 0.618407, 0.776895)
bones/5/rotation = Quaternion(-0.128204, 0.0441741, -0.324725, 0.936037)
bones/6/rotation = Quaternion(-0.201371, 0.00157988, -0.238589, 0.950012)
bones/7/position = Vector3(0.130992, -0.227392, -0.0878515)
bones/7/rotation = Quaternion(0.261968, 0.0834552, 0.265751, 0.924005)
bones/8/rotation = Quaternion(3.43531e-08, 0.550042, 0.835137, 2.34299e-08)
bones/10/position = Vector3(-0.130992, -0.227392, -0.0878515)
bones/10/rotation = Quaternion(0.261968, -0.0834552, -0.265751, 0.924005)
bones/11/rotation = Quaternion(2.41782e-08, 0.550043, 0.835137, 3.9416e-08)
[node name="bat" parent="Armature/Skeleton3D" index="0"]
surface_material_override/0 = ExtResource("2_vofu1")
[node name="AnimationPlayer" parent="." index="1"]
libraries = {
&"": SubResource("AnimationLibrary_2h6wp"),
&"GodotBatMob": SubResource("AnimationLibrary_xjlni")
}
autoplay = "Idle"
[node name="AnimationTree" type="AnimationTree" parent="." index="2"]
unique_name_in_owner = true
root_node = NodePath("%AnimationTree/..")
tree_root = SubResource("AnimationNodeBlendTree_xl0h5")
anim_player = NodePath("../AnimationPlayer")
parameters/OneShot/active = false
parameters/OneShot/internal_active = false
parameters/OneShot/request = 0

BIN
mob/gun_shoot.wav Normal file

Binary file not shown.

24
mob/gun_shoot.wav.import Normal file
View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cmavoyb45x73f"
path="res://.godot/imported/gun_shoot.wav-f8b83b393a231b2e7b3abfb1a84846ed.sample"
[deps]
source_file="res://mob/gun_shoot.wav"
dest_files=["res://.godot/imported/gun_shoot.wav-f8b83b393a231b2e7b3abfb1a84846ed.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
mob/mob_ko.wav Normal file

Binary file not shown.

24
mob/mob_ko.wav.import Normal file
View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://hghb3bqm52oh"
path="res://.godot/imported/mob_ko.wav-a84710604b4b98be9d6d7dfe1978d9ee.sample"
[deps]
source_file="res://mob/mob_ko.wav"
dest_files=["res://.godot/imported/mob_ko.wav-a84710604b4b98be9d6d7dfe1978d9ee.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
mob/mob_take_damage.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cvge1n06euj5o"
path="res://.godot/imported/mob_take_damage.wav-1cdfbd77e9c3f3326daadc27788f65ff.sample"
[deps]
source_file="res://mob/mob_take_damage.wav"
dest_files=["res://.godot/imported/mob_take_damage.wav-1cdfbd77e9c3f3326daadc27788f65ff.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

70
mob/player.tscn Normal file
View File

@@ -0,0 +1,70 @@
[gd_scene load_steps=8 format=3 uid="uid://h8tyroiwkr42"]
[ext_resource type="Script" uid="uid://l1gxoouxv4bc" path="res://player/player.gd" id="1_rkbax"]
[ext_resource type="PackedScene" uid="uid://dkb2mu7n4t308" path="res://player/gun_model.tscn" id="3_8441p"]
[ext_resource type="Texture2D" uid="uid://daxb87ykphjeh" path="res://player/reticle.png" id="3_g1dw6"]
[ext_resource type="AudioStream" uid="uid://cmavoyb45x73f" path="res://mob/gun_shoot.wav" id="4_th40c"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kqu6x"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_th40c"]
bg_color = Color(0.223529, 0.223529, 0.223529, 0.729412)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8441p"]
bg_color = Color(0.179649, 0.626318, 0.30983, 1)
[node name="Player" type="CharacterBody3D"]
collision_layer = 5
collision_mask = 3
script = ExtResource("1_rkbax")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_kqu6x")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51802, 0)
[node name="gun_model" parent="Camera3D" instance=ExtResource("3_8441p")]
transform = Transform3D(-0.399518, 0.00318013, -0.0193816, 0.000692473, 0.396757, 0.0508259, 0.0196285, 0.050731, -0.396284, 0.493558, -0.233074, -0.568753)
[node name="Marker3D" type="Marker3D" parent="Camera3D/gun_model"]
unique_name_in_owner = true
transform = Transform3D(-0.999988, 0.00484524, 0.000349712, 0.00485513, 0.994434, 0.105259, 0.000162303, 0.10526, -0.994445, 0.0103973, 0.00791597, 0.639051)
[node name="ShootTimer" type="Timer" parent="Camera3D/gun_model"]
wait_time = 0.2
[node name="Reticle" type="TextureRect" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -23.0
offset_top = -23.0
offset_right = 23.0
offset_bottom = 23.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_g1dw6")
expand_mode = 1
[node name="HealthBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
offset_left = 30.0
offset_top = 30.0
offset_right = 280.0
offset_bottom = 50.0
theme_override_styles/background = SubResource("StyleBoxFlat_th40c")
theme_override_styles/fill = SubResource("StyleBoxFlat_8441p")
value = 50.0
rounded = true
show_percentage = false
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("4_th40c")
volume_db = -5.0
[connection signal="timeout" from="Camera3D/gun_model/ShootTimer" to="." method="_on_shoot_timer_timeout"]

View File

@@ -0,0 +1,70 @@
shader_type spatial;
render_mode shadows_disabled, cull_back;
uniform vec3 albedo : source_color;
varying float voronoi_value;
uniform float progress = 0.0;
uniform float smoothness = 0.01;
uniform float ease = 2.0;
uniform float base_scale = 1.0;
uniform float deformation_scale = 1.0;
uniform float texture_offset = 0.0;
uniform float fresnel_offset = 1.0;
uniform float global_alpha = 1.0;
// Voronoi method credit:
// The MIT License
// Copyright © 2013 Inigo Quilez
// https://www.shadertoy.com/view/ldl3Dl
vec3 hash( vec3 x ){
x = vec3( dot(x,vec3(127.1,311.7, 74.7)),
dot(x,vec3(269.5,183.3,246.1)),
dot(x,vec3(113.5,271.9,124.6)));
return fract(sin(x)*43758.5453123);
}
vec3 voronoi( in vec3 x ){
vec3 p = floor( x );
vec3 f = fract( x );
float id = 0.0;
vec2 res = vec2( 100.0 );
for( int k=-1; k<=1; k++ )
for( int j=-1; j<=1; j++ )
for( int i=-1; i<=1; i++ ) {
vec3 b = vec3( float(i), float(j), float(k) );
vec3 r = vec3( b ) - f + hash( p + b );
float d = dot( r, r );
if( d < res.x ) {
id = dot( p+b, vec3(1.0,57.0,113.0 ) );
res = vec2( d, res.x );
} else if( d < res.y ) {
res.y = d;
}
}
return vec3( sqrt( res ), abs(id) );
}
float fresnel(vec3 normal, vec3 view, float amount){
return pow(1.0 - clamp(dot(normal, view), 0.0, 1.0), amount);
}
void vertex() {
float smooth_df = deformation_scale;
voronoi_value = voronoi(VERTEX + texture_offset).x;
VERTEX += NORMAL * (1.0 - pow(voronoi_value, ease)) * smooth_df;
VERTEX *= base_scale;
}
void fragment(){
ALBEDO = albedo;
EMISSION = albedo * 0.5;
ALPHA = 1.0 - fresnel(NORMAL, VIEW, 2.0 * fresnel_offset);
ALPHA *= global_alpha;
}

View File

@@ -0,0 +1 @@
uid://0h8qjtcpk0mk

View File

@@ -0,0 +1,17 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://dr7gyunhpjiwf"]
[ext_resource type="Shader" path="res://mob/smoke_puff/material/inner_smoke.gdshader" id="1_6ucfb"]
[resource]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("1_6ucfb")
shader_parameter/albedo = Color(1, 0.537255, 0.792157, 1)
shader_parameter/progress = 0.0
shader_parameter/smoothness = 0.01
shader_parameter/ease = 2.0
shader_parameter/base_scale = 1.1
shader_parameter/deformation_scale = 1.0
shader_parameter/texture_offset = 0.1
shader_parameter/fresnel_offset = 0.5
shader_parameter/global_alpha = 0.0

View File

@@ -0,0 +1,64 @@
shader_type spatial;
render_mode shadows_disabled, cull_disabled;
uniform vec3 albedo : source_color;
varying float voronoi_value;
uniform float progress = 0.0;
uniform float smoothness = 0.01;
uniform float ease = 2.0;
uniform float base_scale = 1.0;
uniform float deformation_scale = 1.0;
uniform float texture_offset = 0.0;
// Voronoi method credit:
// The MIT License
// Copyright © 2013 Inigo Quilez
// https://www.shadertoy.com/view/ldl3Dl
vec3 hash( vec3 x ){
x = vec3( dot(x,vec3(127.1,311.7, 74.7)),
dot(x,vec3(269.5,183.3,246.1)),
dot(x,vec3(113.5,271.9,124.6)));
return fract(sin(x)*43758.5453123);
}
vec3 voronoi( in vec3 x ){
vec3 p = floor( x );
vec3 f = fract( x );
float id = 0.0;
vec2 res = vec2( 100.0 );
for( int k=-1; k<=1; k++ )
for( int j=-1; j<=1; j++ )
for( int i=-1; i<=1; i++ ) {
vec3 b = vec3( float(i), float(j), float(k) );
vec3 r = vec3( b ) - f + hash( p + b );
float d = dot( r, r );
if( d < res.x ) {
id = dot( p+b, vec3(1.0,57.0,113.0 ) );
res = vec2( d, res.x );
} else if( d < res.y ) {
res.y = d;
}
}
return vec3( sqrt( res ), abs(id) );
}
void vertex() {
float smooth_df = deformation_scale;
voronoi_value = voronoi(VERTEX + texture_offset).x;
VERTEX += NORMAL * (1.0 - pow(voronoi_value, ease)) * smooth_df;
VERTEX *= base_scale;
}
void fragment(){
ALBEDO = albedo;
EMISSION = albedo * 0.5;
ALPHA = smoothstep(progress - smoothness, progress + smoothness, voronoi_value);
ALPHA_SCISSOR_THRESHOLD = 0.5;
}

View File

@@ -0,0 +1 @@
uid://spi71y1qu06o

View File

@@ -0,0 +1,15 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://ctnipgxo3l72h"]
[ext_resource type="Shader" path="res://mob/smoke_puff/material/outer_smoke.gdshader" id="1_0emiy"]
[resource]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("1_0emiy")
shader_parameter/albedo = Color(0.937255, 0.698039, 1, 1)
shader_parameter/progress = 1.8
shader_parameter/smoothness = 0.1
shader_parameter/ease = 3.0
shader_parameter/base_scale = 1.2
shader_parameter/deformation_scale = 1.5
shader_parameter/texture_offset = -0.5

BIN
mob/smoke_puff/poof.res Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ki0nh5lgryca"
path="res://.godot/imported/poof_sound.wav-36d715cee95c69d05b3317b1fcb4cc24.sample"
[deps]
source_file="res://mob/smoke_puff/poof_sound.wav"
dest_files=["res://.godot/imported/poof_sound.wav-36d715cee95c69d05b3317b1fcb4cc24.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,34 @@
[gd_scene load_steps=7 format=3 uid="uid://cjk3frr43yesb"]
[ext_resource type="Material" uid="uid://ctnipgxo3l72h" path="res://mob/smoke_puff/material/outer_smoke.tres" id="2_1f3c4"]
[ext_resource type="ArrayMesh" uid="uid://cxh3afoly2pv6" path="res://mob/smoke_puff/smoke_sphere.obj" id="3_2ucfv"]
[ext_resource type="Material" uid="uid://dr7gyunhpjiwf" path="res://mob/smoke_puff/material/inner_smoke.tres" id="4_8vcwr"]
[ext_resource type="Animation" uid="uid://drrd257af7jpy" path="res://mob/smoke_puff/poof.res" id="5_yvyul"]
[ext_resource type="AudioStream" uid="uid://dyj752n6nuwa6" path="res://mob/smoke_puff/poof_sound.wav" id="6_8rosm"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a08pi"]
_data = {
"poof": ExtResource("5_yvyul")
}
[node name="smoke_puff" type="Node3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
[node name="OuterSmoke" type="MeshInstance3D" parent="."]
material_override = ExtResource("2_1f3c4")
mesh = ExtResource("3_2ucfv")
[node name="InnerSmoke" type="MeshInstance3D" parent="."]
material_override = ExtResource("4_8vcwr")
mesh = ExtResource("3_2ucfv")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_a08pi")
}
autoplay = "poof"
[node name="Sound" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = ExtResource("6_8rosm")

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://vsovom3bufqe"
path="res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"
[deps]
files=["res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"]
source_file="res://mob/smoke_puff/smoke_sphere.obj"
dest_files=["res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh", "res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@@ -0,0 +1,16 @@
extends Node3D
@export var mob_to_spawn: PackedScene = null
signal mob_spawned(mob: Node)
@onready var marker_3d: Marker3D = %Marker3D
@onready var timer: Timer = %Timer
func _on_timer_timeout() -> void:
var new_mob := mob_to_spawn.instantiate()
add_child(new_mob)
new_mob.global_transform = marker_3d.global_transform
mob_spawned.emit(new_mob)

View File

@@ -0,0 +1 @@
uid://cu4e7af7nx5al

View File

@@ -0,0 +1,21 @@
[gd_scene load_steps=3 format=3 uid="uid://c0ky5ie5cfgh2"]
[ext_resource type="Script" uid="uid://cu4e7af7nx5al" path="res://mob/spawner/mob_spawner_3d.gd" id="1_ewxdg"]
[ext_resource type="PackedScene" uid="uid://dtf66or38qi43" path="res://mob/spawner/spawner_model.tscn" id="2_ewxdg"]
[node name="MobSpawner3D" type="Node3D"]
script = ExtResource("1_ewxdg")
[node name="spawner_model" parent="." instance=ExtResource("2_ewxdg")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 2.5, 0)
[node name="Marker3D" type="Marker3D" parent="spawner_model"]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, -1.4, 0)
[node name="Timer" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 5.0
autostart = true
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@@ -0,0 +1,17 @@
shader_type spatial;
uniform vec3 color : source_color;
float fresnel(float amount, vec3 normal, vec3 view)
{
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount);
}
void fragment() {
float f = fresnel(0.8, NORMAL, VIEW);
float wave = abs((sin((UV.y - TIME * 0.1) * 10.0 * PI) + 1.0) / 2.0);
ALBEDO = color;
EMISSION = color * 2.0;
ALPHA = step(UV.y, wave) * (1.0 - UV.y) * (1.0 - f);
}

View File

@@ -0,0 +1 @@
uid://cfnwyva3u4qeb

Binary file not shown.

View File

@@ -0,0 +1,37 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://diiskgqfi7kay"
path="res://.godot/imported/spawner_model.glb-2fcf57184c75ae05a59f6df1a9d9c89b.scn"
[deps]
source_file="res://mob/spawner/spawner_model.glb"
dest_files=["res://.godot/imported/spawner_model.glb-2fcf57184c75ae05a59f6df1a9d9c89b.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

View File

@@ -0,0 +1,85 @@
[gd_scene load_steps=10 format=3 uid="uid://dtf66or38qi43"]
[ext_resource type="PackedScene" uid="uid://diiskgqfi7kay" path="res://mob/spawner/spawner_model.glb" id="1_bk78j"]
[ext_resource type="Shader" uid="uid://cfnwyva3u4qeb" path="res://mob/spawner/spawner_halo.gdshader" id="2_lvlhh"]
[ext_resource type="Material" uid="uid://jvnbftghahty" path="res://mob/spawner/spawner_screen_material.tres" id="3_p6j4b"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_rug3p"]
render_priority = 0
shader = ExtResource("2_lvlhh")
shader_parameter/color = Color(0.13153, 0.557624, 0.421582, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2xi82"]
albedo_color = Color(0.879323, 0.706001, 0.185322, 1)
metallic = 0.45
metallic_specular = 0.75
roughness = 0.25
rim_enabled = true
rim = 0.1
rim_tint = 0.4
clearcoat_enabled = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bk78j"]
albedo_color = Color(0.646029, 0.646029, 0.646029, 1)
metallic = 0.5
roughness = 0.1
rim_enabled = true
rim = 0.1
clearcoat_enabled = true
[sub_resource type="Animation" id="Animation_lvlhh"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Top:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -2.0944, 0)]
}
[sub_resource type="Animation" id="Animation_bk78j"]
resource_name = "idle"
length = 0.5
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Top:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 6.28319, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p6j4b"]
_data = {
&"RESET": SubResource("Animation_lvlhh"),
&"idle": SubResource("Animation_bk78j")
}
[node name="spawner_model" instance=ExtResource("1_bk78j")]
[node name="halo" parent="." index="0"]
material_override = SubResource("ShaderMaterial_rug3p")
[node name="Body" parent="." index="1"]
surface_material_override/0 = SubResource("StandardMaterial3D_2xi82")
surface_material_override/1 = ExtResource("3_p6j4b")
[node name="Top" parent="." index="2"]
transform = Transform3D(-0.500004, 0, -0.866023, 0, 1, 0, 0.866023, 0, -0.500004, 0, 0.783957, 0)
material_override = SubResource("StandardMaterial3D_bk78j")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="3"]
libraries = {
&"": SubResource("AnimationLibrary_p6j4b")
}
autoplay = "idle"

View File

@@ -0,0 +1,29 @@
shader_type spatial;
uniform vec4 screen_color : source_color;
uniform sampler2D text_sampler : filter_nearest, repeat_enable;
uniform float ratio = 1.0;
uniform float pixel_size = 20.0;
uniform float intensity = 1.5;
void fragment() {
vec2 scaled_uv = round(UV * pixel_size) / pixel_size;
vec2 grid_2d = sin(fract(UV * pixel_size + 0.5) * 3.14);
float grid = grid_2d.x * grid_2d.y;
grid = grid * 0.6 + 0.4;
float text = 1.0 - texture(text_sampler, scaled_uv * vec2(ratio, 1.0) + vec2(mod(TIME * 0.1, 1.0), 0.0)).x;
ALBEDO = vec3(0.0);
SPECULAR = 0.25;
ROUGHNESS = 0.45;
EMISSION = mix(screen_color.rgb * text, screen_color.rgb, screen_color.a) * grid * intensity;
}

View File

@@ -0,0 +1 @@
uid://dhuj314m3wv1c

View File

@@ -0,0 +1,13 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://jvnbftghahty"]
[ext_resource type="Shader" uid="uid://dhuj314m3wv1c" path="res://mob/spawner/spawner_screen.gdshader" id="1_3sboa"]
[ext_resource type="Texture2D" uid="uid://cioq2g05svse6" path="res://mob/spawner/spawner_text.png" id="2_871b8"]
[resource]
render_priority = 0
shader = ExtResource("1_3sboa")
shader_parameter/screen_color = Color(0.336095, 0.77375, 0.569932, 0.027451)
shader_parameter/text_sampler = ExtResource("2_871b8")
shader_parameter/ratio = 0.25
shader_parameter/pixel_size = 32.0
shader_parameter/intensity = 1.5

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cioq2g05svse6"
path.s3tc="res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.s3tc.ctex"
path.etc2="res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://mob/spawner/spawner_text.png"
dest_files=["res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.s3tc.ctex", "res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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