This commit is contained in:
Felix Kaiser
2025-02-17 16:46:19 +01:00
parent 534181eb88
commit 3f62e5e31d
245 changed files with 15711 additions and 2 deletions

View File

@@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://b7mq56myq16y6"]
[ext_resource type="Script" path="res://enemies/enemy_weapon_slot.gd" id="1_aqycl"]
[node name="EnemyWeaponSlot" type="Node3D"]
script = ExtResource("1_aqycl")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
bus = &"SFX"

43
enemies/barricade.tscn Normal file
View File

@@ -0,0 +1,43 @@
[gd_scene load_steps=8 format=3 uid="uid://c4548r0io7hiy"]
[ext_resource type="Material" uid="uid://dajephuqpori" path="res://level/protomaterial.tres" id="1_xq305"]
[ext_resource type="PackedScene" uid="uid://cilj11mx2ahb1" path="res://enemies/enemy_hit_box.tscn" id="2_5uygx"]
[ext_resource type="PackedScene" uid="uid://d2p86lb72dp61" path="res://components/healthcomponent.tscn" id="3_a8b3n"]
[sub_resource type="BoxMesh" id="BoxMesh_cq42u"]
material = ExtResource("1_xq305")
size = Vector3(2, 2, 3)
[sub_resource type="BoxShape3D" id="BoxShape3D_xnh82"]
size = Vector3(2, 2, 3)
[sub_resource type="SphereShape3D" id="SphereShape3D_mxspy"]
[sub_resource type="BoxShape3D" id="BoxShape3D_qy558"]
size = Vector3(2, 2, 3)
[node name="Barricade" type="CharacterBody3D"]
collision_layer = 4
collision_mask = 7
collision_priority = 10.0
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("BoxMesh_cq42u")
[node name="EnemyHitBox" parent="." node_paths=PackedStringArray("health_component") instance=ExtResource("2_5uygx")]
health_component = NodePath("../Healthcomponent")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyHitBox"]
shape = SubResource("BoxShape3D_xnh82")
[node name="Healthcomponent" parent="." instance=ExtResource("3_a8b3n")]
max_health = 30.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Healthcomponent"]
shape = SubResource("SphereShape3D_mxspy")
disabled = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("BoxShape3D_qy558")
[connection signal="start_dying" from="Healthcomponent" to="." method="queue_free"]

View File

@@ -0,0 +1,17 @@
extends Node3D
@export var animation_tree: AnimationTree
@onready var parent: CharacterBody3D = $".."
@onready var animation_player: AnimationPlayer = $"../AnimationPlayer"
func _physics_process(delta: float) -> void:
if parent.velocity.length() <= .1:
#animation_tree.set("parameters/attack/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE)
animation_tree.set("parameters/idle_walk_blend/blend_amount", 1)
else:
animation_tree.set("parameters/idle_walk_blend/blend_amount", -1)
func dying():
animation_tree.active = false
animation_player.speed_scale = randf_range(.8,1.2)
animation_player.play("custom/death")

View File

@@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://dnqcrvpokx0i0"]
[node name="EnemyAnimationHandler" type="Node3D"]

View File

@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cilj11mx2ahb1"]
[ext_resource type="Script" path="res://components/hit_box.gd" id="1_r4epu"]
[node name="EnemyHitBox" type="Area3D"]
collision_layer = 32
collision_mask = 16
script = ExtResource("1_r4epu")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@@ -0,0 +1,44 @@
extends NavigationAgent3D
class_name EnemyMoverFollow
@export var follow_distance : float = 1
@export var target : Node3D
@export var MAX_SPEED := 2.0
var parent : CharacterBody3D
var disabled := false
func disable():
disabled = true
func _ready():
parent = get_parent()
func set_target(new_target: Node3D):
target = new_target
func _physics_process(delta: float) -> void:
if is_instance_valid(target) && target && !disabled:
set_target_position(target.global_position)
var next_path_position = get_next_path_position()
#next_path_position.y = global_position.y
var dir = parent.global_position.direction_to(next_path_position)
var new_velocity = dir*MAX_SPEED
parent.look_at(next_path_position)
parent.velocity = new_velocity
parent.move_and_slide()
#set_velocity(new_velocity)
#if global_position.distance_to(target.global_position) < 2:
#queue_free()
else:
parent.velocity = lerp(parent.velocity, Vector3.ZERO, 1)
parent.move_and_slide()
func _on_navigation_agent_3d_velocity_computed(safe_velocity: Vector3) -> void:
parent.velocity = parent.velocity.move_toward(safe_velocity, .25)
parent.move_and_slide()

View File

@@ -0,0 +1,8 @@
[gd_scene format=3 uid="uid://dg4xjlf2wc5qw"]
[node name="EnemyMoverFollow" type="NavigationAgent3D"]
path_desired_distance = 0.3
path_height_offset = 0.2
avoidance_enabled = true
radius = 0.3
debug_path_custom_color = Color(1, 0, 0, 1)

View File

@@ -0,0 +1,30 @@
extends NavigationAgent3D
@export var MAX_SPEED : float = 3.0
var points : Array[Marker3D]
var parent : CharacterBody3D
var current_point : int
func _ready() -> void:
parent = get_parent()
for child in get_children():
if child is Marker3D:
points.append(child)
if points.size() > 0:
current_point = 0
set_target_position(points[current_point].global_position)
func _physics_process(delta: float) -> void:
var next_path_position = get_next_path_position()
var dir = parent.global_position.direction_to(next_path_position)
var new_velocity = dir*MAX_SPEED
#parent.look_at(next_path_position)
#parent.rotate(Vector3.UP, parent.basis.z.angle_to(next_path_position)/2)
parent.global_transform.basis = parent.global_transform.basis.slerp(parent.global_transform.looking_at(next_path_position, Vector3.UP).basis, delta * 10.0)
parent.velocity = new_velocity
parent.move_and_slide()
if parent.global_position.distance_to(points[current_point].global_position) < 1:
current_point = (current_point + 1)%points.size()
set_target_position(points[current_point].global_position)

View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cpevahnu0bbf1"]
[ext_resource type="Script" path="res://enemies/enemy_mover_patrol.gd" id="1_2okeu"]
[node name="EnemyMoverPatrol" type="NavigationAgent3D"]
script = ExtResource("1_2okeu")

View File

@@ -0,0 +1,43 @@
extends Node3D
class_name EnemyWeaponSlot
@export var lead_speed := 10
@export var weapon : Weapon
@onready var audio_stream_player_3d: AudioStreamPlayer3D = $AudioStreamPlayer3D
var target : Node3D
var can_shoot := true
func _ready() -> void:
if weapon.shooting_sound:
audio_stream_player_3d.stream = weapon.shooting_sound
func _physics_process(delta: float) -> void:
if is_instance_valid(target) && target:
var dist = (target.global_position - global_position).length()
var time_to_target = dist/lead_speed
var lead = (target.velocity*time_to_target)
look_at(target.global_position+Vector3(0,.5,0) + lead)
shoot()
else:
rotation = Vector3.ZERO
func shoot():
if can_shoot:
get_tree().create_timer(weapon.cooldown).timeout.connect(reload)
audio_stream_player_3d.play()
can_shoot = false
var new_projectile = weapon.projectile_scene.instantiate()
new_projectile.global_transform = global_transform
get_tree().root.add_child(new_projectile)
func reload():
can_shoot = true
func set_target(value: Node3D):
target = value

View File

@@ -0,0 +1,31 @@
extends Area3D
var current_players : Array[Node3D]
var current_target : Node3D
signal new_target
func _on_body_entered(body: Node3D) -> void:
current_players.append(body)
func _on_body_exited(body: Node3D) -> void:
current_players.erase(body)
func _physics_process(delta: float) -> void:
var candidate : Node3D
for body in current_players:
if !candidate:
candidate = body
else:
if global_position.distance_to(candidate.global_position) > global_position.distance_to(body.global_position):
candidate = body
if is_instance_valid(candidate):
if candidate == current_target:
return
else:
current_target = candidate
new_target.emit(current_target)
else:
if is_instance_valid(current_target):
current_target = null
new_target.emit(current_target)

View File

@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://mlq22lwd7tip"]
[ext_resource type="Script" path="res://enemies/player_detector.gd" id="1_ad1ks"]
[node name="PlayerDetector" type="Area3D"]
collision_layer = 0
collision_mask = 2
script = ExtResource("1_ad1ks")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="body_exited" from="." to="." method="_on_body_exited"]

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://de4uedmk5edgf"
path="res://.godot/imported/461697__leonelmail__body-falls-into-debris.mp3-bb2688610ce51d8f9f8578f4998733e7.mp3str"
[deps]
source_file="res://enemies/roomba/461697__leonelmail__body-falls-into-debris.mp3"
dest_files=["res://.godot/imported/461697__leonelmail__body-falls-into-debris.mp3-bb2688610ce51d8f9f8578f4998733e7.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dyrknr7owcj2l"
path.s3tc="res://.godot/imported/circle_05.png-642a93c66b1ec1ba5a1a752e418d94e7.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://enemies/roomba/circle_05.png"
dest_files=["res://.godot/imported/circle_05.png-642a93c66b1ec1ba5a1a752e418d94e7.s3tc.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

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://b2wv3104111mm"
path="res://.godot/imported/pistol-shot2.ogg-51b148b9fac9b33ad9f9483600ae7c59.oggvorbisstr"
[deps]
source_file="res://enemies/roomba/pistol-shot2.ogg"
dest_files=["res://.godot/imported/pistol-shot2.ogg-51b148b9fac9b33ad9f9483600ae7c59.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

11
enemies/roomba/roomba.gd Normal file
View File

@@ -0,0 +1,11 @@
extends CharacterBody3D
func _on_healthcomponent_start_dying() -> void:
$blockbench_export.visible = false
$CollisionShape3D.queue_free()
$EnemyHitBox.queue_free()
$Healthcomponent.queue_free()
get_tree().create_timer(3).timeout.connect(queue_free)
$AudioStreamPlayer3D.play()
$EnemyWeaponSlot.queue_free()

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,36 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://5t571rk10fot"
path="res://.godot/imported/roomba.gltf-c85637230b4fd27eac22407f3e7820ae.scn"
[deps]
source_file="res://enemies/roomba/roomba.gltf"
dest_files=["res://.godot/imported/roomba.gltf-c85637230b4fd27eac22407f3e7820ae.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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,72 @@
[gd_scene load_steps=14 format=3 uid="uid://cah3scx7my3bo"]
[ext_resource type="PackedScene" uid="uid://5t571rk10fot" path="res://enemies/roomba/roomba.gltf" id="1_0byba"]
[ext_resource type="Script" path="res://enemies/roomba/roomba.gd" id="1_ywmos"]
[ext_resource type="PackedScene" uid="uid://cilj11mx2ahb1" path="res://enemies/enemy_hit_box.tscn" id="2_kryr4"]
[ext_resource type="PackedScene" uid="uid://d2p86lb72dp61" path="res://components/healthcomponent.tscn" id="3_lmjf6"]
[ext_resource type="PackedScene" uid="uid://5q0aw58r81vp" path="res://effects/explosion.tscn" id="5_qdl43"]
[ext_resource type="AudioStream" uid="uid://de4uedmk5edgf" path="res://enemies/roomba/461697__leonelmail__body-falls-into-debris.mp3" id="6_q81qv"]
[ext_resource type="PackedScene" uid="uid://mlq22lwd7tip" path="res://enemies/player_detector.tscn" id="7_cyxum"]
[ext_resource type="PackedScene" uid="uid://b7mq56myq16y6" path="res://enemies/EnemyWeaponSlot.tscn" id="8_7n6uh"]
[ext_resource type="Resource" uid="uid://e6kduk7gil5d" path="res://enemies/roomba/roomba_weapon.tres" id="9_df07r"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_ryfyn"]
height = 0.327
[sub_resource type="CylinderShape3D" id="CylinderShape3D_crthm"]
height = 2.052
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_0wgue"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_q81qv")
[sub_resource type="CylinderShape3D" id="CylinderShape3D_7htvr"]
height = 16.61
radius = 4.445
[node name="Roomba" type="CharacterBody3D"]
collision_layer = 4
collision_mask = 3
script = ExtResource("1_ywmos")
[node name="blockbench_export" parent="." instance=ExtResource("1_0byba")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0)
shape = SubResource("CylinderShape3D_ryfyn")
[node name="EnemyHitBox" parent="." node_paths=PackedStringArray("health_component") instance=ExtResource("2_kryr4")]
health_component = NodePath("../Healthcomponent")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyHitBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0)
shape = SubResource("CylinderShape3D_crthm")
[node name="Healthcomponent" parent="." instance=ExtResource("3_lmjf6")]
max_health = 50.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Healthcomponent"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0)
shape = SubResource("CylinderShape3D_ryfyn")
disabled = true
[node name="Explosion" parent="." instance=ExtResource("5_qdl43")]
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
stream = SubResource("AudioStreamRandomizer_0wgue")
bus = &"SFX"
[node name="PlayerDetector" parent="." instance=ExtResource("7_cyxum")]
[node name="CollisionShape3D2" type="CollisionShape3D" parent="PlayerDetector"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -7.95)
shape = SubResource("CylinderShape3D_7htvr")
[node name="EnemyWeaponSlot" parent="." instance=ExtResource("8_7n6uh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -0.8)
weapon = ExtResource("9_df07r")
[connection signal="start_dying" from="Healthcomponent" to="." method="_on_healthcomponent_start_dying"]
[connection signal="start_dying" from="Healthcomponent" to="Explosion" method="play"]
[connection signal="new_target" from="PlayerDetector" to="EnemyWeaponSlot" method="set_target"]

BIN
enemies/roomba/roomba_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bbic8dstbrj8h"
path="res://.godot/imported/roomba_0.png-c1549c6c179413abb430f9abb9ed6c8b.ctex"
metadata={
"vram_texture": false
}
generator_parameters={
"md5": "bedb01a00a96b2e41e08b99e8b55e4ab"
}
[deps]
source_file="res://enemies/roomba/roomba_0.png"
dest_files=["res://.godot/imported/roomba_0.png-c1549c6c179413abb430f9abb9ed6c8b.ctex"]
[params]
compress/mode=3
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

View File

@@ -0,0 +1,57 @@
[gd_scene load_steps=10 format=3 uid="uid://cebi3xpcvhuox"]
[ext_resource type="Texture2D" uid="uid://dyrknr7owcj2l" path="res://enemies/roomba/circle_05.png" id="1_571d5"]
[ext_resource type="Script" path="res://components/projectile.gd" id="1_bah41"]
[ext_resource type="Script" path="res://components/projectile_mover_linear.gd" id="2_p2jl6"]
[sub_resource type="SphereShape3D" id="SphereShape3D_3m1f0"]
radius = 0.1
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ojfae"]
transparency = 1
blend_mode = 1
shading_mode = 0
albedo_texture = ExtResource("1_571d5")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_03rak"]
material = SubResource("StandardMaterial3D_ojfae")
size = Vector2(0.5, 0.5)
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_4ol4i"]
load_path = "res://.godot/imported/circle_05.png-642a93c66b1ec1ba5a1a752e418d94e7.s3tc.ctex"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4scl6"]
transparency = 1
blend_mode = 1
shading_mode = 0
albedo_color = Color(1, 0.443137, 0, 1)
albedo_texture = SubResource("CompressedTexture2D_4ol4i")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_8mxox"]
material = SubResource("StandardMaterial3D_4scl6")
size = Vector2(0.5, 0.5)
[node name="RoombaProjectile" type="CharacterBody3D"]
collision_layer = 64
collision_mask = 9
script = ExtResource("1_bah41")
lifetime = 3.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_3m1f0")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("QuadMesh_03rak")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
mesh = SubResource("QuadMesh_8mxox")
[node name="ProjectileMoverLinear" type="Node3D" parent="."]
script = ExtResource("2_p2jl6")
speed = 15.0
[connection signal="collided" from="." to="CollisionShape3D" method="queue_free"]
[connection signal="collided" from="." to="MeshInstance3D" method="queue_free"]
[connection signal="collided" from="." to="MeshInstance3D2" method="queue_free"]

View File

@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="Weapon" load_steps=5 format=3 uid="uid://e6kduk7gil5d"]
[ext_resource type="PackedScene" uid="uid://cebi3xpcvhuox" path="res://enemies/roomba/roomba_projectile.tscn" id="1_15rxa"]
[ext_resource type="Script" path="res://player/weapons/weapon.gd" id="1_ywwl4"]
[ext_resource type="AudioStream" uid="uid://b2wv3104111mm" path="res://enemies/roomba/pistol-shot2.ogg" id="2_2ih2p"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_xcj1h"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_2ih2p")
[resource]
script = ExtResource("1_ywwl4")
cooldown = 1.0
projectile_scene = ExtResource("1_15rxa")
shooting_sound = SubResource("AudioStreamRandomizer_xcj1h")

BIN
enemies/thug/argh.ogg Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://c263o7igq1bue"
path="res://.godot/imported/argh.ogg-8503a0ebee35f0cd47a4aff2ef845b42.oggvorbisstr"
[deps]
source_file="res://enemies/thug/argh.ogg"
dest_files=["res://.godot/imported/argh.ogg-8503a0ebee35f0cd47a4aff2ef845b42.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
enemies/thug/argh2.ogg Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bstxv3cg0wfat"
path="res://.godot/imported/argh2.ogg-f82553d092e7ecbdac51d5797eb343db.oggvorbisstr"
[deps]
source_file="res://enemies/thug/argh2.ogg"
dest_files=["res://.godot/imported/argh2.ogg-f82553d092e7ecbdac51d5797eb343db.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
enemies/thug/argh3.ogg Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://uar0r0xk1ixh"
path="res://.godot/imported/argh3.ogg-5cfd71678b491ec9e3381cd05197aa78.oggvorbisstr"
[deps]
source_file="res://enemies/thug/argh3.ogg"
dest_files=["res://.godot/imported/argh3.ogg-5cfd71678b491ec9e3381cd05197aa78.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

52
enemies/thug/thug.gd Normal file
View File

@@ -0,0 +1,52 @@
extends CharacterBody3D
@onready var enemy_hit_box: Area3D = $EnemyHitBox
@onready var player_detector: Area3D = $PlayerDetector
@onready var healthcomponent: HealthComponent = $Healthcomponent
@onready var enemy_mover_follow: NavigationAgent3D = $EnemyMoverFollow
@onready var collision_shape_3d: CollisionShape3D = $CollisionShape3D
#@onready var navigation_agent_3d: NavigationAgent3D = $NavigationAgent3D
#@export var target : Node3D
#@export var MAX_SPEED := 2.0
#
#func set_target(new_target: Node3D):
#target = new_target
#
#func _physics_process(delta: float) -> void:
#
#if is_instance_valid(target):
#navigation_agent_3d.set_target_position(target.global_position)
#var next_path_position = navigation_agent_3d.get_next_path_position()
##next_path_position.y = global_position.y
#var dir = global_position.direction_to(next_path_position)
#var new_velocity = dir*MAX_SPEED
#look_at(next_path_position)
#navigation_agent_3d.set_velocity(new_velocity)
#
##if global_position.distance_to(target.global_position) < 2:
##queue_free()
#
#else:
#velocity = lerp(velocity, Vector3.ZERO, .1)
#
#
#func _on_navigation_agent_3d_velocity_computed(safe_velocity: Vector3) -> void:
#velocity = velocity.move_toward(safe_velocity, .25)
#move_and_slide()
func _on_healthcomponent_start_dying() -> void:
#enemy_hit_box.monitoring = false
#enemy_hit_box.monitorable = false
#collision_shape_3d.disabled = true
get_tree().create_timer(1).timeout.connect(queue_free)

1
enemies/thug/thug.gltf Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

936
enemies/thug/thug.tscn Normal file
View File

@@ -0,0 +1,936 @@
[gd_scene load_steps=38 format=3 uid="uid://ddmv73d5ey1yg"]
[ext_resource type="PackedScene" uid="uid://cayq4g2opg201" path="res://enemies/thug/thug.gltf" id="1_4lv67"]
[ext_resource type="Script" path="res://enemies/thug/thug.gd" id="2_q7xpr"]
[ext_resource type="PackedScene" uid="uid://dg4xjlf2wc5qw" path="res://enemies/enemy_mover_follow.tscn" id="3_1p8x8"]
[ext_resource type="PackedScene" uid="uid://cilj11mx2ahb1" path="res://enemies/enemy_hit_box.tscn" id="3_b7sbh"]
[ext_resource type="PackedScene" uid="uid://d2p86lb72dp61" path="res://components/healthcomponent.tscn" id="4_0yek0"]
[ext_resource type="Script" path="res://enemies/enemy_mover_follow.gd" id="4_7s2u1"]
[ext_resource type="PackedScene" uid="uid://dnqcrvpokx0i0" path="res://enemies/enemy_animation_handler.tscn" id="7_00xk1"]
[ext_resource type="Script" path="res://enemies/enemy_animation_handler.gd" id="8_vuid0"]
[ext_resource type="Texture2D" uid="uid://drr1nogesyvkd" path="res://effects/smoke_02.png" id="9_ufy0m"]
[ext_resource type="AudioStream" uid="uid://bstxv3cg0wfat" path="res://enemies/thug/argh2.ogg" id="10_70jyq"]
[ext_resource type="AudioStream" uid="uid://uar0r0xk1ixh" path="res://enemies/thug/argh3.ogg" id="11_p4jio"]
[ext_resource type="AudioStream" uid="uid://c263o7igq1bue" path="res://enemies/thug/argh.ogg" id="12_j67ei"]
[sub_resource type="Animation" id="Animation_v6no0"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Node:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Node:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Node/left_arm2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(-0.265625, 1.71875, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 1, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(-0.203125, -0.109375, 0)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Node/left_arm2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base:rotation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/left_leg:rotation")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_leg:position")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.203125, -0.109375, 0)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_leg:rotation")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg/right_foot:position")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.5, 0)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg/right_foot:rotation")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/left_leg/left_foot:position")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.5, 0)]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("Node/base/left_leg/left_foot:rotation")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_3t24o"]
resource_name = "attack"
length = 0.833333
tracks/0/type = "position_3d"
tracks/0/imported = true
tracks/0/enabled = true
tracks/0/path = NodePath("Node/base")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0, 1, 0, 0.166667, 1, 0, 1, 0.0625, 0.5, 1, 0, 1, -0.1875, 0.833333, 1, 0, 1, 0)
tracks/1/type = "rotation_3d"
tracks/1/imported = true
tracks/1/enabled = true
tracks/1/path = NodePath("Node/base")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.166667, 1, 0.0434534, -0.0870728, 0.00380168, 0.995247, 0.2, 1, 0.0348663, -0.0435528, 0.00305041, 0.998438, 0.233333, 1, 0.0262103, 5.33126e-05, 0.0022931, 0.999654, 0.266667, 1, 0.0175024, 0.0436594, 0.00153126, 0.998892, 0.333333, 1, 0, 0.130526, 0, 0.991445, 0.5, 1, -0.0421331, 0.258573, 0.0112895, 0.965006, 0.8, 1, -0.00426265, 0.0261601, 0.00114217, 0.999648, 0.833333, 1, 0, 0, 0, 1)
tracks/2/type = "position_3d"
tracks/2/imported = true
tracks/2/enabled = true
tracks/2/path = NodePath("Node/base/left_leg")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = PackedFloat32Array(0, 1, -0.203125, -0.109375, 0)
tracks/3/type = "rotation_3d"
tracks/3/imported = true
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base/left_leg")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = PackedFloat32Array(0, 1, 0.0435779, -0.00190265, -0.0435779, 0.998097)
tracks/4/type = "rotation_3d"
tracks/4/imported = true
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg/left_foot")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = PackedFloat32Array(0, 1, -0.0871557, 0, 0, 0.996195)
tracks/5/type = "rotation_3d"
tracks/5/imported = true
tracks/5/enabled = true
tracks/5/path = NodePath("Node/base/left_arm")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = PackedFloat32Array(0, 1, 0.118261, -0.253611, 0.405735, 0.870101)
tracks/6/type = "rotation_3d"
tracks/6/imported = true
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base/left_arm/left_hand")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = PackedFloat32Array(0, 1, 0, -0.608761, 0, 0.793353)
tracks/7/type = "rotation_3d"
tracks/7/imported = true
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/head")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.0333333, 1, 0.00436331, 0, 0, 0.999991, 0.166667, 1, 0.0218149, 0, 0, 0.999762, 0.2, 1, 0.0130896, 0, 0, 0.999914, 0.233333, 1, 0.00436331, 0, 0, 0.999991, 0.266667, 1, -0.00436331, 0, 0, 0.999991, 0.333333, 1, -0.0218149, 0, 0, 0.999762, 0.366667, 1, -0.0217941, -0.043609, 0.000951552, 0.99881, 0.5, 1, -0.0212978, -0.216388, 0.00472161, 0.976064, 0.8, 1, -0.00214676, -0.0218114, 0.000475926, 0.99976, 0.833333, 1, 0, 0, 0, 1)
tracks/8/type = "rotation_3d"
tracks/8/imported = true
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_arm")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = PackedFloat32Array(0, 1, 0.118261, 0.253611, -0.405735, 0.870101, 0.0333333, 1, 0.0652119, 0.162264, -0.383793, 0.906709, 0.0666667, 1, 0.0113164, 0.0688115, -0.35687, 0.931548, 0.1, 1, -0.0427259, -0.0255346, -0.325314, 0.944295, 0.133333, 1, -0.0962136, -0.119549, -0.289536, 0.944786, 0.166667, 1, -0.148453, -0.212012, -0.25, 0.933013, 0.2, 1, -0.0916947, -0.126838, -0.26413, 0.951704, 0.233333, 1, -0.033926, -0.0402647, -0.275347, 0.959902, 0.266667, 1, 0.0242169, 0.0467521, -0.283529, 0.957517, 0.3, 1, 0.0820927, 0.133254, -0.288585, 0.944576, 0.333333, 1, 0.139063, 0.218286, -0.290459, 0.92122, 0.433333, 1, 0.422185, 0.314113, -0.335185, 0.781501, 0.5, 1, 0.586689, 0.359159, -0.344498, 0.638844, 0.633333, 1, 0.412744, 0.328251, -0.382615, 0.758617, 0.733333, 1, 0.269066, 0.294836, -0.399466, 0.825289, 0.833333, 1, 0.118261, 0.253611, -0.405735, 0.870101)
tracks/9/type = "rotation_3d"
tracks/9/imported = true
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_arm/right_hand")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = PackedFloat32Array(0, 1, 0, 0.608761, 0, 0.793353, 0.166667, 1, 0, 0.876727, 0, 0.480989, 0.333333, 1, 0, 0.67559, 0, 0.737277, 0.5, 1, 0, 0.152123, 0, 0.988362, 0.833333, 1, 0, 0.608761, 0, 0.793353)
tracks/10/type = "position_3d"
tracks/10/imported = true
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = PackedFloat32Array(0, 1, 0.203125, -0.109375, 0)
tracks/11/type = "rotation_3d"
tracks/11/imported = true
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = PackedFloat32Array(0, 1, 0.0435779, 0.00190265, 0.0435779, 0.998097)
tracks/12/type = "rotation_3d"
tracks/12/imported = true
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/right_leg/right_foot")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = PackedFloat32Array(0, 1, -0.0871557, 0, 0, 0.996195)
[sub_resource type="Animation" id="Animation_drd17"]
resource_name = "idle"
loop_mode = 1
tracks/0/type = "position_3d"
tracks/0/imported = true
tracks/0/enabled = true
tracks/0/path = NodePath("Node/base")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0, 1, 0, 0.533333, 1, 0, 0.941667, 0, 1, 1, 0, 1, 0)
tracks/1/type = "rotation_3d"
tracks/1/imported = true
tracks/1/enabled = true
tracks/1/path = NodePath("Node/base")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/2/type = "position_3d"
tracks/2/imported = true
tracks/2/enabled = true
tracks/2/path = NodePath("Node/base/left_leg")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = PackedFloat32Array(0, 1, -0.203125, -0.109375, 0, 0.533333, 1, -0.203125, -0.0510417, 0, 1, 1, -0.203125, -0.109375, 0)
tracks/3/type = "rotation_3d"
tracks/3/imported = true
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base/left_leg")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = PackedFloat32Array(0, 1, 0.0436194, 0, 0, 0.999048)
tracks/4/type = "rotation_3d"
tracks/4/imported = true
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg/left_foot")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = PackedFloat32Array(0, 1, -0.0871557, 0, 0, 0.996195)
tracks/5/type = "rotation_3d"
tracks/5/imported = true
tracks/5/enabled = true
tracks/5/path = NodePath("Node/base/left_arm")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = PackedFloat32Array(0, 1, 0, 0, 0.5373, 0.843391)
tracks/6/type = "rotation_3d"
tracks/6/imported = true
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base/left_arm/left_hand")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = PackedFloat32Array(0, 1, 0, 0, 0.19509, 0.980785)
tracks/7/type = "rotation_3d"
tracks/7/imported = true
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/head")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/8/type = "rotation_3d"
tracks/8/imported = true
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_arm")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = PackedFloat32Array(0, 1, 0, 0, -0.5373, 0.843391)
tracks/9/type = "rotation_3d"
tracks/9/imported = true
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_arm/right_hand")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = PackedFloat32Array(0, 1, 0, 0, -0.19509, 0.980785)
tracks/10/type = "position_3d"
tracks/10/imported = true
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = PackedFloat32Array(0, 1, 0.203125, -0.109375, 0, 0.533333, 1, 0.203125, -0.0510417, 0, 1, 1, 0.203125, -0.109375, 0)
tracks/11/type = "rotation_3d"
tracks/11/imported = true
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = PackedFloat32Array(0, 1, 0.0436194, 0, 0, 0.999048)
tracks/12/type = "rotation_3d"
tracks/12/imported = true
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/right_leg/right_foot")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = PackedFloat32Array(0, 1, -0.0871557, 0, 0, 0.996195)
[sub_resource type="Animation" id="Animation_5uhgx"]
resource_name = "reset"
length = 0.001
tracks/0/type = "position_3d"
tracks/0/imported = true
tracks/0/enabled = true
tracks/0/path = NodePath("Node/base")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0, 1, 0)
tracks/1/type = "rotation_3d"
tracks/1/imported = true
tracks/1/enabled = true
tracks/1/path = NodePath("Node/base")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/2/type = "position_3d"
tracks/2/imported = true
tracks/2/enabled = true
tracks/2/path = NodePath("Node/base/left_leg")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = PackedFloat32Array(0, 1, -0.203125, -0.109375, 0)
tracks/3/type = "rotation_3d"
tracks/3/imported = true
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base/left_leg")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/4/type = "rotation_3d"
tracks/4/imported = true
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg/left_foot")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/5/type = "rotation_3d"
tracks/5/imported = true
tracks/5/enabled = true
tracks/5/path = NodePath("Node/base/left_arm")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/6/type = "rotation_3d"
tracks/6/imported = true
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base/left_arm/left_hand")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/7/type = "rotation_3d"
tracks/7/imported = true
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/head")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/8/type = "rotation_3d"
tracks/8/imported = true
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_arm")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/9/type = "rotation_3d"
tracks/9/imported = true
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_arm/right_hand")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/10/type = "position_3d"
tracks/10/imported = true
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = PackedFloat32Array(0, 1, 0.203125, -0.109375, 0)
tracks/11/type = "rotation_3d"
tracks/11/imported = true
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/12/type = "rotation_3d"
tracks/12/imported = true
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/right_leg/right_foot")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
[sub_resource type="Animation" id="Animation_7ag3q"]
resource_name = "walk"
loop_mode = 1
tracks/0/type = "position_3d"
tracks/0/imported = true
tracks/0/enabled = true
tracks/0/path = NodePath("Node/base")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0, 1, 0, 0.1, 1, 0, 0.95, 0, 0.133333, 1, 0, 0.945833, 0, 0.233333, 1, 0, 1.04583, 0, 0.266667, 1, 0, 1.07083, 0, 0.366667, 1, 0, 1.12083, 0, 0.4, 1, 0, 1.1, 0, 0.5, 1, 0, 1, 0, 0.6, 1, 0, 0.95, 0, 0.633333, 1, 0, 0.945833, 0, 0.733333, 1, 0, 1.04583, 0, 0.766667, 1, 0, 1.07083, 0, 0.866667, 1, 0, 1.12083, 0, 0.9, 1, 0, 1.1, 0, 1, 1, 0, 1, 0)
tracks/1/type = "rotation_3d"
tracks/1/imported = true
tracks/1/enabled = true
tracks/1/path = NodePath("Node/base")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
tracks/2/type = "position_3d"
tracks/2/imported = true
tracks/2/enabled = true
tracks/2/path = NodePath("Node/base/left_leg")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = PackedFloat32Array(0, 1, -0.203125, -0.109375, 0)
tracks/3/type = "rotation_3d"
tracks/3/imported = true
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base/left_leg")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = PackedFloat32Array(0, 1, -0.21644, 0, 0, 0.976296, 0.1, 1, -0.25038, 0, 0, 0.968148, 0.133333, 1, -0.234859, 0, 0, 0.972029, 0.2, 1, -0.0392598, 0, 0, 0.999229, 0.233333, 1, 0.0595967, 0, 0, 0.998223, 0.266667, 1, 0.172216, 0, 0, 0.985059, 0.366667, 1, 0.528685, 0, 0, 0.848818, 0.4, 1, 0.503774, 0, 0, 0.863835, 0.5, 1, 0.279829, 0, 0, 0.96005, 0.6, 1, 0.346117, 0, 0, 0.938191, 0.633333, 1, 0.340653, 0, 0, 0.940189, 0.733333, 1, 0.0683055, 0, 0, 0.997664, 0.766667, 1, 0.00727216, 0, 0, 0.999974, 0.866667, 1, -0.079909, 0, 0, 0.996802, 0.9, 1, -0.113203, 0, 0, 0.993572, 1, 1, -0.21644, 0, 0, 0.976296)
tracks/4/type = "rotation_3d"
tracks/4/imported = true
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg/left_foot")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = PackedFloat32Array(0, 1, -0.108867, 0, 0, 0.994056, 0.1, 1, -0.19509, 0, 0, 0.980785, 0.133333, 1, -0.244743, 0, 0, 0.969588, 0.233333, 1, -0.561602, 0, 0, 0.827407, 0.266667, 1, -0.620236, 0, 0, 0.784416, 0.366667, 1, -0.686242, 0, 0, 0.727374, 0.4, 1, -0.573576, 0, 0, 0.819152, 0.466667, 1, -0.202218, 0, 0, 0.979341, 0.5, 1, 0, 0, 0, 1, 0.6, 1, -0.173648, 0, 0, 0.984808, 0.633333, 1, -0.203642, 0, 0, 0.979045, 0.733333, 1, -0.0479781, 0, 0, 0.998848, 0.766667, 1, -0.0189066, 0, 0, 0.999821, 0.833333, 1, -0.00727215, 0, 0, 0.999974, 0.866667, 1, -0.00145444, 0, 0, 0.999999, 0.9, 1, -0.0218149, 0, 0, 0.999762, 1, 1, -0.108867, 0, 0, 0.994056)
tracks/5/type = "rotation_3d"
tracks/5/imported = true
tracks/5/enabled = true
tracks/5/path = NodePath("Node/base/left_arm")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = PackedFloat32Array(0, 1, 0.12941, -0.224144, 0.482963, 0.836516, 0.1, 1, 0.187303, -0.324419, 0.463592, 0.802965, 0.133333, 1, 0.188651, -0.326753, 0.463045, 0.802018, 0.2, 1, 0.0825238, -0.142935, 0.493143, 0.854148, 0.233333, 1, 0.0276203, -0.0478398, 0.499237, 0.864703, 0.266667, 1, -0.0116345, 0.0201515, 0.499865, 0.865791, 0.366667, 1, -0.081089, 0.14045, 0.493381, 0.854561, 0.4, 1, -0.0975452, 0.168953, 0.490393, 0.849385, 0.5, 1, -0.139915, 0.242339, 0.480025, 0.831428, 0.6, 1, -0.205359, 0.355693, 0.455881, 0.789609, 0.633333, 1, -0.207347, 0.359135, 0.454981, 0.78805, 0.666667, 1, -0.150353, 0.260419, 0.476859, 0.825943, 0.7, 1, -0.0911178, 0.157821, 0.491627, 0.851524, 0.733333, 1, -0.0305242, 0.0528695, 0.499067, 0.86441, 0.766667, 1, 0.0116345, -0.0201515, 0.499865, 0.865791, 0.866667, 1, 0.081089, -0.14045, 0.493381, 0.854561, 0.9, 1, 0.0954045, -0.165245, 0.490814, 0.850114, 1, 1, 0.12941, -0.224144, 0.482963, 0.836516)
tracks/6/type = "rotation_3d"
tracks/6/imported = true
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base/left_arm/left_hand")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = PackedFloat32Array(0, 1, 0, 0, 0.258819, 0.965926)
tracks/7/type = "rotation_3d"
tracks/7/imported = true
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/right_arm")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = PackedFloat32Array(0, 1, -0.139915, -0.242339, -0.480025, 0.831428, 0.1, 1, -0.205359, -0.355693, -0.455881, 0.789609, 0.133333, 1, -0.207347, -0.359135, -0.454981, 0.78805, 0.166667, 1, -0.150353, -0.260419, -0.476859, 0.825943, 0.2, 1, -0.0911178, -0.157821, -0.491628, 0.851524, 0.233333, 1, -0.0305243, -0.0528696, -0.499067, 0.86441, 0.266667, 1, 0.0116345, 0.0201515, -0.499865, 0.865791, 0.366667, 1, 0.081089, 0.14045, -0.493381, 0.854561, 0.4, 1, 0.0954045, 0.165245, -0.490814, 0.850114, 0.5, 1, 0.12941, 0.224144, -0.482963, 0.836516, 0.6, 1, 0.187303, 0.324419, -0.463592, 0.802965, 0.633333, 1, 0.188651, 0.326753, -0.463045, 0.802018, 0.7, 1, 0.0825238, 0.142935, -0.493143, 0.854148, 0.733333, 1, 0.0276203, 0.0478397, -0.499237, 0.864703, 0.766667, 1, -0.0116345, -0.0201515, -0.499865, 0.865791, 0.866667, 1, -0.081089, -0.14045, -0.493381, 0.854561, 0.9, 1, -0.0975452, -0.168953, -0.490393, 0.849385, 1, 1, -0.139915, -0.242339, -0.480025, 0.831428)
tracks/8/type = "rotation_3d"
tracks/8/imported = true
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_arm/right_hand")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = PackedFloat32Array(0, 1, 0, 0, -0.258819, 0.965926)
tracks/9/type = "position_3d"
tracks/9/imported = true
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_leg")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = PackedFloat32Array(0, 1, 0.203125, -0.109375, 0)
tracks/10/type = "rotation_3d"
tracks/10/imported = true
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = PackedFloat32Array(0, 1, 0.279829, 0, 0, 0.96005, 0.1, 1, 0.346117, 0, 0, 0.938191, 0.133333, 1, 0.340653, 0, 0, 0.940189, 0.233333, 1, 0.0683055, 0, 0, 0.997664, 0.266667, 1, 0.00727213, 0, 0, 0.999974, 0.366667, 1, -0.079909, 0, 0, 0.996802, 0.4, 1, -0.113203, 0, 0, 0.993572, 0.5, 1, -0.21644, 0, 0, 0.976296, 0.6, 1, -0.25038, 0, 0, 0.968148, 0.633333, 1, -0.234859, 0, 0, 0.972029, 0.7, 1, -0.0392599, 0, 0, 0.999229, 0.733333, 1, 0.0595968, 0, 0, 0.998223, 0.766667, 1, 0.172216, 0, 0, 0.985059, 0.866667, 1, 0.528685, 0, 0, 0.848818, 0.9, 1, 0.503774, 0, 0, 0.863835, 1, 1, 0.279829, 0, 0, 0.96005)
tracks/11/type = "rotation_3d"
tracks/11/imported = true
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg/right_foot")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.1, 1, -0.173648, 0, 0, 0.984808, 0.133333, 1, -0.203642, 0, 0, 0.979046, 0.233333, 1, -0.0479781, 0, 0, 0.998848, 0.266667, 1, -0.0189066, 0, 0, 0.999821, 0.333333, 1, -0.00727214, 0, 0, 0.999974, 0.366667, 1, -0.00145444, 0, 0, 0.999999, 0.4, 1, -0.0218149, 0, 0, 0.999762, 0.6, 1, -0.19509, 0, 0, 0.980785, 0.633333, 1, -0.244743, 0, 0, 0.969588, 0.733333, 1, -0.561602, 0, 0, 0.827407, 0.766667, 1, -0.620236, 0, 0, 0.784416, 0.866667, 1, -0.686242, 0, 0, 0.727374, 0.9, 1, -0.573577, 0, 0, 0.819152, 0.966667, 1, -0.202218, 0, 0, 0.979341, 1, 1, 0, 0, 0, 1)
tracks/12/type = "rotation_3d"
tracks/12/imported = true
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/head")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
[sub_resource type="AnimationLibrary" id="AnimationLibrary_sodno"]
_data = {
"RESET": SubResource("Animation_v6no0"),
"attack": SubResource("Animation_3t24o"),
"idle": SubResource("Animation_drd17"),
"reset": SubResource("Animation_5uhgx"),
"walk": SubResource("Animation_7ag3q")
}
[sub_resource type="Animation" id="Animation_01rqh"]
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Node:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.266667, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0.3, 0.266667), Vector3(0, 0, 0.5)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Node:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(1.5708, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Node/left_arm2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(-0.265625, 1.71875, 0), Vector3(-0.265625, 1.71875, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Node/base:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(0, 1, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Node/base/left_leg:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(-0.203125, -0.109375, 0), Vector3(-0.203125, -0.109375, 0)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Node/left_arm2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Node/base:rotation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Node/base/left_leg:rotation")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Node/base/right_leg:position")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.203125, -0.109375, 0), Vector3(0.203125, -0.109375, 0)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Node/base/right_leg:rotation")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("Node/base/right_leg/right_foot:position")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, -0.5, 0), Vector3(0, -0.5, 0)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("Node/base/right_leg/right_foot:rotation")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("Node/base/left_leg/left_foot:position")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, -0.5, 0), Vector3(0, -0.5, 0)]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("Node/base/left_leg/left_foot:rotation")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ncqu2"]
_data = {
"death": SubResource("Animation_01rqh")
}
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_nuhqq"]
radius = 0.2
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gsh0o"]
animation = &"idle"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g4uqm"]
animation = &"attack"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_bdo2q"]
animation = &"walk"
[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_no4fp"]
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_6b2mn"]
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_sf7fy"]
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_qugov"]
graph_offset = Vector2(-86.9528, -40.6286)
nodes/Animation/node = SubResource("AnimationNodeAnimation_bdo2q")
nodes/Animation/position = Vector2(100, 60)
"nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_gsh0o")
"nodes/Animation 2/position" = Vector2(100, 280)
"nodes/Animation 3/node" = SubResource("AnimationNodeAnimation_g4uqm")
"nodes/Animation 3/position" = Vector2(100, 520)
nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_no4fp")
nodes/TimeScale/position = Vector2(560, 0)
nodes/attack/node = SubResource("AnimationNodeOneShot_6b2mn")
nodes/attack/position = Vector2(800, -20)
nodes/idle_walk_blend/node = SubResource("AnimationNodeBlend2_sf7fy")
nodes/idle_walk_blend/position = Vector2(320, 40)
nodes/output/position = Vector2(1020, -20)
node_connections = [&"TimeScale", 0, &"idle_walk_blend", &"attack", 0, &"TimeScale", &"attack", 1, &"Animation 3", &"idle_walk_blend", 0, &"Animation", &"idle_walk_blend", 1, &"Animation 2", &"output", 0, &"attack"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8i6dy"]
radius = 0.2
[sub_resource type="SphereShape3D" id="SphereShape3D_2xuhp"]
[sub_resource type="SphereShape3D" id="SphereShape3D_wjrfk"]
radius = 17.0
[sub_resource type="Curve" id="Curve_idfk0"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_0ctqo"]
curve = SubResource("Curve_idfk0")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_dwd3a"]
angle_min = 1.07288e-05
angle_max = 361.5
direction = Vector3(0, 1, 0)
spread = 15.0
initial_velocity_min = 1.45
initial_velocity_max = 2.75
gravity = Vector3(0, 0, 0)
alpha_curve = SubResource("CurveTexture_0ctqo")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kfvph"]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_color = Color(1, 0, 0, 1)
albedo_texture = ExtResource("9_ufy0m")
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_kig6q"]
material = SubResource("StandardMaterial3D_kfvph")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_280ad"]
streams_count = 3
stream_0/stream = ExtResource("10_70jyq")
stream_1/stream = ExtResource("11_p4jio")
stream_2/stream = ExtResource("12_j67ei")
[node name="thug" instance=ExtResource("1_4lv67")]
collision_layer = 4
collision_mask = 7
axis_lock_angular_x = true
axis_lock_angular_z = true
script = ExtResource("2_q7xpr")
[node name="Node" parent="." index="0"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0)
[node name="left_leg" parent="Node/base" index="1"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, -0.203125, -0.109375, 0)
[node name="left_foot" parent="Node/base/left_leg" index="1"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, 0, -0.5, 0)
[node name="left_arm" parent="Node/base" index="2"]
transform = Transform3D(0.557044, -0.830473, -0.00381199, 0.773273, 0.51699, 0.367109, -0.302905, -0.207444, 0.930167, -0.265625, 0.71875, 0)
[node name="left_hand" parent="Node/base/left_arm" index="2"]
transform = Transform3D(0.793353, -0.608761, 0, 0.608761, 0.793353, 0, 0, 0, 1, -0.453125, -0.015625, 0)
[node name="right_arm" parent="Node/base" index="4"]
transform = Transform3D(0.557043, 0.830472, -0.00381183, -0.773272, 0.516989, -0.36711, -0.302904, 0.207443, 0.930171, 0.265625, 0.71875, 0)
[node name="right_hand" parent="Node/base/right_arm" index="1"]
transform = Transform3D(0.793353, 0.608761, 0, -0.608761, 0.793353, 0, 0, 0, 1, 0.453125, -0.015625, 0)
[node name="right_leg" parent="Node/base" index="5"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, 0.203125, -0.109375, 0)
[node name="right_foot" parent="Node/base/right_leg" index="1"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, 0, -0.5, 0)
[node name="AnimationPlayer" parent="." index="1"]
libraries = {
"": SubResource("AnimationLibrary_sodno"),
"custom": SubResource("AnimationLibrary_ncqu2")
}
[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_nuhqq")
[node name="AnimationTree" type="AnimationTree" parent="." index="3"]
tree_root = SubResource("AnimationNodeBlendTree_qugov")
anim_player = NodePath("../AnimationPlayer")
parameters/TimeScale/scale = 1.5
parameters/attack/active = false
parameters/attack/internal_active = false
parameters/attack/request = 0
parameters/idle_walk_blend/blend_amount = -1.0
[node name="EnemyMoverFollow" parent="." index="4" instance=ExtResource("3_1p8x8")]
avoidance_enabled = false
script = ExtResource("4_7s2u1")
[node name="EnemyHitBox" parent="." index="5" node_paths=PackedStringArray("health_component") instance=ExtResource("3_b7sbh")]
health_component = NodePath("../Healthcomponent")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyHitBox" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_8i6dy")
[node name="Healthcomponent" parent="." index="6" instance=ExtResource("4_0yek0")]
max_health = 10.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Healthcomponent" index="0"]
shape = SubResource("SphereShape3D_2xuhp")
disabled = true
[node name="PlayerDetector" type="Area3D" parent="." index="7"]
collision_layer = 0
collision_mask = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector" index="0"]
shape = SubResource("SphereShape3D_wjrfk")
[node name="EnemyAnimationHandler" parent="." index="8" node_paths=PackedStringArray("animation_tree") instance=ExtResource("7_00xk1")]
script = ExtResource("8_vuid0")
animation_tree = NodePath("../AnimationTree")
[node name="GPUParticles3D" type="GPUParticles3D" parent="." index="9"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0)
emitting = false
amount = 3
one_shot = true
explosiveness = 0.8
randomness = 0.77
process_material = SubResource("ParticleProcessMaterial_dwd3a")
draw_pass_1 = SubResource("QuadMesh_kig6q")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="." index="10"]
stream = SubResource("AudioStreamRandomizer_280ad")
bus = &"SFX"
[connection signal="velocity_computed" from="EnemyMoverFollow" to="EnemyMoverFollow" method="_on_navigation_agent_3d_velocity_computed"]
[connection signal="start_dying" from="Healthcomponent" to="." method="_on_healthcomponent_start_dying"]
[connection signal="start_dying" from="Healthcomponent" to="CollisionShape3D" method="free"]
[connection signal="start_dying" from="Healthcomponent" to="EnemyMoverFollow" method="disable"]
[connection signal="start_dying" from="Healthcomponent" to="EnemyHitBox/CollisionShape3D" method="free"]
[connection signal="start_dying" from="Healthcomponent" to="EnemyAnimationHandler" method="dying"]
[connection signal="start_dying" from="Healthcomponent" to="AudioStreamPlayer3D" method="play"]
[connection signal="start_dying" from="Healthcomponent" to="GPUParticles3D" method="set_emitting" binds= [true]]
[connection signal="body_entered" from="PlayerDetector" to="EnemyMoverFollow" method="set_target"]

BIN
enemies/thug/thug_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsauxiqvxm0vp"
path="res://.godot/imported/thug_0.png-52f4cbdca1415c493083fcd86193d1e1.ctex"
metadata={
"vram_texture": false
}
generator_parameters={
"md5": "3c49c0714937235842ef49f7a008a94f"
}
[deps]
source_file="res://enemies/thug/thug_0.png"
dest_files=["res://.godot/imported/thug_0.png-52f4cbdca1415c493083fcd86193d1e1.ctex"]
[params]
compress/mode=3
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

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://66n4ntndws0b"
path="res://.godot/imported/450768__tycoh__plasmapistol_shot.wav-5860a471a3d60e44953d0c59bc09f915.sample"
[deps]
source_file="res://enemies/turret/450768__tycoh__plasmapistol_shot.wav"
dest_files=["res://.godot/imported/450768__tycoh__plasmapistol_shot.wav-5860a471a3d60e44953d0c59bc09f915.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=0

View File

@@ -0,0 +1,53 @@
[gd_scene load_steps=11 format=3 uid="uid://bn8pvmo4pf52t"]
[ext_resource type="Texture2D" uid="uid://dg28fd1gyn80b" path="res://effects/flare_01.png" id="1_w0wl5"]
[ext_resource type="Script" path="res://effects/explosion.gd" id="2_ot2uu"]
[ext_resource type="AudioStream" uid="uid://cj6j27c05nnia" path="res://enemies/turret/energy_projectile_hit.ogg" id="3_hiu5e"]
[sub_resource type="Curve" id="Curve_0c3bx"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.739691, 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_1nivw"]
curve = SubResource("Curve_0c3bx")
[sub_resource type="Gradient" id="Gradient_qsa11"]
colors = PackedColorArray(1, 1, 1, 1, 0, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_qb1bo"]
gradient = SubResource("Gradient_qsa11")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_c46h2"]
direction = Vector3(0, 1, 0)
initial_velocity_max = 3.0
gravity = Vector3(0, 0, 0)
color_ramp = SubResource("GradientTexture1D_qb1bo")
alpha_curve = SubResource("CurveTexture_1nivw")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hqavp"]
transparency = 1
blend_mode = 1
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_w0wl5")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_25sbj"]
material = SubResource("StandardMaterial3D_hqavp")
[node name="Node3D" type="GPUParticles3D"]
emitting = false
amount = 16
lifetime = 0.5
one_shot = true
explosiveness = 0.9
process_material = SubResource("ParticleProcessMaterial_c46h2")
draw_pass_1 = SubResource("QuadMesh_25sbj")
script = ExtResource("2_ot2uu")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("3_hiu5e")
autoplay = true
bus = &"SFX"
[connection signal="ready" from="." to="." method="restart"]

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://daij4ugs4fca4"
path="res://.godot/imported/building_explosion.ogg-b91d84e896c0aad51493da22860aa670.oggvorbisstr"
[deps]
source_file="res://enemies/turret/building_explosion.ogg"
dest_files=["res://.godot/imported/building_explosion.ogg-b91d84e896c0aad51493da22860aa670.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cj6j27c05nnia"
path="res://.godot/imported/energy_projectile_hit.ogg-e9d13549971fb79d34cc222218dd80f2.oggvorbisstr"
[deps]
source_file="res://enemies/turret/energy_projectile_hit.ogg"
dest_files=["res://.godot/imported/energy_projectile_hit.ogg-e9d13549971fb79d34cc222218dd80f2.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="Weapon" load_steps=4 format=3 uid="uid://bmdx14r8log88"]
[ext_resource type="PackedScene" uid="uid://begy52yll3dbl" path="res://enemies/turret/plasma_projectile.tscn" id="1_tfytu"]
[ext_resource type="Script" path="res://player/weapons/weapon.gd" id="1_yyw1r"]
[ext_resource type="AudioStream" uid="uid://66n4ntndws0b" path="res://enemies/turret/450768__tycoh__plasmapistol_shot.wav" id="3_5xj18"]
[resource]
script = ExtResource("1_yyw1r")
cooldown = 3.0
projectile_scene = ExtResource("1_tfytu")
shooting_sound = ExtResource("3_5xj18")

View File

@@ -0,0 +1,157 @@
[gd_scene load_steps=20 format=3 uid="uid://begy52yll3dbl"]
[ext_resource type="Script" path="res://components/projectile.gd" id="1_oxlg3"]
[ext_resource type="Script" path="res://components/projectile_mover_linear.gd" id="1_wakmi"]
[ext_resource type="PackedScene" uid="uid://bn8pvmo4pf52t" path="res://enemies/turret/Plasma_explosion.tscn" id="2_m6ryp"]
[ext_resource type="Texture2D" uid="uid://dg28fd1gyn80b" path="res://effects/flare_01.png" id="3_myjsa"]
[sub_resource type="SphereShape3D" id="SphereShape3D_l4npu"]
radius = 0.1
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_30vvv"]
load_path = "res://.godot/imported/light_01.png-043e946f6df880e55d2a4615e19b1007.s3tc.ctex"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rnbhs"]
transparency = 1
shading_mode = 0
albedo_texture = SubResource("CompressedTexture2D_30vvv")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_6dujq"]
material = SubResource("StandardMaterial3D_rnbhs")
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_8hau8"]
load_path = "res://.godot/imported/light_01.png-043e946f6df880e55d2a4615e19b1007.s3tc.ctex"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8m8ga"]
transparency = 1
shading_mode = 0
albedo_color = Color(0, 1, 1, 1)
albedo_texture = SubResource("CompressedTexture2D_8hau8")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_rfbef"]
material = SubResource("StandardMaterial3D_8m8ga")
[sub_resource type="Animation" id="Animation_1ejtb"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeshInstance3D:mesh:size")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MeshInstance3D/MeshInstance3D2:mesh:size")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
[sub_resource type="Animation" id="Animation_eeyvp"]
resource_name = "glow"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeshInstance3D:mesh:size")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(1, 1), Vector2(0.5, 0.5)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MeshInstance3D/MeshInstance3D2:mesh:size")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(1, 1), Vector2(0.5, 0.5)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lu8c1"]
_data = {
"RESET": SubResource("Animation_1ejtb"),
"glow": SubResource("Animation_eeyvp")
}
[sub_resource type="Gradient" id="Gradient_od0rb"]
colors = PackedColorArray(0.505882, 1, 1, 1, 1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_h0x7y"]
gradient = SubResource("Gradient_od0rb")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_rnpni"]
emission_shape = 1
emission_sphere_radius = 0.3
gravity = Vector3(0, 1, 0)
color_ramp = SubResource("GradientTexture1D_h0x7y")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h0omr"]
transparency = 1
blend_mode = 1
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("3_myjsa")
billboard_mode = 1
[sub_resource type="QuadMesh" id="QuadMesh_2084w"]
material = SubResource("StandardMaterial3D_h0omr")
[node name="PlasmaProjectile" type="CharacterBody3D"]
collision_layer = 64
collision_mask = 9
script = ExtResource("1_oxlg3")
damage = 100.0
collsion_scene = ExtResource("2_m6ryp")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_l4npu")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("QuadMesh_6dujq")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0)
mesh = SubResource("QuadMesh_rfbef")
skeleton = NodePath("../..")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_lu8c1")
}
autoplay = "glow"
speed_scale = 3.0
[node name="ProjectileMoverLinear" type="Node3D" parent="."]
script = ExtResource("1_wakmi")
speed = 15.0
[node name="GPUParticles3D" type="GPUParticles3D" parent="."]
amount = 16
process_material = SubResource("ParticleProcessMaterial_rnpni")
draw_pass_1 = SubResource("QuadMesh_2084w")
[connection signal="collided" from="." to="ProjectileMoverLinear" method="queue_free"]
[connection signal="collided" from="." to="CollisionShape3D" method="set_disabled" binds= [true]]
[connection signal="collided" from="." to="MeshInstance3D" method="set_visible" binds= [false]]
[connection signal="collided" from="." to="GPUParticles3D" method="set_emitting" binds= [false]]

View File

@@ -0,0 +1,6 @@
extends StaticBody3D
func _on_healthcomponent_start_dying() -> void:
get_tree().create_timer(3).timeout.connect(queue_free)
$CollisionShape3D.queue_free()

View File

@@ -0,0 +1,209 @@
[gd_scene load_steps=16 format=3 uid="uid://myjcm7eg043b"]
[ext_resource type="Script" path="res://enemies/turret/plasma_turret.gd" id="1_5cmh7"]
[ext_resource type="PackedScene" uid="uid://ccsrmndqy43ph" path="res://enemies/turret/turret.tscn" id="1_5hqga"]
[ext_resource type="PackedScene" uid="uid://b7mq56myq16y6" path="res://enemies/EnemyWeaponSlot.tscn" id="2_eiq1i"]
[ext_resource type="PackedScene" uid="uid://mlq22lwd7tip" path="res://enemies/player_detector.tscn" id="2_we0x8"]
[ext_resource type="Resource" uid="uid://bmdx14r8log88" path="res://enemies/turret/plasma_launcher.tres" id="3_6qvlc"]
[ext_resource type="PackedScene" uid="uid://cilj11mx2ahb1" path="res://enemies/enemy_hit_box.tscn" id="3_gaf3p"]
[ext_resource type="PackedScene" uid="uid://d2p86lb72dp61" path="res://components/healthcomponent.tscn" id="4_l8nu8"]
[ext_resource type="PackedScene" uid="uid://5q0aw58r81vp" path="res://effects/explosion.tscn" id="7_uavmy"]
[ext_resource type="AudioStream" uid="uid://daij4ugs4fca4" path="res://enemies/turret/building_explosion.ogg" id="8_iow2f"]
[sub_resource type="SphereShape3D" id="SphereShape3D_2ydgc"]
radius = 20.0
[sub_resource type="BoxShape3D" id="BoxShape3D_a2pej"]
size = Vector3(1, 1.3, 1)
[sub_resource type="SphereShape3D" id="SphereShape3D_ae38j"]
[sub_resource type="Animation" id="Animation_xts0o"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Turret/blockbench_export/Node/base/bearing:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0.8125, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Turret/blockbench_export/Node/base/bearing:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Turret/blockbench_export/Node/base/bearing/tilt:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0.359375, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Turret/blockbench_export/Node/base/bearing/tilt:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Turret:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_j1uus"]
resource_name = "dying"
length = 3.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Turret/blockbench_export/Node/base/bearing:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0.8125, 0), Vector3(1, 0.1125, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Turret/blockbench_export/Node/base/bearing:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(8.74228e-08, 2.35619, 3.14159)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Turret/blockbench_export/Node/base/bearing/tilt:position")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0.359375, 0), Vector3(-1.7, 0.059375, -1.3)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Turret/blockbench_export/Node/base/bearing/tilt:rotation")
tracks/3/interp = 2
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(3.14159, 0, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Turret:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 1, 3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(0, -3, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_j87wu"]
_data = {
"RESET": SubResource("Animation_xts0o"),
"dying": SubResource("Animation_j1uus")
}
[node name="PlasmaTurret" type="StaticBody3D"]
collision_layer = 4
collision_mask = 7
script = ExtResource("1_5cmh7")
[node name="Turret" parent="." instance=ExtResource("1_5hqga")]
[node name="EnemyWeaponSlot" parent="Turret/blockbench_export/Node/base/bearing/tilt/beveled_cuboid" index="0" instance=ExtResource("2_eiq1i")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -7.34788e-17, 0.3, 0.6)
lead_speed = 15
weapon = ExtResource("3_6qvlc")
[node name="PlayerDetector" parent="." instance=ExtResource("2_we0x8")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"]
shape = SubResource("SphereShape3D_2ydgc")
[node name="EnemyHitBox" parent="." node_paths=PackedStringArray("health_component") instance=ExtResource("3_gaf3p")]
health_component = NodePath("../Healthcomponent")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyHitBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.65, 0)
shape = SubResource("BoxShape3D_a2pej")
[node name="Healthcomponent" parent="." instance=ExtResource("4_l8nu8")]
max_health = 500.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Healthcomponent"]
shape = SubResource("SphereShape3D_ae38j")
disabled = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.65, 0)
shape = SubResource("BoxShape3D_a2pej")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_j87wu")
}
[node name="Explosion" parent="." instance=ExtResource("7_uavmy")]
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("8_iow2f")
bus = &"SFX"
[connection signal="new_target" from="PlayerDetector" to="Turret" method="set_target"]
[connection signal="new_target" from="PlayerDetector" to="Turret/blockbench_export/Node/base/bearing/tilt/beveled_cuboid/EnemyWeaponSlot" method="set_target"]
[connection signal="start_dying" from="Healthcomponent" to="." method="_on_healthcomponent_start_dying"]
[connection signal="start_dying" from="Healthcomponent" to="Turret/blockbench_export/Node/base/bearing/tilt/beveled_cuboid/EnemyWeaponSlot" method="queue_free"]
[connection signal="start_dying" from="Healthcomponent" to="Explosion" method="play"]
[connection signal="start_dying" from="Healthcomponent" to="AudioStreamPlayer3D" method="play"]
[connection signal="start_dying" from="Healthcomponent" to="AnimationPlayer" method="play" binds= ["dying"]]
[editable path="Turret"]
[editable path="Turret/blockbench_export"]

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,36 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dvddh2sdnjmld"
path="res://.godot/imported/turret.gltf-e0420d9bd2228ac60b53cd4787255b60.scn"
[deps]
source_file="res://enemies/turret/turret.gltf"
dest_files=["res://.godot/imported/turret.gltf-e0420d9bd2228ac60b53cd4787255b60.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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,11 @@
[gd_scene load_steps=3 format=3 uid="uid://ccsrmndqy43ph"]
[ext_resource type="Script" path="res://turrettest.gd" id="1_vb1n6"]
[ext_resource type="PackedScene" uid="uid://dvddh2sdnjmld" path="res://enemies/turret/turret.gltf" id="2_vhgge"]
[node name="Turret" type="Node3D"]
script = ExtResource("1_vb1n6")
[node name="blockbench_export" parent="." instance=ExtResource("2_vhgge")]
[editable path="blockbench_export"]

BIN
enemies/turret/turret_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtvy2uv7vfpyq"
path="res://.godot/imported/turret_0.png-1a69b56efa6f848da3d972614b1bd6a8.ctex"
metadata={
"vram_texture": false
}
generator_parameters={
"md5": "60ff1eea1ccf495e7d357320f50368ce"
}
[deps]
source_file="res://enemies/turret/turret_0.png"
dest_files=["res://.godot/imported/turret_0.png-1a69b56efa6f848da3d972614b1bd6a8.ctex"]
[params]
compress/mode=3
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