10 Commits

Author SHA1 Message Date
GameJammer
549aa9f7ac looping music , transition speed up, enemy spped up 2023-09-14 20:47:37 -07:00
af3fc06e12 Fix minor enemy placement issues 2023-09-14 19:15:51 -07:00
7bf559a800 Release Candidate v0.1 2023-09-14 19:13:54 -07:00
GameJammer
54b044142d fun stuff 2023-09-14 14:17:27 -07:00
568eb9e6e0 all that we can do with this emotion 2023-09-14 02:41:10 -07:00
f3528d897c Update falling petals 2023-09-13 20:06:07 -07:00
ce7576731c Falling rose petal effect 2023-09-13 19:39:10 -07:00
6138957524 Tweak enemy stuff 2023-09-13 16:40:16 -07:00
17f2003fe0 Main menu UI 2023-09-13 12:17:36 -07:00
915a6ed72c Basic ending 2023-09-13 11:12:51 -07:00
130 changed files with 7819 additions and 1821 deletions

Binary file not shown.

View File

@@ -0,0 +1,33 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://bu2j6b01rdsf6"
path="res://.godot/imported/Alegreya-Regular.ttf-2cd913ccea05a4852bcc67731f6ca49e.fontdata"
[deps]
source_file="res://Animations/Alegreya-Regular.ttf"
dest_files=["res://.godot/imported/Alegreya-Regular.ttf-2cd913ccea05a4852bcc67731f6ca49e.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

BIN
Animations/GameEnding.res Normal file

Binary file not shown.

BIN
Animations/OnHitHedron.res Normal file

Binary file not shown.

BIN
Animations/OnHitOrb.res Normal file

Binary file not shown.

BIN
Animations/OnHitPyramid.res Normal file

Binary file not shown.

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=8 format=3 uid="uid://cjl20bs56430j"]
[ext_resource type="Texture2D" uid="uid://b1ucutlpx3fnp" path="res://Textures/GUI/INTRO LORE.png" id="1_f4dp3"]
[ext_resource type="Texture2D" uid="uid://haxbuoepqn2b" path="res://Textures/GUI/LEVEL DROP 1.png" id="2_r3e0d"]
[ext_resource type="Texture2D" uid="uid://b1ucutlpx3fnp" path="res://UI/INTRO LORE.png" id="1_f4dp3"]
[ext_resource type="Texture2D" uid="uid://haxbuoepqn2b" path="res://UI/LEVEL DROP 1.png" id="2_r3e0d"]
[sub_resource type="Animation" id="Animation_3u8q8"]
resource_name = "FirstLevel"
@@ -198,7 +198,6 @@ mouse_filter = 2
color = Color(0, 0, 0, 1)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
speed_scale = 64.0
libraries = {
"": SubResource("AnimationLibrary_iabf8")
}

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://i80n0wsjidwy"
path="res://.godot/imported/An-Imitation-of-Heaven.ogg-12654ddfdf5a8cd77d3da6d43ce88131.oggvorbisstr"
[deps]
source_file="res://Audio/BGM/An-Imitation-of-Heaven.ogg"
dest_files=["res://.godot/imported/An-Imitation-of-Heaven.ogg-12654ddfdf5a8cd77d3da6d43ce88131.oggvorbisstr"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/BossTheme.ogg-459b51256339e59464889a466918555
[params]
loop=false
loop_offset=0
bpm=0
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

BIN
Audio/BGM/GameEnding.ogg Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bjr3v62ssdsg8"
path="res://.godot/imported/GameEnding.ogg-2b922cb2ed68cfb8198d59aa5e820136.oggvorbisstr"
[deps]
source_file="res://Audio/BGM/GameEnding.ogg"
dest_files=["res://.godot/imported/GameEnding.ogg-2b922cb2ed68cfb8198d59aa5e820136.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
Audio/SFX/HitObstacle.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://6yf38ykqn31u"
path="res://.godot/imported/HitObstacle.wav-1156edf3c0f09f2940143fa0f6a748cd.sample"
[deps]
source_file="res://Audio/SFX/HitObstacle.wav"
dest_files=["res://.godot/imported/HitObstacle.wav-1156edf3c0f09f2940143fa0f6a748cd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
Audio/SFX/hit.ogg Normal file

Binary file not shown.

19
Audio/SFX/hit.ogg.import Normal file
View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://fjla2rrw6ilt"
path="res://.godot/imported/hit.ogg-2e022f04d34e894511a1026c55efba44.oggvorbisstr"
[deps]
source_file="res://Audio/SFX/hit.ogg"
dest_files=["res://.godot/imported/hit.ogg-2e022f04d34e894511a1026c55efba44.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -11,7 +11,7 @@ _data = {
point_count = 2
[sub_resource type="CylinderShape3D" id="CylinderShape3D_e4v7f"]
height = 7.0
height = 2.72407
radius = 0.154574
[node name="EnemyBullet" type="Path3D"]
@@ -26,7 +26,7 @@ tilt_enabled = false
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
collision_layer = 0
collision_mask = 2
collision_mask = 3
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 10

View File

@@ -9,6 +9,8 @@ public partial class FireAtPlayer : Timer
private PackedScene _fireProjectile;
[Export]
private double _distanceToPlayer = 3;
[Export]
private AudioStreamPlayer _audioPlayer;
public void OnFireAtPlayer()
{
@@ -23,6 +25,8 @@ public partial class FireAtPlayer : Timer
projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0);
projectile.Position = _enemy.Position;
AddChild(projectile);
_audioPlayer.Play();
}
}
}

View File

@@ -0,0 +1,19 @@
using Godot;
public partial class BossAttack : Node3D
{
public void OnOrbHit(Node node)
{
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, node);
Delete();
}
}
public void Delete()
{
QueueFree();
}
}

View File

@@ -1,26 +1,6 @@
using Godot;
using Godot.Collections;
using System.Linq;
public partial class GodCircuitAttacks : Timer
{
[Export]
public Array<PackedScene> _attacks;
private int _currentAttack = 0;
public override void _Process(double delta)
{
if (GetTree().GetFirstNodeInGroup("Player") != null)
Paused = false;
else
Paused = true;
}
public void OnTimeout()
{
_currentAttack = GD.RandRange(0, _attacks.Count - 1);
var attack = _attacks.ElementAt(_currentAttack).Instantiate();
AddChild(attack);
}
}

View File

@@ -0,0 +1,574 @@
[gd_scene load_steps=9 format=3 uid="uid://b75khmojjbq4f"]
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/BossAttack.cs" id="1_xty5l"]
[ext_resource type="Texture2D" uid="uid://cpvq0rru8k7l5" path="res://Textures/Projectiles/Layer 3.png" id="2_kceeh"]
[ext_resource type="Texture2D" uid="uid://x8f4g1rccvud" path="res://Textures/Projectiles/Layer 4.png" id="3_1s7oj"]
[ext_resource type="AudioStream" uid="uid://cfj82os5p8i4p" path="res://Audio/SFX/shooting.wav" id="4_h0ftg"]
[sub_resource type="Animation" id="Animation_8rgmo"]
resource_name = "PyramidAttack"
length = 8.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MainOrb/CollisionShape3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainOrb/CollisionShape3D/Sprite3D:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 6.26573, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Triangle1/CollisionShape3D:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3, 8),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, -2.01695), Vector3(0, 0, -2.01695), Vector3(15, 0, -2.017)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Triangle1:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Triangle2:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Triangle2/CollisionShape3D:position")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(3, 8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.0265542, 0, -2.01695), Vector3(0.027, 0, -15)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Triangle3:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Triangle3/CollisionShape3D:position")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(3, 8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, -2.01695), Vector3(-15, 0, -2.017)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Triangle4:visible")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Triangle4/CollisionShape3D:position")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(3, 8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, -2.01695), Vector3(0, 0, 13)]
}
tracks/10/type = "method"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("MainOrb")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(2.9),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"Delete"
}]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("Triangle1:monitoring")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("Triangle1:monitorable")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("Triangle2:monitoring")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/14/type = "value"
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/path = NodePath("Triangle2:monitorable")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/15/type = "value"
tracks/15/imported = false
tracks/15/enabled = true
tracks/15/path = NodePath("Triangle3:monitoring")
tracks/15/interp = 1
tracks/15/loop_wrap = true
tracks/15/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/16/type = "value"
tracks/16/imported = false
tracks/16/enabled = true
tracks/16/path = NodePath("Triangle3:monitorable")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/17/type = "value"
tracks/17/imported = false
tracks/17/enabled = true
tracks/17/path = NodePath("Triangle4:monitoring")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/18/type = "value"
tracks/18/imported = false
tracks/18/enabled = true
tracks/18/path = NodePath("Triangle4:monitorable")
tracks/18/interp = 1
tracks/18/loop_wrap = true
tracks/18/keys = {
"times": PackedFloat32Array(0, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="Animation" id="Animation_js2kt"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MainOrb/CollisionShape3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainOrb/CollisionShape3D/Sprite3D:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 6.26573, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Triangle1/CollisionShape3D: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, -2.01695)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Triangle1:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Triangle2:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Triangle2/CollisionShape3D:position")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.0265542, 0, -2.01695)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Triangle3:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Triangle3/CollisionShape3D:position")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, -2.01695)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Triangle4:visible")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Triangle4/CollisionShape3D:position")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, -2.01695)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("Triangle1:monitoring")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("Triangle1:monitorable")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("Triangle2:monitoring")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("Triangle2:monitorable")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/14/type = "value"
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/path = NodePath("Triangle3:monitoring")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/15/type = "value"
tracks/15/imported = false
tracks/15/enabled = true
tracks/15/path = NodePath("Triangle3:monitorable")
tracks/15/interp = 1
tracks/15/loop_wrap = true
tracks/15/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/16/type = "value"
tracks/16/imported = false
tracks/16/enabled = true
tracks/16/path = NodePath("Triangle4:monitoring")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/17/type = "value"
tracks/17/imported = false
tracks/17/enabled = true
tracks/17/path = NodePath("Triangle4:monitorable")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ht5d6"]
_data = {
"PyramidAttack": SubResource("Animation_8rgmo"),
"RESET": SubResource("Animation_js2kt")
}
[sub_resource type="CylinderShape3D" id="CylinderShape3D_uh2on"]
radius = 0.266805
[node name="HedronAttack" type="Node3D"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "PyramidAttack"
libraries = {
"": SubResource("AnimationLibrary_ht5d6")
}
[node name="MainOrb" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.710665)
collision_layer = 0
collision_mask = 2
script = ExtResource("1_xty5l")
[node name="CollisionShape3D" type="CollisionShape3D" parent="MainOrb"]
transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 1, 0)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="MainOrb/CollisionShape3D"]
transform = Transform3D(0.499924, 0, -0.00872726, 0, 0.5, 0, 0.00872726, 0, 0.499924, 0, 0, 0)
axis = 1
texture = ExtResource("2_kceeh")
[node name="Triangle1" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.234726, 1, 5.74115)
visible = false
collision_layer = 0
collision_mask = 2
monitoring = false
monitorable = false
script = ExtResource("1_xty5l")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle1"]
transform = Transform3D(-0.107302, 0, -0.590327, 0, 0.6, 0, 0.590327, 0, -0.107302, 0, 0, -2.01695)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Triangle1/CollisionShape3D"]
transform = Transform3D(0.499924, 0, -0.00872631, 0, 0.5, 0, 0.00872631, 0, 0.499924, 0, 0, 0)
axis = 1
texture = ExtResource("3_1s7oj")
[node name="Triangle2" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.48792)
visible = false
collision_layer = 0
collision_mask = 2
monitoring = false
monitorable = false
script = ExtResource("1_xty5l")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle2"]
transform = Transform3D(0.592349, 0, -0.0955152, 0, 0.6, 0, 0.0955152, 0, 0.592349, 0.0265542, 0, -2.01695)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Triangle2/CollisionShape3D"]
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
axis = 1
texture = ExtResource("3_1s7oj")
[node name="Triangle3" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.230226, 1, 5.64647)
visible = false
collision_layer = 0
collision_mask = 2
monitoring = false
monitorable = false
script = ExtResource("1_xty5l")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle3"]
transform = Transform3D(0.119939, 0, 0.58789, 0, 0.6, 0, -0.58789, 0, 0.119939, 0, 0, -2.01695)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Triangle3/CollisionShape3D"]
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
axis = 1
texture = ExtResource("3_1s7oj")
[node name="Triangle4" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.94482)
visible = false
collision_layer = 0
collision_mask = 2
monitoring = false
monitorable = false
script = ExtResource("1_xty5l")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle4"]
transform = Transform3D(-0.599587, 0, 0.0222583, 0, 0.6, 0, -0.0222583, 0, -0.599587, 0, 0, -2.01695)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Triangle4/CollisionShape3D"]
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
axis = 1
texture = ExtResource("3_1s7oj")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_h0ftg")
volume_db = 10.0
autoplay = true
[connection signal="body_entered" from="MainOrb" to="MainOrb" method="OnOrbHit"]
[connection signal="body_entered" from="Triangle1" to="Triangle1" method="OnOrbHit"]
[connection signal="body_entered" from="Triangle2" to="Triangle2" method="OnOrbHit"]
[connection signal="body_entered" from="Triangle3" to="Triangle3" method="OnOrbHit"]
[connection signal="body_entered" from="Triangle4" to="Triangle4" method="OnOrbHit"]

View File

@@ -1,47 +1,59 @@
[gd_scene load_steps=5 format=3 uid="uid://uwia12i7yykb"]
[gd_scene load_steps=7 format=3 uid="uid://uwia12i7yykb"]
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_4wsx3"]
[ext_resource type="Texture2D" uid="uid://blhihtd4vmbrg" path="res://Textures/Projectiles/Layer 7.png" id="1_odish"]
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_4uor3"]
[ext_resource type="Texture2D" uid="uid://bunon01jmxhbx" path="res://Textures/Projectiles/Layer 2.png" id="1_a70u8"]
[ext_resource type="AudioStream" uid="uid://cgun34h06gvpv" path="res://Audio/SFX/misc1.wav" id="3_vxciy"]
[sub_resource type="Curve3D" id="Curve3D_5bny4"]
[sub_resource type="Curve3D" id="Curve3D_n05rs"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -8),
"tilts": PackedFloat32Array(0, 0)
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, -2, 1, 2, 0, 0, 0, 0, 0, 0, -2, 1, 3, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 0, -4, 1, 4, 0, 0, 0, 0, 0, 0, -4, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 10),
"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
}
point_count = 2
point_count = 10
[sub_resource type="BoxShape3D" id="BoxShape3D_54g6d"]
size = Vector3(1, 4.3194, 1.42031)
[sub_resource type="BoxShape3D" id="BoxShape3D_g5fdd"]
size = Vector3(0.553759, 1.22067, 1.58866)
[node name="Laser Attack" type="Path3D"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -3, 0, 1.5)
curve = SubResource("Curve3D_5bny4")
script = ExtResource("1_4wsx3")
_projectileSpeed = 3.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8nabx"]
vertex_color_use_as_albedo = true
albedo_color = Color(0.47451, 0.0196078, 0.0862745, 1)
emission = Color(0.905882, 0.254902, 0, 1)
emission_energy_multiplier = 19.32
subsurf_scatter_strength = 0.07
backlight = Color(1, 0, 0, 1)
[node name="Path3D" type="Path3D"]
curve = SubResource("Curve3D_n05rs")
script = ExtResource("1_4uor3")
_projectileSpeed = 5.0
[node name="PathFollow3D" type="PathFollow3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
rotation_mode = 0
loop = false
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 1, 1, 10)
progress = 27.0
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.944978)
collision_layer = 0
collision_mask = 2
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 5
contact_monitor = true
can_sleep = false
freeze = true
freeze_mode = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="PathFollow3D/RigidBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.38419e-07, 0, 1.78244)
shape = SubResource("BoxShape3D_54g6d")
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
shape = SubResource("BoxShape3D_g5fdd")
[node name="Sprite3D" type="Sprite3D" parent="PathFollow3D/RigidBody3D/CollisionShape3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_8nabx")
modulate = Color(0.901961, 0.12549, 0.34902, 1)
axis = 1
texture = ExtResource("1_odish")
texture = ExtResource("1_a70u8")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_vxciy")
autoplay = true
[connection signal="body_entered" from="PathFollow3D/RigidBody3D" to="." method="OnPlayerHit"]

View File

@@ -1,46 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://cerac64r5jewa"]
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_cveok"]
[ext_resource type="Texture2D" uid="uid://cpvq0rru8k7l5" path="res://Textures/Projectiles/Layer 3.png" id="1_p5wrg"]
[sub_resource type="Curve3D" id="Curve3D_h1xf0"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -5, 0, 0, 0, 0, 0, 0, -2, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0),
"tilts": PackedFloat32Array(0, 0, 0, 0, 0)
}
point_count = 5
[sub_resource type="CylinderShape3D" id="CylinderShape3D_o3ugd"]
radius = 0.25
[node name="Orb Attack" type="Path3D"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -3, 0, 1.5)
curve = SubResource("Curve3D_h1xf0")
script = ExtResource("1_cveok")
_projectileSpeed = 1.5
[node name="PathFollow3D" type="PathFollow3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
rotation_mode = 0
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, -7.10543e-15, 0, 1, 0, 0, 0)
collision_layer = 0
collision_mask = 2
continuous_cd = true
max_contacts_reported = 5
contact_monitor = true
can_sleep = false
freeze = true
freeze_mode = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="PathFollow3D/RigidBody3D"]
transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, -7.10543e-15, 0, 1, 0, 0, 0)
shape = SubResource("CylinderShape3D_o3ugd")
[node name="Sprite3D" type="Sprite3D" parent="PathFollow3D/RigidBody3D/CollisionShape3D"]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
axis = 1
texture = ExtResource("1_p5wrg")
[connection signal="body_entered" from="PathFollow3D/RigidBody3D" to="." method="OnPlayerHit"]

View File

@@ -0,0 +1,34 @@
using Godot;
public partial class PyramidAttack : Node3D
{
[Export]
private AnimationPlayer _animationPlayer;
private bool isDeleted = false;
public override void _EnterTree()
{
_animationPlayer.AnimationFinished += Delete;
}
public void OnPlayerHit(Node node)
{
SetPhysicsProcess(false);
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, this);
}
QueueFree();
isDeleted = true;
}
public void Delete(StringName name)
{
if (!isDeleted)
QueueFree();
isDeleted = true;
}
}

View File

@@ -0,0 +1,276 @@
[gd_scene load_steps=8 format=3 uid="uid://cql4evq5281n4"]
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/PyramidAttack.cs" id="1_yfldc"]
[ext_resource type="Texture2D" uid="uid://531b68bg4tn6" path="res://Textures/Projectiles/Layer 1.png" id="2_lufet"]
[ext_resource type="AudioStream" uid="uid://cgun34h06gvpv" path="res://Audio/SFX/misc1.wav" id="3_6crjs"]
[sub_resource type="Animation" id="Animation_8rgmo"]
resource_name = "PyramidAttack"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Center/CollisionShape3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Center/CollisionShape3D:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.3, 0.3, 0.3), Vector3(1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Left/CollisionShape3D:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Left/CollisionShape3D:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.3, 0.3, 0.3), Vector3(1, 1, 1)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Right/CollisionShape3D:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Right/CollisionShape3D:scale")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.3, 0, 0), Vector3(1, 1, 1)]
}
tracks/6/type = "audio"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("AudioStreamPlayer")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"clips": [],
"times": PackedFloat32Array()
}
tracks/6/use_blend = true
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("AudioStreamPlayer:playing")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 1.9),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="Animation" id="Animation_js2kt"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Center/CollisionShape3D:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Center/CollisionShape3D:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Left/CollisionShape3D:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Left/CollisionShape3D:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Right/CollisionShape3D:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 1, 0)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Right/CollisionShape3D:scale")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("AudioStreamPlayer:playing")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ht5d6"]
_data = {
"PyramidAttack": SubResource("Animation_8rgmo"),
"RESET": SubResource("Animation_js2kt")
}
[sub_resource type="CylinderShape3D" id="CylinderShape3D_uh2on"]
radius = 0.266805
[node name="PyramidAttack" type="Node3D" node_paths=PackedStringArray("_animationPlayer")]
script = ExtResource("1_yfldc")
_animationPlayer = NodePath("AnimationPlayer")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "PyramidAttack"
libraries = {
"": SubResource("AnimationLibrary_ht5d6")
}
[node name="Center" type="RigidBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.710665)
collision_layer = 0
collision_mask = 2
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 5
contact_monitor = true
can_sleep = false
freeze_mode = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="Center"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Center/CollisionShape3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
axis = 1
texture = ExtResource("2_lufet")
[node name="Left" type="RigidBody3D" parent="."]
transform = Transform3D(0.939692, 0, 0.34202, 0, 1, 0, -0.34202, 0, 0.939692, 0, 0, 0.710665)
collision_layer = 0
collision_mask = 2
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 5
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="Left"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Left/CollisionShape3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
axis = 1
texture = ExtResource("2_lufet")
[node name="Right" type="RigidBody3D" parent="."]
transform = Transform3D(0.939692, 0, -0.34202, 0, 1, 0, 0.34202, 0, 0.939692, 0, 0, 0.710665)
collision_layer = 0
collision_mask = 2
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 5
contact_monitor = true
can_sleep = false
freeze_mode = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="Right"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CylinderShape3D_uh2on")
[node name="Sprite3D" type="Sprite3D" parent="Right/CollisionShape3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
axis = 1
texture = ExtResource("2_lufet")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_6crjs")
[connection signal="body_entered" from="Center" to="." method="OnPlayerHit"]
[connection signal="body_entered" from="Left" to="." method="OnPlayerHit"]
[connection signal="body_entered" from="Right" to="." method="OnPlayerHit"]

View File

@@ -1,12 +1,62 @@
[gd_scene load_steps=16 format=3 uid="uid://brbshysbgd47q"]
[gd_scene load_steps=15 format=3 uid="uid://brbshysbgd47q"]
[ext_resource type="Script" path="res://Enemies/Scripts/GodCircuit.cs" id="1_gyfww"]
[ext_resource type="Texture2D" uid="uid://b41ur7kyd8vdl" path="res://Levels/Models/Stage10/god circuit stage 1_image.png" id="2_2fhjk"]
[ext_resource type="Shader" path="res://Levels/Scenes/Door.gdshader" id="3_05w5o"]
[ext_resource type="AudioStream" uid="uid://cat08h84wm5gm" path="res://Audio/SFX/ominous.wav" id="3_yengs"]
[ext_resource type="AudioStream" uid="uid://crto2nljfvqnm" path="res://Audio/SFX/midboss hurt.wav" id="4_kc3iq"]
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/GodCircuitAttacks.cs" id="5_hp00m"]
[ext_resource type="PackedScene" uid="uid://uwia12i7yykb" path="res://Enemies/Attacks/GodCircuitAttacks/LaserAttack.tscn" id="6_frlsw"]
[ext_resource type="PackedScene" uid="uid://cerac64r5jewa" path="res://Enemies/Attacks/GodCircuitAttacks/OrbAttack.tscn" id="7_1t6n0"]
[sub_resource type="Animation" id="Animation_qiplh"]
resource_name = "OnDeath"
length = 6.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [1, 0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 1]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1, 3.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.5]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:playing")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_n85p2"]
resource_name = "OnHit"
@@ -47,6 +97,18 @@ tracks/2/keys = {
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:stream")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("4_kc3iq")]
}
[sub_resource type="Animation" id="Animation_47f75"]
length = 0.001
@@ -86,9 +148,34 @@ tracks/2/keys = {
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AudioStreamPlayer:stream")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_yengs")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_qiwcq"]
_data = {
"OnDeath": SubResource("Animation_qiplh"),
"OnHit": SubResource("Animation_n85p2"),
"RESET": SubResource("Animation_47f75")
}
@@ -101,6 +188,7 @@ resource_name = "Material.001"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("2_2fhjk")
metallic_specular = 0.0
[sub_resource type="ArrayMesh" id="ArrayMesh_f3cka"]
_surfaces = [{
@@ -161,17 +249,12 @@ freeze_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 4.30333e-22, 0, 1, 0.317906, -0.678684, 1.59406)
shape = SubResource("BoxShape3D_n2erm")
[node name="Timer" type="Timer" parent="StaticBody3D"]
wait_time = 5.0
autostart = true
script = ExtResource("5_hp00m")
_attacks = Array[PackedScene]([ExtResource("7_1t6n0"), ExtResource("6_frlsw")])
[node name="god circuit stage 1" type="Node3D" parent="StaticBody3D"]
transform = Transform3D(-1, -7.54979e-08, 7.54979e-08, 7.54979e-08, 0, 1, -7.54979e-08, 1, 0, 0, 0, 0)
[node name="Cube" type="MeshInstance3D" parent="StaticBody3D/god circuit stage 1"]
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
cast_shadow = 0
mesh = SubResource("ArrayMesh_vv6dc")
skeleton = NodePath("")
@@ -179,11 +262,12 @@ skeleton = NodePath("")
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
layers = 0
material_override = SubResource("ShaderMaterial_aqrc7")
cast_shadow = 0
mesh = SubResource("ArrayMesh_vv6dc")
skeleton = NodePath("")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_kc3iq")
stream = ExtResource("3_yengs")
volume_db = 7.786
[connection signal="body_entered" from="StaticBody3D" to="." method="OnHit"]
[connection signal="timeout" from="StaticBody3D/Timer" to="StaticBody3D/Timer" method="OnTimeout"]

View File

@@ -9,12 +9,12 @@ public partial class HealthPoints : Node
public override void _Ready()
{
CurrentHP = MaximumHP;
CurrentHP = MaximumHP;
}
public void TakeDamage(long damage)
{
CurrentHP -= damage;
GD.Print(CurrentHP);
CurrentHP -= damage;
GD.Print(CurrentHP);
}
}

View File

@@ -1,11 +1,8 @@
[gd_scene load_steps=48 format=3 uid="uid://bt5rolsyjmx55"]
[gd_scene load_steps=52 format=3 uid="uid://bt5rolsyjmx55"]
[ext_resource type="Script" path="res://Enemies/Scripts/MeleeEnemy.cs" id="1_50och"]
[ext_resource type="PackedScene" uid="uid://b1j0g6ikmnibm" path="res://Enemies/HPComponent.tscn" id="2_1leby"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1nq5h"]
size = Vector3(0.579358, 2.18762, 0.423598)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hp6tg"]
resource_name = "Material.003"
cull_mode = 2
@@ -152,7 +149,7 @@ albedo_color = Color(0.906332, 0.0657254, 0, 1)
resource_name = "Material.001"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_color = Color(0.906332, 0.577975, 0.0845021, 1)
albedo_color = Color(0.905882, 0.576471, 0.0862745, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ucce2"]
resource_name = "Material.005"
@@ -1047,7 +1044,7 @@ shadow_mesh = SubResource("ArrayMesh_byqbm")
[sub_resource type="Animation" id="Animation_xyhqi"]
resource_name = "Animation"
length = 3.75
length = 4.0
loop_mode = 1
tracks/0/type = "position_3d"
tracks/0/imported = true
@@ -1174,8 +1171,51 @@ _data = {
"Animation": SubResource("Animation_xyhqi")
}
[sub_resource type="BoxShape3D" id="BoxShape3D_1nq5h"]
size = Vector3(0.641537, 0.560677, 0.708051)
[sub_resource type="BoxShape3D" id="BoxShape3D_lqe1n"]
size = Vector3(0.572433, 1.81406, 0.604365)
[sub_resource type="Animation" id="Animation_5doi8"]
resource_name = "OnHit"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeleeEnemy/Circle001:transparency")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 0.5, 0.0]
}
[sub_resource type="Animation" id="Animation_rx3cp"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeleeEnemy/Circle001:transparency")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.5]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mudtn"]
_data = {
"OnHit": SubResource("Animation_5doi8"),
"RESET": SubResource("Animation_rx3cp")
}
[node name="Melee Enemy" type="RigidBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.251952, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, -0.0175109, 0)
disable_mode = 2
collision_layer = 0
collision_mask = 33
@@ -1185,81 +1225,89 @@ max_contacts_reported = 20
contact_monitor = true
can_sleep = false
script = ExtResource("1_50och")
_distanceToPlayer = 3.5
_hp = NodePath("HP Component")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0840461, 0.475385, 0.143401)
shape = SubResource("BoxShape3D_1nq5h")
[node name="MeleeEnemy" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0984273, 0.568423, -0.107118)
[node name="MeleeEnemy" type="Node3D" parent="CollisionShape3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0840461, -0.612543, -0.143401)
[node name="Icosphere001" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(0.850843, 0, 0, 0, 0.850843, 0, 0, 0, 0.850843, 0.0805536, 0.468312, 0.158035)
[node name="Icosphere001" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(0.846559, 0, 0, 0, 0.846559, 0, 0, 0, 0.846559, 0.0805536, 0.450075, 0.158035)
cast_shadow = 0
mesh = SubResource("ArrayMesh_vf33t")
skeleton = NodePath("")
[node name="Circle001" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, 0.0457887, 0.476383, 0.128917)
[node name="Circle001" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(0.681135, 0, -0.799096, 0, 1.05, 0, 0.799096, 0, 0.681135, 0.0457887, 0.476383, 0.128917)
transparency = 0.5
cast_shadow = 0
mesh = SubResource("ArrayMesh_ngagc")
skeleton = NodePath("")
[node name="Circle002" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(1.1, 0, 0, 0, 1.1, 0, 0, 0, 1.1, 0.0659095, 0.483551, 0.119628)
[node name="Circle002" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(1.1, 0, 0, 0, 0.713571, 0.837148, 0, -0.837148, 0.713571, 0.0659095, 0.483551, 0.119628)
cast_shadow = 0
mesh = SubResource("ArrayMesh_nmeup")
skeleton = NodePath("")
[node name="Circle004" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0868937, 0.567455, 0.186096)
[node name="Circle004" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(0.6487, -0.761044, 0, 0.761044, 0.6487, 0, 0, 0, 1, 0.0868937, 0.567455, 0.186096)
cast_shadow = 0
mesh = SubResource("ArrayMesh_nso1s")
skeleton = NodePath("")
[node name="Text003" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(0.0536953, 0, 0, 0, 0.0536953, 0, 0, 0, 0.0536953, 0.0626427, 0.123465, 0.11049)
[node name="Text003" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(-0.00961914, 0, -0.0528267, 0, 0.0536953, 0, 0.0528267, 0, -0.00961914, 0.0626427, 0.123465, 0.11049)
cast_shadow = 0
mesh = SubResource("ArrayMesh_xasdc")
skeleton = NodePath("")
[node name="BezierCircle" type="Node3D" parent="CollisionShape3D/MeleeEnemy"]
[node name="BezierCircle" type="Node3D" parent="MeleeEnemy"]
transform = Transform3D(0.495255, 0, 0, 0, 0.495255, 0, 0, 0, 0.495255, 0.0690689, -0.0909151, 0.128142)
[node name="Text004" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(0.0480592, 0, 0, 0, 0.0480592, 0, 0, 0, 0.0480592, 0.0626427, 0.123465, 0.11049)
[node name="Text004" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(0.031176, 0, -0.0365752, 0, 0.0480592, 0, 0.0365752, 0, 0.031176, 0.0626427, 0.123465, 0.11049)
cast_shadow = 0
mesh = SubResource("ArrayMesh_8gdy4")
skeleton = NodePath("")
[node name="BezierCircle001" type="Node3D" parent="CollisionShape3D/MeleeEnemy"]
[node name="BezierCircle001" type="Node3D" parent="MeleeEnemy"]
transform = Transform3D(0.443271, 0, 0, 0, 0.443271, 0, 0, 0, 0.443271, 0.0690689, -0.0909151, 0.128142)
[node name="Text005" type="MeshInstance3D" parent="CollisionShape3D/MeleeEnemy"]
transform = Transform3D(0.0438454, 0, 0, 0, 0.0438454, 0, 0, 0, 0.0438454, 0.0626427, 0.123465, 0.11049)
[node name="Text005" type="MeshInstance3D" parent="MeleeEnemy"]
transform = Transform3D(-0.0386024, 0, -0.0207913, 0, 0.0438454, 0, 0.0207913, 0, -0.0386024, 0.0626427, 0.123465, 0.11049)
cast_shadow = 0
mesh = SubResource("ArrayMesh_bkeh8")
skeleton = NodePath("")
[node name="BezierCircle002" type="Node3D" parent="CollisionShape3D/MeleeEnemy"]
[node name="BezierCircle002" type="Node3D" parent="MeleeEnemy"]
transform = Transform3D(0.404405, 0, 0, 0, 0.404405, 0, 0, 0, 0.404405, 0.0690689, -0.0909151, 0.128142)
[node name="AnimationPlayer" type="AnimationPlayer" parent="CollisionShape3D/MeleeEnemy"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="MeleeEnemy"]
autoplay = "Animation"
libraries = {
"": SubResource("AnimationLibrary_ivhl3")
}
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00804788, 1.02138, -0.0238259)
shape = SubResource("BoxShape3D_1nq5h")
[node name="HP Component" parent="." instance=ExtResource("2_1leby")]
MaximumHP = 1
[node name="Area3D" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00804788, 1.01495, 0.00193942)
collision_layer = 0
collision_mask = 68
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0840461, 0.475385, 0.143401)
shape = SubResource("BoxShape3D_1nq5h")
shape = SubResource("BoxShape3D_lqe1n")
[node name="HitAnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_mudtn")
}
[connection signal="body_entered" from="Area3D" to="." method="OnEnemyHit"]
[connection signal="body_entered" from="Area3D" to="." method="OnPlayerHit"]
[connection signal="body_entered" from="Area3D" to="." method="OnEnemyHit"]

View File

@@ -1,9 +1,10 @@
[gd_scene load_steps=59 format=3 uid="uid://dahp73fwld24h"]
[gd_scene load_steps=60 format=3 uid="uid://dahp73fwld24h"]
[ext_resource type="Script" path="res://Enemies/Scripts/RangedEnemy.cs" id="1_01lvj"]
[ext_resource type="PackedScene" uid="uid://rlxnnw4yay7e" path="res://Enemies/Attacks/EnemyBullet.tscn" id="3_qenx3"]
[ext_resource type="Script" path="res://Enemies/Attacks/FireAtPlayer.cs" id="3_qt2md"]
[ext_resource type="PackedScene" uid="uid://b1j0g6ikmnibm" path="res://Enemies/HPComponent.tscn" id="4_1vt55"]
[ext_resource type="AudioStream" uid="uid://cfj82os5p8i4p" path="res://Audio/SFX/shooting.wav" id="5_m0x8e"]
[sub_resource type="BoxShape3D" id="BoxShape3D_dm3u7"]
size = Vector3(0.722, 1, 0.565)
@@ -892,7 +893,7 @@ blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_j7wsk")
[node name="RangedEnemy" type="RigidBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.257979, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0.257979, 0)
collision_layer = 0
collision_mask = 68
gravity_scale = 0.0
@@ -904,13 +905,14 @@ freeze_mode = 1
script = ExtResource("1_01lvj")
_hp = NodePath("HP Component")
[node name="Timer" type="Timer" parent="." node_paths=PackedStringArray("_enemy")]
[node name="Timer" type="Timer" parent="." node_paths=PackedStringArray("_enemy", "_audioPlayer")]
wait_time = 0.75
autostart = true
script = ExtResource("3_qt2md")
_enemy = NodePath("..")
_fireProjectile = ExtResource("3_qenx3")
_distanceToPlayer = 5.0
_audioPlayer = NodePath("../AudioStreamPlayer")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0714533, 0.929308, 0.0138905)
@@ -1066,5 +1068,10 @@ skeleton = NodePath("")
[node name="HP Component" parent="." instance=ExtResource("4_1vt55")]
MaximumHP = 1
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("5_m0x8e")
volume_db = -1.0
max_polyphony = 10
[connection signal="body_entered" from="." to="." method="OnPlayerHit"]
[connection signal="timeout" from="Timer" to="Timer" method="OnFireAtPlayer"]

View File

@@ -8,34 +8,54 @@ public partial class GodCircuit : Node3D
[Signal]
public delegate void OnEnemyBossHitEventHandler(long damage);
[Signal]
public delegate void OnGameEndingEventHandler();
[Signal]
public delegate void DestroyRemainingOrbsEventHandler();
private void OnHit(Node3D node)
{
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, node);
}
else
{
GD.Print("Hit");
_animationPlayer.Play("OnHit");
var hpComponent = GetNode<HealthPoints>("HP Component");
hpComponent.TakeDamage(800000);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, node);
}
else
{
var hpComponent = GetNode<HealthPoints>("HP Component");
if (hpComponent.CurrentHP > 0)
{
GD.Print("Hit");
_animationPlayer.Play("OnHit");
hpComponent.TakeDamage(1);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
if (hpComponent.CurrentHP <= 0)
QueueFree();
}
if (hpComponent.CurrentHP <= 0)
{
EmitSignal(SignalName.DestroyRemainingOrbs);
_animationPlayer.Play("OnDeath");
_animationPlayer.AnimationFinished += OnGameFinished;
}
}
}
}
private void OnBossOrbDestroyed()
{
var hpComponent = GetNode<HealthPoints>("HP Component");
_animationPlayer.Play("OnHit");
hpComponent.TakeDamage(30000000);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
var hpComponent = GetNode<HealthPoints>("HP Component");
_animationPlayer.Play("OnHit");
hpComponent.TakeDamage(60);
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
if (hpComponent.CurrentHP <= 0)
hpComponent.CurrentHP = 1;
if (hpComponent.CurrentHP <= 0)
hpComponent.CurrentHP = 1;
}
private void OnGameFinished(StringName animationName)
{
GD.Print("On game ending");
EmitSignal(SignalName.OnGameEnding);
QueueFree();
}
}

View File

@@ -4,24 +4,22 @@ using System.Linq;
public partial class MeleeEnemy : BasicEnemy
{
[Export]
private float _speed = 0.4f;
private float _speed = 0.8f;
private bool _targetingPlayer = false;
[Export]
private double _distanceToPlayer = 3;
private double _distanceToPlayer = 4;
public override void _PhysicsProcess(double delta)
{
var players = GetTree().GetNodesInGroup("Player");
if (players.Any())
{
var convertedPlayers = players.Select(x => (Node3D)x);
var target = convertedPlayers.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
{
Position = Position.MoveToward(target.Position, _speed * (float)delta);
LookAt(-target.Position, Vector3.Up);
_targetingPlayer = true;
}
}
var players = GetTree().GetNodesInGroup("Player").Cast<Character>();
if (players.Any())
{
var target = players.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
{
Position = Position.MoveToward(target.Position, _speed * (float)delta);
_targetingPlayer = true;
}
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Linq;
public partial class GameManager : Node
{
[Signal]
public delegate void OnPlayerGameOverEventHandler();
public delegate void OnPlayerGameOverEventHandler(Player player);
[Signal]
public delegate void ReselectCharacterEventHandler(Player player);
[Signal]
@@ -23,133 +23,138 @@ public partial class GameManager : Node
public override void _Ready()
{
var main = GetTree().Root.GetNode<Main>("/root/Main");
for (var i = 0; i < main.NumberOfPlayers; i++)
{
var player = PlayerScenes[i].Instantiate();
Players = Players.Append((Player)player);
GetTree().Root.AddChild(player);
}
var main = GetTree().Root.GetNode<Main>("/root/Main");
for (var i = 0; i < main.NumberOfPlayers; i++)
{
var player = PlayerScenes[i].Instantiate();
var castedPlayer = (Player)player;
castedPlayer.PlayerNumber = i + 1;
Players = Players.Append(castedPlayer);
GetTree().Root.AddChild(player);
}
}
public void OnAllEnemiesDefeated()
{
OnLevelClear();
OnLevelClear();
}
public void OnHandleCharacterSelectUI(Player player)
{
EmitSignal(SignalName.ReselectCharacter, player);
EmitSignal(SignalName.ReselectCharacter, player);
}
public void SetToNextCharacter(Player player)
{
player.CharacterIndex = (++player.CharacterIndex) % player.CharactersLeftOnStage.Count();
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
player.CharacterIndex = (++player.CharacterIndex) % player.CharactersLeftOnStage.Count();
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
}
public void SetToPreviousCharacter(Player player)
{
player.CharacterIndex = player.CharacterIndex == 0 ? player.CharactersLeftOnStage.Count() - 1 : --player.CharacterIndex;
player.CharacterIndex = player.CharacterIndex == 0 ? player.CharactersLeftOnStage.Count() - 1 : --player.CharacterIndex;
}
public void ResetPlayerPosition(Player player)
{
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
}
public void OnCharacterSelected(Player player)
{
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
sfxPlayer.Stream = audioStream;
sfxPlayer.Play();
if (player.CharactersLeftOnStage.Any())
{
var character = player.CharactersLeftOnStage[player.CharacterIndex];
var instance = (Character)character.Instantiate();
instance.Initialize(player);
player.SelectedCharacter = instance;
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
GetTree().Root.AddChild(player.SelectedCharacter);
}
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
sfxPlayer.Stream = audioStream;
sfxPlayer.Play();
if (player.CharactersLeftOnStage.Any())
{
var character = player.CharactersLeftOnStage[player.CharacterIndex];
var instance = (Character)character.Instantiate();
instance.Initialize(player);
player.SelectedCharacter = instance;
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
GetTree().Root.AddChild(player.SelectedCharacter);
}
}
public void RemoveCharacter(Player player)
{
ResetPlayerPosition(player);
ResetPlayerPosition(player);
player.CharactersLeftOnStage.RemoveAt(player.CharacterIndex);
if (player.SelectedCharacter is not null)
GetTree().Root.RemoveChild(player.SelectedCharacter);
player.CharactersLeftOnStage.RemoveAt(player.CharacterIndex);
if (player.SelectedCharacter is not null)
GetTree().Root.RemoveChild(player.SelectedCharacter);
player.CharacterIndex = 0;
if (player.CharactersLeftOnStage.Any())
EmitSignal(SignalName.ReselectCharacter, player);
player.CharacterIndex = 0;
if (player.CharactersLeftOnStage.Any())
EmitSignal(SignalName.ReselectCharacter, player);
if (!player.CharactersExited.Any() && !player.CharactersLeftOnStage.Any())
SetGameOver(player, true);
if (!player.CharactersExited.Any() && !player.CharactersLeftOnStage.Any())
SetGameOver(player, true);
if (Players.All(x => !x.CharactersLeftOnStage.Any()) && Players.Any(x => x.CharactersExited.Any()))
OnLevelClear();
if (Players.All(x => !x.CharactersLeftOnStage.Any()) && Players.Any(x => x.CharactersExited.Any()))
OnLevelClear();
}
public void RemoveCharacterAndAddToExit(Player player)
{
ResetPlayerPosition(player);
player.CharactersExited.Add(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
RemoveCharacter(player);
ResetPlayerPosition(player);
player.CharactersExited.Add(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
RemoveCharacter(player);
}
public void SetGameOver(Player player, bool isGameOver)
{
player.GameOver = isGameOver;
if (isGameOver)
EmitSignal(SignalName.OnPlayerGameOver);
GD.Print($"Game over for {player.Name}");
player.GameOver = isGameOver;
if (isGameOver)
EmitSignal(SignalName.OnPlayerGameOver, player);
GD.Print($"Game over for {player.Name}");
}
public void ReloadGameScene()
{
GD.Print("Reloading scene");
var players = GetTree().Root.GetChildren().OfType<Player>();
foreach (var player in players)
player.QueueFree();
var levels = GetTree().Root.GetChildren().OfType<Level>();
foreach (var level in levels)
level.QueueFree();
GetTree().ReloadCurrentScene();
GD.Print("Reloading scene");
var players = GetTree().Root.GetChildren().OfType<Player>();
foreach (var player in players)
player.QueueFree();
var levels = GetTree().Root.GetChildren().OfType<Level>();
foreach (var level in levels)
level.QueueFree();
GetTree().ReloadCurrentScene();
}
public void OnLevelClear()
{
var enemies = GetTree().GetNodesInGroup("Enemy").Where(x => !x.IsQueuedForDeletion());
foreach (var enemy in enemies)
enemy.QueueFree();
var enemies = GetTree().GetNodesInGroup("Enemy").Where(x => !x.IsQueuedForDeletion());
foreach (var enemy in enemies)
enemy.QueueFree();
var playerCharacters = GetTree().GetNodesInGroup("Player");
var playerCharacters = GetTree().GetNodesInGroup("Player");
EmitSignal(SignalName.ClearPlayerBG, 0);
EmitSignal(SignalName.ClearPlayerBG, 1);
EmitSignal(SignalName.ClearPlayerBG, 0);
EmitSignal(SignalName.ClearPlayerBG, 1);
foreach (var player in Players)
{
player.CharactersLeftOnStage.AddRange(player.CharactersExited);
player.CharactersExited.Clear();
player.CharacterIndex = 0;
}
foreach (var player in Players)
{
player.CharactersLeftOnStage.AddRange(player.CharactersExited);
player.CharactersExited.Clear();
player.CharacterIndex = 0;
}
foreach (var character in playerCharacters)
character.GetParent().RemoveChild(character);
foreach (var character in playerCharacters)
character.GetParent().RemoveChild(character);
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
foreach (var projectile in projectiles)
projectile.QueueFree();
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
foreach (var projectile in projectiles)
projectile.QueueFree();
var main = GetTree().Root.GetNode<Main>("/root/Main");
_levelIndex++;
main.LoadNextLevel(_levelIndex);
var main = GetTree().Root.GetNode<Main>("/root/Main");
if (_levelIndex < main.Levels.Count)
{
_levelIndex++;
main.LoadNextLevel(_levelIndex);
}
}
}

View File

@@ -17,23 +17,6 @@
script = ExtResource("1_ya2kt")
PlayerScenes = Array[PackedScene]([ExtResource("4_3fl70"), ExtResource("3_y1wkr")])
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -0.504317, 0.863519, 0, -0.863519, -0.504317, 0, 19.9508, 0)
visible = false
shadow_enabled = true
shadow_bias = 0.0
shadow_normal_bias = 0.0
directional_shadow_mode = 0
sky_mode = 1
[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.993572, 0.113203, 0, -0.113203, 0.993572, 0, 6.22805, 0)
shadow_enabled = true
shadow_bias = 0.0
shadow_normal_bias = 0.0
directional_shadow_mode = 0
sky_mode = 1
[node name="StageGUI" type="Control" parent="."]
process_mode = 3
layout_mode = 3

View File

View File

@@ -13,61 +13,66 @@ public partial class Main : Node
public int NumberOfPlayers = 0;
public override void _Ready()
{
Input.MouseMode = Input.MouseModeEnum.Captured;
}
public override void _Process(double delta)
{
_fpsCounter.Text = $"FPS: {Engine.GetFramesPerSecond()}";
_fpsCounter.Text = $"FPS: {Engine.GetFramesPerSecond()}";
}
public void LoadLevel(int indexToLoad, int numberOfPlayers)
{
var sceneToLoad = Levels.ElementAt(indexToLoad);
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
var sceneToLoad = Levels.ElementAt(indexToLoad);
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
NumberOfPlayers = numberOfPlayers;
NumberOfPlayers = numberOfPlayers;
var gameManager = GameManager.Instantiate();
AddChild(gameManager);
var gameManagerInstance = (GameManager)gameManager;
var gameManager = GameManager.Instantiate();
AddChild(gameManager);
var gameManagerInstance = (GameManager)gameManager;
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
bgmPlayer.SetBGMFromFilepath("Audio/BGM/LevelTheme.ogg");
bgmPlayer.PlayBGM();
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
bgmPlayer.SetBGMFromFilepath("Audio/BGM/An-Imitation-of-Heaven.ogg");
bgmPlayer.PlayBGM();
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.Play($"Level{indexToLoad + 1}");
animationNode.AnimationFinished += EnableCharacterSelect;
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.Play($"Level{indexToLoad + 1}");
animationNode.AnimationFinished += EnableCharacterSelect;
}
public void LoadNextLevel(int currentSceneIndex)
{
if (currentSceneIndex < Levels.Count())
{
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(currentSceneIndex));
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.Play($"Level{currentSceneIndex + 1}");
animationNode.AnimationFinished += EnableCharacterSelect;
}
if (currentSceneIndex < Levels.Count())
{
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(currentSceneIndex));
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.Play($"Level{currentSceneIndex + 1}");
animationNode.AnimationFinished += EnableCharacterSelect;
}
}
private void DeferredGoToScene(PackedScene sceneToAdd)
{
if (GetTree().GetFirstNodeInGroup("Level") != null)
GetTree().GetFirstNodeInGroup("Level").QueueFree();
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
var newScene = nextScene.Instantiate();
GetTree().Root.AddChild(newScene);
if (GetTree().GetFirstNodeInGroup("Level") != null)
GetTree().GetFirstNodeInGroup("Level").QueueFree();
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
var newScene = nextScene.Instantiate();
GetTree().Root.AddChild(newScene);
}
private void EnableCharacterSelect(StringName animationName)
{
GD.Print("On animation finished: Enable characters");
var gameManagerInstance = GetNode<GameManager>("GameManager");
foreach (var player in gameManagerInstance.Players)
gameManagerInstance.OnHandleCharacterSelectUI(player);
GetTree().Paused = true;
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.AnimationFinished -= EnableCharacterSelect;
GD.Print("On animation finished: Enable characters");
var gameManagerInstance = GetNode<GameManager>("GameManager");
foreach (var player in gameManagerInstance.Players)
gameManagerInstance.OnHandleCharacterSelectUI(player);
GetTree().Paused = true;
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
animationNode.AnimationFinished -= EnableCharacterSelect;
}
}

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://vwrw05ob2caq"]
[gd_scene load_steps=20 format=3 uid="uid://vwrw05ob2caq"]
[ext_resource type="Script" path="res://GameLogic/Main.cs" id="1_g4hua"]
[ext_resource type="PackedScene" uid="uid://btl5fdyjewnwc" path="res://Levels/Scenes/Level3.tscn" id="2_0yhby"]
@@ -11,7 +11,7 @@
[ext_resource type="PackedScene" uid="uid://bsq7edeueqyjg" path="res://Levels/Scenes/Level7.tscn" id="8_pcp3p"]
[ext_resource type="PackedScene" uid="uid://c4xcka4ekuur8" path="res://Levels/Scenes/Level8.tscn" id="9_n1hja"]
[ext_resource type="PackedScene" uid="uid://djwln4at4ho44" path="res://Levels/Scenes/Level9.tscn" id="10_rs7ve"]
[ext_resource type="PackedScene" uid="uid://0hdnmilwrsq6" path="res://Levels/Scenes/Level10.tscn" id="11_o275c"]
[ext_resource type="PackedScene" uid="uid://tt886mv7pffe" path="res://Levels/Scenes/Level10.tscn" id="11_o275c"]
[ext_resource type="PackedScene" uid="uid://cxj6yeddshy16" path="res://GameLogic/GameManager.tscn" id="11_wiyvp"]
[ext_resource type="PackedScene" uid="uid://cvvjbka5nf52j" path="res://UI/SceneTransition.tscn" id="14_ai16y"]
@@ -21,14 +21,28 @@
font = SubResource("SystemFont_o1buo")
font_color = Color(0, 1, 0, 1)
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_6bq1c"]
sky_top_color = Color(1, 1, 1, 1)
sky_horizon_color = Color(1, 1, 1, 1)
sky_energy_multiplier = 1.1
ground_bottom_color = Color(0.164706, 0.164706, 0.164706, 1)
ground_horizon_color = Color(1, 1, 1, 1)
[sub_resource type="Sky" id="Sky_er5sy"]
sky_material = SubResource("ProceduralSkyMaterial_6bq1c")
[sub_resource type="Environment" id="Environment_m6quh"]
background_mode = 2
sky = SubResource("Sky_er5sy")
ambient_light_source = 3
reflected_light_source = 1
[node name="Main" type="Node3D" node_paths=PackedStringArray("_fpsCounter")]
script = ExtResource("1_g4hua")
Levels = Array[PackedScene]([ExtResource("11_o275c"), ExtResource("6_xmedq"), ExtResource("2_jq3qe"), ExtResource("3_nhrqr"), ExtResource("5_xj47l"), ExtResource("2_0yhby"), ExtResource("7_58n7x"), ExtResource("8_pcp3p"), ExtResource("9_n1hja"), ExtResource("10_rs7ve")])
Levels = Array[PackedScene]([ExtResource("2_jq3qe"), ExtResource("3_nhrqr"), ExtResource("2_0yhby"), ExtResource("5_xj47l"), ExtResource("7_58n7x"), ExtResource("6_xmedq"), ExtResource("8_pcp3p"), ExtResource("9_n1hja"), ExtResource("10_rs7ve"), ExtResource("11_o275c")])
GameManager = ExtResource("11_wiyvp")
_fpsCounter = NodePath("FPS Counter")
[node name="SceneTransition" parent="." instance=ExtResource("14_ai16y")]
[node name="SFXPlayer" type="AudioStreamPlayer" parent="."]
max_polyphony = 10
@@ -40,6 +54,7 @@ visible = false
z_as_relative = false
[node name="FPS Counter" type="Label" parent="."]
visible = false
z_index = 100
offset_left = 18.0
offset_top = 16.0
@@ -54,3 +69,10 @@ transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, -0.527878,
projection = 1
current = true
size = 10.8546
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_m6quh")
[node name="SceneTransition" parent="." instance=ExtResource("14_ai16y")]
top_level = true
z_index = 500

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ckvqdy2sdikqx"
path.s3tc="res://.godot/imported/EyeFix.png-8890d25b0d26399535df54ce07dce48f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Levels/Models/New Stage 7/EyeFix.png"
dest_files=["res://.godot/imported/EyeFix.png-8890d25b0d26399535df54ce07dce48f.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.

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://drvjxoshnkcir"
path.s3tc="res://.godot/imported/HELPME - Copy.png-ccc60fcb984b254fa97b486cf1a25a58.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Levels/Models/New Stage 7/HELPME - Copy.png"
dest_files=["res://.godot/imported/HELPME - Copy.png-ccc60fcb984b254fa97b486cf1a25a58.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.

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y1ktbuy7ynvh"
path.s3tc="res://.godot/imported/HELPME.png-070d9c4a77a28c1e486e0054f5b3d73f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Levels/Models/New Stage 7/HELPME.png"
dest_files=["res://.godot/imported/HELPME.png-070d9c4a77a28c1e486e0054f5b3d73f.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.

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkuktpwy3vyie"
path.s3tc="res://.godot/imported/Stage eye.png-fd8c81fd00dc963dfdc3a579d1c91ee0.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Levels/Models/New Stage 7/Stage eye.png"
dest_files=["res://.godot/imported/Stage eye.png-fd8c81fd00dc963dfdc3a579d1c91ee0.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

View File

@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://drmdf2e8cffi0"]
[ext_resource type="Texture2D" uid="uid://dkuktpwy3vyie" path="res://Levels/Models/New Stage 7/Stage eye.png" id="1_5ihla"]
[node name="Node2D" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_5ihla")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cep6lm4mg58ua"
path.s3tc="res://.godot/imported/STAGE 3_2317.png-f2037443c805949e125ec26a7d6ef5c3.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Levels/Models/Stage3/STAGE 3_2317.png"
dest_files=["res://.godot/imported/STAGE 3_2317.png-f2037443c805949e125ec26a7d6ef5c3.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

View File

@@ -341,5 +341,5 @@ libraries = {
}
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-0.99952, 0, 0.0309922, 0.0209356, 0.737348, 0.675189, -0.022852, 0.675513, -0.736994, 0, 6.60737, -3.87573)
transform = Transform3D(-0.99952, -5.55112e-17, 0.0309921, 0.0209356, 0.737348, 0.675189, -0.022852, 0.675513, -0.736994, -0.0865483, 6.13215, -3.64543)
current = true

File diff suppressed because one or more lines are too long

View File

@@ -29,4 +29,4 @@ animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1
gltf/embedded_image_handling=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -2,13 +2,12 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://5frykjrwgm3o"
uid="uid://drxapcmqauhr1"
path.s3tc="res://.godot/imported/STAGE 7_tile2.png-e2eafcfdd17a6bac8dd616a4867887a6.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]

View File

@@ -1,8 +1,8 @@
[gd_scene load_steps=35 format=3 uid="uid://bgf5byqt71kir"]
[gd_scene load_steps=36 format=3 uid="uid://bgf5byqt71kir"]
[ext_resource type="Texture2D" uid="uid://e4aphjn2j2sa" path="res://Levels/Models/Stage7/STAGE 7_tile1.png" id="1_chwjy"]
[ext_resource type="Texture2D" uid="uid://rwc20x2uhsuh" path="res://Levels/Models/Stage7/STAGE 7_tile4.png" id="2_uu5ym"]
[ext_resource type="Texture2D" uid="uid://5frykjrwgm3o" path="res://Levels/Models/Stage7/STAGE 7_tile2.png" id="3_lhvib"]
[ext_resource type="Texture2D" uid="uid://drxapcmqauhr1" path="res://Levels/Models/Stage7/STAGE 7_tile2.png" id="3_lhvib"]
[ext_resource type="Texture2D" uid="uid://c0e1udk3bitb4" path="res://Levels/Models/Stage7/STAGE 7_5.png" id="4_44ly1"]
[ext_resource type="Texture2D" uid="uid://cnit38dcadff6" path="res://Levels/Models/Stage7/STAGE 7_imgonline-com-ua-TextureSeamless-nNIdH5rj2UOu2JF.png" id="5_ev6u3"]
[ext_resource type="Texture2D" uid="uid://ducyd4thtkhnk" path="res://Levels/Models/Stage7/STAGE 7_watered2.png" id="6_5yk0x"]
@@ -23,12 +23,8 @@ vertex_color_use_as_albedo = true
albedo_texture = ExtResource("2_uu5ym")
roughness = 0.5
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6dlqp"]
resource_name = "Material.003"
cull_mode = 2
vertex_color_use_as_albedo = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b2ara"]
albedo_texture = ExtResource("3_lhvib")
roughness = 0.5
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uqcvp"]
resource_name = "Material.004"
@@ -126,7 +122,6 @@ _surfaces = [{
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_t3s11"]
resource_name = "STAGE 7_Plane"
_surfaces = [{
"aabb": AABB(-5.45298, -0.482962, -5.96184, 10.906, 0.482972, 12.4473),
"attribute_data": PackedByteArray(131, 49, 191, 60, 192, 195, 89, 60, 216, 135, 236, 59, 214, 117, 63, 64, 15, 19, 111, 62, 0, 136, 131, 58, 64, 160, 210, 59, 50, 25, 0, 64, 176, 19, 2, 62, 0, 0, 198, 56, 216, 135, 236, 59, 165, 203, 255, 63, 0, 160, 210, 59, 157, 63, 63, 64, 249, 7, 170, 62, 0, 46, 45, 60, 30, 54, 46, 61, 120, 154, 7, 62, 98, 107, 126, 63, 214, 117, 63, 64, 200, 150, 105, 62, 160, 55, 227, 61, 246, 79, 128, 63, 50, 25, 0, 64, 64, 217, 10, 61, 208, 6, 92, 61, 246, 79, 128, 63, 157, 63, 63, 64, 155, 123, 8, 62, 144, 224, 229, 61, 219, 22, 168, 62, 184, 249, 7, 62, 98, 107, 126, 63, 165, 203, 255, 63, 208, 111, 129, 61, 60, 133, 34, 62, 71, 158, 101, 62, 224, 226, 21, 62, 250, 61, 11, 62, 208, 31, 19, 62, 156, 6, 153, 62, 148, 186, 32, 62, 150, 34, 1, 63, 50, 25, 0, 64, 150, 34, 1, 63, 157, 63, 63, 64, 64, 217, 10, 61, 100, 45, 127, 63, 88, 63, 124, 63, 208, 6, 92, 61, 246, 79, 128, 63, 104, 172, 31, 64, 88, 63, 124, 63, 100, 45, 127, 63, 98, 107, 126, 63, 211, 173, 31, 64, 60, 34, 0, 63, 165, 203, 255, 63, 22, 206, 251, 63, 38, 163, 253, 63, 45, 0, 124, 63, 215, 94, 194, 64, 32, 160, 210, 59, 104, 172, 31, 64, 68, 183, 127, 63, 38, 163, 253, 63, 22, 206, 251, 63, 79, 171, 127, 63, 68, 183, 127, 63, 79, 171, 127, 63, 57, 34, 0, 63, 214, 117, 63, 64, 208, 116, 91, 60, 215, 94, 194, 64, 45, 0, 124, 63, 105, 245, 159, 64, 208, 116, 91, 60, 105, 245, 159, 64, 131, 49, 191, 60, 192, 195, 89, 60, 216, 135, 236, 59, 214, 117, 63, 64, 15, 19, 111, 62, 0, 136, 131, 58, 64, 160, 210, 59, 50, 25, 0, 64, 0, 127, 101, 60, 0, 76, 231, 187, 176, 19, 2, 62, 0, 0, 198, 56, 216, 135, 236, 59, 165, 203, 255, 63, 0, 160, 210, 59, 157, 63, 63, 64, 8, 130, 126, 63, 0, 46, 255, 58, 249, 7, 170, 62, 0, 46, 45, 60, 30, 54, 46, 61, 120, 154, 7, 62, 98, 107, 126, 63, 214, 117, 63, 64, 128, 126, 101, 60, 87, 9, 129, 63, 200, 150, 105, 62, 160, 55, 227, 61, 246, 79, 128, 63, 50, 25, 0, 64, 14, 143, 128, 63, 0, 76, 231, 187, 45, 0, 124, 63, 234, 123, 248, 191, 13, 143, 128, 63, 86, 9, 129, 63, 244, 223, 119, 59, 128, 139, 190, 60, 246, 79, 128, 63, 157, 63, 63, 64, 155, 123, 8, 62, 144, 224, 229, 61, 219, 22, 168, 62, 184, 249, 7, 62, 98, 107, 126, 63, 165, 203, 255, 63, 208, 111, 129, 61, 60, 133, 34, 62, 71, 158, 101, 62, 224, 226, 21, 62, 250, 61, 11, 62, 208, 31, 19, 62, 156, 6, 153, 62, 148, 186, 32, 62, 150, 34, 1, 63, 50, 25, 0, 64, 64, 85, 15, 60, 0, 46, 255, 58, 11, 90, 2, 63, 0, 76, 231, 187, 8, 130, 126, 63, 126, 92, 126, 63, 150, 34, 1, 63, 157, 63, 63, 64, 244, 223, 119, 59, 30, 167, 131, 63, 246, 79, 128, 63, 104, 172, 31, 64, 96, 77, 130, 63, 128, 139, 190, 60, 96, 77, 130, 63, 30, 167, 131, 63, 64, 85, 15, 60, 126, 92, 126, 63, 13, 90, 2, 63, 86, 9, 129, 63, 45, 0, 124, 63, 66, 204, 58, 192, 208, 116, 91, 60, 234, 123, 248, 191, 98, 107, 126, 63, 211, 173, 31, 64, 60, 34, 0, 63, 165, 203, 255, 63, 208, 116, 91, 60, 66, 204, 58, 192, 22, 206, 251, 63, 38, 163, 253, 63, 45, 0, 124, 63, 215, 94, 194, 64, 32, 160, 210, 59, 104, 172, 31, 64, 68, 183, 127, 63, 38, 163, 253, 63, 22, 206, 251, 63, 79, 171, 127, 63, 68, 183, 127, 63, 79, 171, 127, 63, 57, 34, 0, 63, 214, 117, 63, 64, 208, 116, 91, 60, 215, 94, 194, 64, 45, 0, 124, 63, 105, 245, 159, 64, 208, 116, 91, 60, 105, 245, 159, 64),
@@ -155,7 +150,7 @@ _surfaces = [{
"format": 4119,
"index_count": 114,
"index_data": PackedByteArray(19, 0, 8, 0, 16, 0, 19, 0, 18, 0, 8, 0, 13, 0, 11, 0, 7, 0, 23, 0, 2, 0, 6, 0, 13, 0, 23, 0, 11, 0, 23, 0, 13, 0, 2, 0, 14, 0, 12, 0, 9, 0, 24, 0, 1, 0, 4, 0, 14, 0, 24, 0, 12, 0, 24, 0, 14, 0, 1, 0, 3, 0, 20, 0, 15, 0, 3, 0, 17, 0, 20, 0, 21, 0, 22, 0, 25, 0, 21, 0, 10, 0, 22, 0, 30, 0, 26, 0, 29, 0, 30, 0, 28, 0, 26, 0, 27, 0, 29, 0, 0, 0, 27, 0, 30, 0, 29, 0, 5, 0, 33, 0, 31, 0, 5, 0, 32, 0, 33, 0, 50, 0, 41, 0, 47, 0, 50, 0, 45, 0, 41, 0, 43, 0, 44, 0, 40, 0, 44, 0, 39, 0, 36, 0, 53, 0, 44, 0, 43, 0, 44, 0, 53, 0, 39, 0, 42, 0, 49, 0, 48, 0, 42, 0, 46, 0, 49, 0, 52, 0, 51, 0, 54, 0, 52, 0, 34, 0, 51, 0, 38, 0, 59, 0, 35, 0, 59, 0, 57, 0, 56, 0, 63, 0, 59, 0, 38, 0, 59, 0, 63, 0, 57, 0, 65, 0, 55, 0, 62, 0, 65, 0, 64, 0, 55, 0, 37, 0, 61, 0, 60, 0, 37, 0, 58, 0, 61, 0),
"material": SubResource("StandardMaterial3D_6dlqp"),
"material": SubResource("StandardMaterial3D_b2ara"),
"name": "Material.003",
"primitive": 3,
"vertex_count": 66,
@@ -359,6 +354,11 @@ vertex_color_use_as_albedo = true
albedo_texture = ExtResource("8_fuq8q")
roughness = 0.5
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6dlqp"]
resource_name = "Material.003"
shading_mode = 0
albedo_texture = ExtResource("3_lhvib")
[sub_resource type="ArrayMesh" id="ArrayMesh_1xg7e"]
_surfaces = [{
"aabb": AABB(-0.565085, -1.03682, -1, 11.0653, 2.03985, 3.08439),

File diff suppressed because it is too large Load Diff

51
Levels/Scenes/BossOrb.cs Normal file
View File

@@ -0,0 +1,51 @@
using Godot;
public partial class BossOrb : RigidBody3D
{
[Export]
private HealthPoints _hp;
[Signal]
public delegate void OnBossOrbExplodedEventHandler();
[Export]
private PackedScene _attack;
[Export]
private AnimationPlayer _animationPlayer;
public bool CanAttack = false;
public void OnOrbHit(Node node)
{
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, node);
}
else
{
_hp.TakeDamage(1);
if (_animationPlayer != null)
_animationPlayer.Play("OnHit");
GD.Print(_hp.CurrentHP);
if (_hp.CurrentHP <= 0)
{
EmitSignal(SignalName.OnBossOrbExploded);
QueueFree();
}
}
}
public void OnFire()
{
var attack = _attack.Instantiate<Node3D>();
attack.GlobalPosition = GlobalPosition;
GetTree().Root.AddChild(attack);
}
public void DestroySelf()
{
QueueFree();
}
}

View File

@@ -1,28 +1,12 @@
using Godot;
public partial class BossOrbs : RigidBody3D
public partial class BossOrbs : Node3D
{
[Signal]
public delegate void OnBossOrbExplodedEventHandler();
[Export]
private float _rotationSpeed = Mathf.Pi;
[Export]
private HealthPoints _hp;
private float _rotationSpeed = Mathf.Pi / 6;
public override void _Process(double delta)
{
GetParentNode3D().Rotate(Vector3.Up, _rotationSpeed * (float)delta);
}
public void OnOrbHit(Node3D node)
{
_hp.TakeDamage(50000);
GD.Print(_hp.CurrentHP);
if (_hp.CurrentHP <= 0)
{
EmitSignal(SignalName.OnBossOrbExploded);
QueueFree();
}
Rotate(Vector3.Up, _rotationSpeed * (float)delta);
}
}

View File

@@ -0,0 +1,79 @@
// Waving Particles shader by Brian Smith (steampunkdemon.itch.io)
// MIT licence
shader_type canvas_item;
// Uncomment the following line if you are using a version of Godot before 4.0:
// const float PI = 3.14159;
// Comment out the following line if you are not applying the shader to a ColorRect:
uniform vec2 dimensions = vec2(1152.0, 648.0); // Resolution of ColorRect in pixels
uniform float rows = 20.0;
uniform float columns = 5.0;
uniform float vertical_scroll : hint_range(-1.0, 1.0, 0.01) = 0.5;
uniform float horizontal_scroll : hint_range(-1.0, 1.0, 0.01) = 0.1;
uniform float size_min : hint_range(0.1, 1.0, 0.1) = 0.3;
uniform float size_max : hint_range(0.1, 1.0, 0.1) = 0.7; // If 'size_max' is larger than 0.7 the corners of the particles will be clipped if they are rotating.
uniform float wave_min : hint_range(0.0, 1.0, 0.1) = 0.1;
uniform float wave_max : hint_range(0.0, 1.0, 0.1) = 1.0; // If the particles are waving into the neighbouring columns reduce 'wave_max'.
uniform float wave_speed : hint_range(0.0, 2.0, 0.1) = 0.5;
uniform float wave_rotation : hint_range(-1.0, 1.0, 0.1) = 1.0;
uniform float fallSpeed = 0.5;
// Replace the below references to 'source_color' with 'hint_color' if you are using a version of Godot before 4.0:
uniform vec4 far_color : source_color = vec4(0.5, 0.5, 0.5, 1.0);
uniform vec4 near_color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
// Remove the below reference to ': source_color, filter_nearest_mipmap' if you are using a version of Godot before 4.0:
uniform sampler2D particle_texture : source_color, filter_nearest_mipmap;
float greater_than(float x, float y) {
return max(sign(x - y), 0.0);
}
void fragment() {
// You can comment out the below line and add a new uniform above as:
// uniform float time = 10000.0;
// You can then update the time uniform from your _physics_process function by adding or subtracting delta. You can also pause the particles' motion by not changing the time uniform.
float time = 10000.0 + TIME;
// Comment out the following two lines if you are not applying the shader to a TextureRect:
// COLOR = texture(TEXTURE,UV); // This line is only required if you are using a version of Godot before 4.0.
// vec2 dimensions = 1.0 / TEXTURE_PIXEL_SIZE;
float row_rn = fract(sin(floor((UV.y - vertical_scroll * time * fallSpeed) * rows)));
float column_rn = fract(sin(floor((UV.x + row_rn - horizontal_scroll * time * fallSpeed) * columns)));
float wave = sin(wave_speed * time * fallSpeed + column_rn * 90.0);
vec2 uv = (vec2(fract((UV.x + row_rn - horizontal_scroll * time * fallSpeed + (wave * (wave_min + (wave_max - wave_min) * column_rn) / columns / 2.0)) * columns), fract((UV.y - vertical_scroll * time * fallSpeed) * rows)) * 2.0 - 1.0) * vec2(dimensions.x / dimensions.y * rows / columns, 1.0);
float size = size_min + (size_max - size_min) * column_rn;
vec4 color = mix(far_color, near_color, column_rn);
// Comment out the below two lines if you do not need or want the particles to rotate:
// float a = ((column_rn + wave) * wave_rotation) * PI;
// uv *= mat2(vec2(sin(a), -cos(a)), vec2(cos(a), sin(a)));
// Render particles as circles with soft edges:
COLOR.rgb = mix(COLOR.rgb, color.rgb, max((size - length(uv)) / size, 0.0) * color.a);
// Render particles as circles with hard edges:
// COLOR.rgb = mix(COLOR.rgb, color.rgb, greater_than(size, length(uv)) * color.a);
// Render particles as crosses with soft edges:
// COLOR.rgb = mix(COLOR.rgb, color.rgb, max((size - length(uv)) / size, 0.0) * (max(greater_than(size / 10.0, abs(uv.x)), greater_than(size / 10.0, abs(uv.y)))) * color.a);
// Render particles as crosses with hard edges:
// COLOR.rgb = mix(COLOR.rgb, color.rgb, max(greater_than(size / 5.0, abs(uv.x)) * greater_than(size, abs(uv.y)), greater_than(size / 5.0, abs(uv.y)) * greater_than(size, abs(uv.x))) * color.a);
// Render particles as squares:
// COLOR.rgb = mix(COLOR.rgb, color.rgb, greater_than(size, abs(uv.x)) * greater_than(size, abs(uv.y)) * color.a);
// Render particles as diamonds:
// COLOR.rgb = mix(COLOR.rgb, color.rgb, greater_than(size, abs(uv.y) + abs(uv.x)) * color.a);
// Render particles using the 'particle_texture':
// The texture should have a border of blank transparent pixels.
vec4 particle_texture_pixel = texture(particle_texture, (uv / size + 1.0) / 2.0) * color;
COLOR.rgb = mix(COLOR.rgb, particle_texture_pixel.rgb, particle_texture_pixel.a);
COLOR.a = min(COLOR.a, particle_texture_pixel.a);
}

View File

@@ -0,0 +1,35 @@
using Godot;
public partial class GameEnding : Node3D
{
public void OnGameEnding()
{
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.Stop();
var videoPlayer = GetNode<VideoStreamPlayer>("VideoStreamPlayer");
videoPlayer.Play();
videoPlayer.Finished += CutsceneOver;
var gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
gameManager.OnLevelClear();
}
public void CutsceneOver()
{
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
bgmPlayer.SetBGMFromFilepath("Audio/BGM/GameEnding.ogg");
bgmPlayer.PlayBGM();
var animationPlayer = GetNode<AnimationPlayer>("AnimationPlayer");
animationPlayer.Play("GameEnding");
animationPlayer.AnimationFinished += AfterCredits;
}
public void AfterCredits(StringName animationName)
{
var gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
gameManager.ReloadGameScene();
}
}

View File

View File

@@ -1151,22 +1151,22 @@ script = ExtResource("1_k32xj")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.729415, 0, -0.194958)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.85078, 0, -0.0949185)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, 1.8807, 0, -2.50554)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.44161, 0, -1.74858)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, 0.462973, 0, -0.859208)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.12335, 0, -2.33267)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, 4.14164, 0, -0.256041)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.65446, 0.0400391, -2.44977)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, -4.63666, 0.0400391, -0.184444)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08228, 0, -0.694794)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, -3.05541, 0, -1.93125)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("2_fyxib")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.78224, 0, -0.525299)
transform = Transform3D(-0.999987, 0, 0.00518369, 0, 1, 0, -0.00518369, 0, -0.999987, -4.75447, 0, -2.10955)
[node name="StaticBody3D" type="StaticBody3D" parent="."]
collision_mask = 0

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=66 format=3 uid="uid://ctvkevnc0wxka"]
[gd_scene load_steps=68 format=3 uid="uid://ctvkevnc0wxka"]
[ext_resource type="Script" path="res://Levels/Scripts/Level.cs" id="1_gkcpw"]
[ext_resource type="PackedScene" uid="uid://jgf7k1r35km1" path="res://Levels/ExitPortal.tscn" id="3_wflo5"]
@@ -22,21 +22,6 @@
[ext_resource type="Texture2D" uid="uid://ujnm7df40eyq" path="res://Levels/Models/Stage4/STAGE 4 final_Layer 1.png" id="20_kpb43"]
[ext_resource type="Texture2D" uid="uid://bv2flw6ym44t1" path="res://Levels/Models/Stage4/STAGE 4 final_Background.png" id="21_ro3bf"]
[sub_resource type="BoxShape3D" id="BoxShape3D_7qgo5"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_ooasb"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_aaw7g"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_omips"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_5qrun"]
size = Vector3(3.244, 5.0593, 3.17)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5mnb2"]
resource_name = "Material.001"
transparency = 2
@@ -58,6 +43,7 @@ resource_name = "Material.022"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_color = Color(0, 0, 0, 1)
metallic = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vnp6j"]
resource_name = "Material.025"
@@ -70,6 +56,7 @@ resource_name = "Material.024"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_color = Color(0, 0, 0, 1)
metallic = 1.0
[sub_resource type="ArrayMesh" id="ArrayMesh_innp1"]
_surfaces = [{
@@ -803,107 +790,35 @@ _data = {
"Animation": SubResource("Animation_gv7xu")
}
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ixumy"]
albedo_color = Color(0, 0, 0, 1)
metallic = 1.0
[sub_resource type="PlaneMesh" id="PlaneMesh_v5uc2"]
material = SubResource("StandardMaterial3D_ixumy")
size = Vector2(15, 15)
[sub_resource type="BoxShape3D" id="BoxShape3D_7qgo5"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_ooasb"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_aaw7g"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_omips"]
size = Vector3(5, 20, 27.822)
[sub_resource type="BoxShape3D" id="BoxShape3D_5qrun"]
size = Vector3(3.244, 5.0593, 3.17)
[node name="Level4" type="Node3D" groups=["Level"]]
process_mode = 3
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.505, -0.358024, 1.095)
script = ExtResource("1_gkcpw")
[node name="Enemies" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.341564, -0.707, -0.316941)
[node name="MeleeEnemyOrb" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.13385, 0, 0.371333)
[node name="MeleeEnemyOrb2" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.14673, -9.53674e-07, 1.69179)
[node name="MeleeEnemyOrb3" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.16009, -9.53674e-07, 2.94495)
[node name="MeleeEnemyOrb6" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.72545, 0, 0.371333)
[node name="MeleeEnemyOrb7" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.71257, -9.53674e-07, 1.69179)
[node name="MeleeEnemyOrb8" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.69921, -9.53674e-07, 2.94495)
[node name="MeleeEnemyOrb4" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.14077, 0, 0.536548)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.17727, 9.53674e-07, 1.7005)
[node name="MeleeEnemyOrb5" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.90128, 0, 0.427487)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.93202, -9.53674e-07, 1.65812)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.40815, 0, -2.45802)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.50391, 1.90735e-06, -2.46756)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.60899, 0.0507913, -2.85175)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.50614, 0, -2.74671)
[node name="RangedEnemy7" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.36028, 1.5342, -4.20792)
[node name="RangedEnemy8" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.48452, 1.5342, -4.49721)
[node name="RangedEnemy9" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.78759, 1.5342, -4.11365)
[node name="RangedEnemy10" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.59502, 1.5342, -4.42218)
[node name="StaticBody3D" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.22039)
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.03, 2.71587, 0)
shape = SubResource("BoxShape3D_7qgo5")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.61537, 0, 0)
shape = SubResource("BoxShape3D_ooasb")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2.43488, -6.81151)
shape = SubResource("BoxShape3D_aaw7g")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 12.1027)
shape = SubResource("BoxShape3D_omips")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.37433, -2.24614, -3.56982)
shape = SubResource("BoxShape3D_5qrun")
[node name="CollisionShape3D6" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.23197, -2.24614, -3.56982)
shape = SubResource("BoxShape3D_5qrun")
[node name="Exit Portal" parent="." instance=ExtResource("3_wflo5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.481772, -0.12655, -4.85299)
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, -0.527878, 10.966, 6.61121)
projection = 1
current = true
size = 10.8546
[node name="STAGE 4 final" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.847963, -0.287248, 2.28422)
transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, -0.856753, 0, 2.57856)
[node name="Plane" type="MeshInstance3D" parent="STAGE 4 final"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.50716, 0.15796, -2.3124)
@@ -945,3 +860,95 @@ autoplay = "Animation"
libraries = {
"": SubResource("AnimationLibrary_biich")
}
[node name="MeshInstance3D" type="MeshInstance3D" parent="STAGE 4 final"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.224753, 0, -2.40268)
mesh = SubResource("PlaneMesh_v5uc2")
[node name="Enemies" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.434415, -0.383359, -0.101319)
[node name="MeleeEnemyOrb" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.13385, 0, 0.371333)
[node name="MeleeEnemyOrb2" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.14673, -9.53674e-07, 1.69179)
[node name="MeleeEnemyOrb3" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.16009, -9.53674e-07, 2.94495)
[node name="MeleeEnemyOrb6" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.72545, 0, 0.371333)
[node name="MeleeEnemyOrb7" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.71257, -9.53674e-07, 1.69179)
[node name="MeleeEnemyOrb8" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.69921, -9.53674e-07, 2.94495)
[node name="MeleeEnemyOrb4" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.14077, 0, 0.536548)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, -2.95027, 9.53674e-07, 1.69441)
[node name="MeleeEnemyOrb5" parent="Enemies" instance=ExtResource("4_np1us")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.90128, 0, 0.427487)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, 3.15902, -9.53674e-07, 1.65203)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, 3.34711, 0, -1.44694)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, 4.44287, 1.90735e-06, -1.45648)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, -4.67003, 0.0507913, -1.84067)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, -3.56718, 0, -1.73563)
[node name="RangedEnemy7" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, -3.90946, 1.5342, -3.19684)
[node name="RangedEnemy8" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, -3.0337, 1.5342, -3.48614)
[node name="RangedEnemy9" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, 3.02807, 1.5342, -3.10257)
[node name="RangedEnemy10" parent="Enemies" instance=ExtResource("5_dwr6w")]
transform = Transform3D(-0.99964, 0, -0.02684, 0, 1, 0, 0.02684, 0, -0.99964, 3.8355, 1.5342, -3.4111)
[node name="StaticBody3D" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.22039)
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.79988, 2.71587, 0)
shape = SubResource("BoxShape3D_7qgo5")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.78438, 0, 0)
shape = SubResource("BoxShape3D_ooasb")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2.43488, -5.95268)
shape = SubResource("BoxShape3D_aaw7g")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 10.6599)
shape = SubResource("BoxShape3D_omips")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.16344, -2.24614, -2.69724)
shape = SubResource("BoxShape3D_5qrun")
[node name="CollisionShape3D6" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.93552, -2.24614, -2.81557)
shape = SubResource("BoxShape3D_5qrun")
[node name="Exit Portal" parent="." instance=ExtResource("3_wflo5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.369465, 0.430741, -4.61825)

View File

@@ -447,10 +447,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.02877, 0, -3.9926)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.880343, 0, -3.96708)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.34288, -0.540624, -4.86023)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, 2.25543, -0.540624, -5.07379)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.26165, -0.540624, -4.82196)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, -3.12051, -0.540624, -5.05003)
[node name="Melee Enemy3" parent="Enemies" instance=ExtResource("6_bvlpe")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.82783, 0, -2.23182)
@@ -459,19 +459,19 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.82783, 0, -2.23182)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.71768, 0, -2.14251)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.86281, -0.540624, -0.113782)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, 1.88885, -0.540624, -1.15556)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.13477, -0.540624, 0.232252)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, 4.162, -0.540624, -0.626571)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.508544, -0.540624, -1.13693)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, -0.420066, -0.540624, -1.97878)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.87485, -0.540624, -0.0802793)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, -2.84921, -0.540624, -1.18296)
[node name="RangedEnemy7" parent="Enemies" instance=ExtResource("7_nkdkc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1221, -0.540624, 0.381076)
transform = Transform3D(-0.999979, 0, -0.00651006, 0, 1, 0, 0.00651006, 0, -0.999979, -5.09629, -0.540624, -0.695893)
[node name="Melee Enemy5" parent="Enemies" instance=ExtResource("6_bvlpe")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.38085, 0, 2.36044)

View File

@@ -373,6 +373,22 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.98928, -0.440327, -5.37495
[node name="Melee Enemy2" parent="Enemies" instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.658211, -0.481392, -5.30212)
[node name="Melee Enemy8" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.69063, -0.311206, 5.89608)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy5" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.54344, -0.422286, 3.85762)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy6" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.40446, -0.556523, 5.1222)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy7" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.41915, -0.415115, 3.75957)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy3" parent="Enemies" instance=ExtResource("8_pcfp7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.75905, -0.356384, -3.9141)
@@ -380,28 +396,28 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.75905, -0.356384, -3.9141)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.78719, -0.325428, -2.71366)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.06266, -0.291706, -3.81094)
transform = Transform3D(-0.999746, 0, 0.0225302, 0, 1, 0, -0.0225302, 0, -0.999746, -5.06266, -0.291706, -3.81094)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.02515, -0.282636, -2.63863)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.19223, 1.53048, -0.614206)
transform = Transform3D(-0.999197, 0, 0.0400621, 0, 1, 0, -0.0400621, 0, -0.999197, -3.19223, 1.53048, -0.614206)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.19223, 1.53071, 1.78455)
transform = Transform3D(-0.999197, 0, 0.0400621, 0, 1, 0, -0.0400621, 0, -0.999197, -3.19223, 1.53071, 1.78455)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.61478, 1.56024, 1.27111)
transform = Transform3D(-0.999968, 0, -0.00802833, 0, 1, 0, 0.00802833, 0, -0.999968, 2.61478, 1.56024, 1.27111)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.62754, 1.56001, -0.655549)
transform = Transform3D(-0.999968, 0, -0.00802833, 0, 1, 0, 0.00802833, 0, -0.999968, 2.62754, 1.56001, -0.655549)
[node name="RangedEnemy7" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.62754, 1.56047, -2.65876)
transform = Transform3D(-0.999968, 0, -0.00802833, 0, 1, 0, 0.00802833, 0, -0.999968, 2.62754, 1.56047, -2.65876)
[node name="RangedEnemy8" parent="Enemies" instance=ExtResource("9_upafh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.55098, 1.56001, -4.86613)
transform = Transform3D(-0.999968, 0, -0.00802833, 0, 1, 0, 0.00802833, 0, -0.999968, 2.55098, 1.56001, -4.86613)
[node name="Exit Portal" parent="." instance=ExtResource("3_ehcts")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.16047, 0, -5.04704)

View File

@@ -1,10 +1,45 @@
[gd_scene load_steps=13 format=3 uid="uid://bsq7edeueqyjg"]
[gd_scene load_steps=19 format=3 uid="uid://bsq7edeueqyjg"]
[ext_resource type="Script" path="res://Levels/Scripts/Level.cs" id="1_wqwee"]
[ext_resource type="PackedScene" uid="uid://bgf5byqt71kir" path="res://Levels/Models/Stage7/Stage7.tscn" id="2_21i6n"]
[ext_resource type="PackedScene" uid="uid://dahp73fwld24h" path="res://Enemies/RangedEnemy.tscn" id="3_k38yu"]
[ext_resource type="PackedScene" uid="uid://jgf7k1r35km1" path="res://Levels/ExitPortal.tscn" id="3_sjnhq"]
[ext_resource type="PackedScene" uid="uid://bt5rolsyjmx55" path="res://Enemies/MeleeEnemy.tscn" id="4_i8hlv"]
[ext_resource type="Shader" path="res://Levels/Scenes/FallingLeaves.gdshader" id="6_biibx"]
[ext_resource type="Texture2D" uid="uid://jb30lo7r5ev4" path="res://Textures/rose petal 1.png" id="7_it0x1"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_q3vsp"]
sky_top_color = Color(1, 1, 1, 1)
sky_horizon_color = Color(0.75, 0.75, 0.75, 1)
ground_bottom_color = Color(0, 0, 0, 1)
ground_horizon_color = Color(0.75, 0.75, 0.75, 1)
[sub_resource type="Sky" id="Sky_dy0fx"]
sky_material = SubResource("ProceduralSkyMaterial_q3vsp")
[sub_resource type="Environment" id="Environment_4qh5g"]
background_mode = 2
sky = SubResource("Sky_dy0fx")
tonemap_mode = 2
glow_enabled = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qgv5j"]
shader = ExtResource("6_biibx")
shader_parameter/dimensions = Vector2(1152, 648)
shader_parameter/rows = 60.0
shader_parameter/columns = 2.0
shader_parameter/vertical_scroll = 0.5
shader_parameter/horizontal_scroll = 0.34
shader_parameter/size_min = 0.7
shader_parameter/size_max = 1.0
shader_parameter/wave_min = 0.2
shader_parameter/wave_max = 1.0
shader_parameter/wave_speed = 1.2
shader_parameter/wave_rotation = 1.0
shader_parameter/fallSpeed = 0.105
shader_parameter/far_color = Color(0.333333, 0.00784314, 0, 0.905882)
shader_parameter/near_color = Color(0.968627, 0.117647, 0.117647, 0.768627)
shader_parameter/particle_texture = ExtResource("7_it0x1")
[sub_resource type="BoxShape3D" id="BoxShape3D_ny8q1"]
size = Vector3(5, 20, 27.822)
@@ -31,6 +66,28 @@ size = Vector3(4.32001, 3, 4.24331)
process_mode = 3
script = ExtResource("1_wqwee")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_4qh5g")
[node name="Container" type="Control" parent="."]
use_parent_material = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="Container"]
z_index = -1
material = SubResource("ShaderMaterial_qgv5j")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="STAGE 7" parent="." instance=ExtResource("2_21i6n")]
transform = Transform3D(1.04, 0, 0, 0, 1.04, 0, 0, 0, 1.04, -0.601425, 0, 0)
@@ -80,37 +137,53 @@ shape = SubResource("BoxShape3D_tj084")
[node name="Enemies" type="Node3D" parent="."]
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.85384, 0, 2.31457)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -4.85384, 0, 2.31457)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.38654, 0, 2.40798)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 3.38654, 0, 2.40798)
[node name="Melee Enemy" parent="Enemies" instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.55692, 0, 1.39133)
[node name="Melee Enemy7" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.22017, 1.90735e-06, -0.12995)
_hp = NodePath("../Melee Enemy2/HP Component")
[node name="Melee Enemy6" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.22475, 1.90735e-06, -1.13099)
_hp = NodePath("../Melee Enemy2/HP Component")
[node name="Melee Enemy8" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.31128, 0.142259, -0.157732)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy2" parent="Enemies" instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.06656, 0, 1.27775)
[node name="Melee Enemy9" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.347677, -0.16304, -0.110985)
_hp = NodePath("../Melee Enemy3/HP Component")
[node name="Melee Enemy3" parent="Enemies" instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.737402, 0, -0.439096)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.501566, 0, -1.0495)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.37518, 0.999847, -5.54545)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 3.4767, 0.552559, -5.0211)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6339, 0.999847, -5.22149)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.03106, 0.54106, -5.02965)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.62257, 0.999847, -5.26199)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -3.62257, 0.525391, -4.88505)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("3_k38yu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.3436, 0.999847, -5.72768)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.3436, 0.564535, -4.94624)
[node name="Melee Enemy4" parent="Enemies" instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7193, 0, -6.94253)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7193, 0, -6.27177)
[node name="Melee Enemy5" parent="Enemies" instance=ExtResource("4_i8hlv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.366184, 0, -6.90203)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.366184, 0, -6.28619)
[node name="Exit Portal" parent="." instance=ExtResource("3_sjnhq")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.484857, 0.170241, -5.15013)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://c4xcka4ekuur8"]
[gd_scene load_steps=17 format=3 uid="uid://c4xcka4ekuur8"]
[ext_resource type="Script" path="res://Levels/Scripts/Level.cs" id="1_jc6qp"]
[ext_resource type="PackedScene" uid="uid://b6ciyf30f07ll" path="res://Levels/Models/Stage8/STAGE 8.glb" id="2_wcvbl"]
@@ -6,6 +6,28 @@
[ext_resource type="PackedScene" uid="uid://bt5rolsyjmx55" path="res://Enemies/MeleeEnemy.tscn" id="3_t8wes"]
[ext_resource type="PackedScene" uid="uid://dahp73fwld24h" path="res://Enemies/RangedEnemy.tscn" id="4_off4x"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_2vg1n"]
sky_top_color = Color(1, 1, 1, 1)
sky_horizon_color = Color(0.75, 0.75, 0.75, 1)
ground_bottom_color = Color(0, 0, 0, 1)
ground_horizon_color = Color(0.75, 0.75, 0.75, 1)
[sub_resource type="Sky" id="Sky_7vt0r"]
sky_material = SubResource("ProceduralSkyMaterial_2vg1n")
[sub_resource type="Environment" id="Environment_wfdua"]
background_mode = 2
sky = SubResource("Sky_7vt0r")
tonemap_mode = 2
fog_light_energy = 0.83
fog_density = 0.0414
fog_sky_affect = 0.0
fog_height = -37.65
adjustment_enabled = true
adjustment_brightness = 1.21
adjustment_contrast = 1.42
adjustment_saturation = 0.83
[sub_resource type="BoxShape3D" id="BoxShape3D_3n0wx"]
size = Vector3(5, 20, 27.822)
@@ -34,6 +56,9 @@ size = Vector3(1, 2.48491, 2.18519)
process_mode = 3
script = ExtResource("1_jc6qp")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_wfdua")
[node name="STAGE 8" parent="." instance=ExtResource("2_wcvbl")]
[node name="Collisions" type="StaticBody3D" parent="."]
@@ -81,19 +106,19 @@ shape = SubResource("BoxShape3D_vmmcb")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.43249, 0, 1.37801)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.37175, 0, 0.203655)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, -4.37175, 0, 0.203655)
[node name="Melee Enemy2" parent="Enemies" instance=ExtResource("3_t8wes")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.20868, 0, 2.53211)
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.56526, 0, 2.77508)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, 3.56526, 0, 2.77508)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.18762, 0, -5.24291)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, 4.18762, 0, -5.24291)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.14115, 0, -5.28341)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, -5.14115, 0, -5.28341)
[node name="Melee Enemy3" parent="Enemies" instance=ExtResource("3_t8wes")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.22214, 0, -4.33178)
@@ -102,13 +127,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.22214, 0, -4.33178)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.70358, 0, -4.35202)
[node name="RangedEnemy5" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.97917, 0, -2.71198)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, -4.97917, 0, -2.71198)
[node name="Melee Enemy5" parent="Enemies" instance=ExtResource("3_t8wes")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.14006, 0, -0.70748)
[node name="RangedEnemy6" parent="Enemies" instance=ExtResource("4_off4x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.26155, 0, -1.57812)
transform = Transform3D(-0.999839, 0, -0.0179411, 0, 1, 0, 0.0179411, 0, -0.999839, 3.26155, 0, -1.57812)
[node name="Exit Portal" parent="." instance=ExtResource("3_44edv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.54331, 0, -4.41291)

View File

@@ -386,6 +386,7 @@ data = PackedVector3Array(-1, -0.1918, 1, -1, 1, -1, -1, 1, 1, -1, -0.1918, 1, -
[sub_resource type="Animation" id="Animation_h1727"]
resource_name = "Animation"
length = 20.8333
loop_mode = 1
tracks/0/type = "rotation_3d"
tracks/0/imported = true
tracks/0/enabled = true
@@ -428,6 +429,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.102972, 0)
mesh = SubResource("ArrayMesh_aecmk")
skeleton = NodePath("")
[node name="Melee Enemy2" parent="STAGE 9/Plane" instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.50991, 0, 1.92293)
[node name="Melee Enemy2" parent="STAGE 9/Plane/Melee Enemy2" instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.932325, -0.367979, -6.01649)
[node name="Melee Enemy2" parent="STAGE 9/Plane/Melee Enemy2/Melee Enemy2" instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.05054, -0.367979, -0.683629)
[node name="Cube" type="MeshInstance3D" parent="STAGE 9"]
transform = Transform3D(-1.88868, 0, -9.70661e-08, 0, 1, 0, 6.1541e-07, 0, -0.297894, 2.97173, 0.129772, -3.56831)
mesh = SubResource("ArrayMesh_0boqi")
@@ -495,12 +505,13 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_5ivpb")
[node name="Plane_001" type="MeshInstance3D" parent="STAGE 9"]
transform = Transform3D(4.13344, 0, 0, 0, 4.13344, 0, 0, 0, 4.13344, -0.687618, 0.150321, -0.415739)
transform = Transform3D(4.01437, 0, 0.984958, 0, 4.13344, 0, -0.984958, 0, 4.01437, -0.687618, 0.150321, -0.415739)
mesh = SubResource("ArrayMesh_akiri")
skeleton = NodePath("")
[node name="BezierCurve_001" type="MeshInstance3D" parent="STAGE 9"]
transform = Transform3D(1.0435, 0, 0, 0, 1.33801, 0, 0, 0, 1.0435, 2.25921, 0.499229, 3.46223)
visible = false
mesh = SubResource("ArrayMesh_j10w7")
skeleton = NodePath("")
@@ -560,29 +571,38 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_bhvb5")
[node name="AnimationPlayer" type="AnimationPlayer" parent="STAGE 9"]
autoplay = "Animation"
libraries = {
"": SubResource("AnimationLibrary_qdjnq")
}
[node name="Enemies" type="Node3D" parent="."]
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("5_g2lk8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.15118, 0.257979, -2.952)
[node name="Melee Enemy" parent="." instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.07774, 0.251952, 1.13652)
[node name="Melee Enemy2" parent="." instance=ExtResource("6_he4fx")]
[node name="Melee Enemy2" parent="Enemies" instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.59927, 0, 2.47846)
[node name="RangedEnemy" parent="." instance=ExtResource("5_g2lk8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.88274, 0, -1.93627)
[node name="Melee Enemy" parent="Enemies" instance=ExtResource("6_he4fx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.07774, 0.251952, 1.13652)
[node name="RangedEnemy2" parent="." instance=ExtResource("5_g2lk8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.526673, -0.132149, -3.13367)
[node name="RangedEnemy4" parent="Enemies" instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, -1.48224, -0.0960431, -2.952)
[node name="RangedEnemy3" parent="." instance=ExtResource("5_g2lk8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.307606, -0.298673, -3.61058)
[node name="RangedEnemy" parent="Enemies" instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, 1.88274, 0, -1.93627)
[node name="RangedEnemy6" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, -4.88238, -0.396447, -4.21396)
_hp = NodePath("../RangedEnemy2/HP Component")
[node name="RangedEnemy5" parent="Enemies" node_paths=PackedStringArray("_hp") instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, -4.78224, -0.264298, 0.6371)
_hp = NodePath("../RangedEnemy2/HP Component")
[node name="RangedEnemy2" parent="Enemies" instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, 0.526673, -0.132149, -3.13367)
[node name="RangedEnemy3" parent="Enemies" instance=ExtResource("5_g2lk8")]
transform = Transform3D(-0.999999, 0, -0.00116936, 0, 1, 0, 0.00116936, 0, -0.999999, -0.307606, -0.298673, -3.61058)
[node name="Exit Portal" parent="." instance=ExtResource("7_h6fqi")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.469687, 0, -5.16503)

Binary file not shown.

View File

@@ -4,8 +4,8 @@ public partial class FinalLevel : Node3D
{
public override void _Ready()
{
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.SetBGMFromFilepath("Audio/BGM/BossTheme.ogg");
bgmPlayer.PlayBGM();
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.SetBGMFromFilepath("Audio/BGM/BossTheme.ogg");
bgmPlayer.PlayBGM();
}
}

View File

@@ -1,4 +1,4 @@
using Godot;
using Godot;
using System.Collections.Generic;
using System.Linq;
@@ -9,18 +9,23 @@ public partial class Level : Node3D
public override void _EnterTree()
{
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
_enemies = GetNode("Enemies").GetChildren().OfType<BasicEnemy>().ToList();
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
_enemies = GetNode("Enemies").GetChildren().OfType<BasicEnemy>().ToList();
}
public void OnEnemyDefeated(BasicEnemy enemy)
{
if (_enemies.Contains(enemy))
{
GD.Print("On enemy defeated " + enemy.Name);
_enemies.Remove(enemy);
if (!_enemies.Any())
_gameManager.OnAllEnemiesDefeated();
}
if (_enemies.Contains(enemy))
{
GD.Print("On enemy defeated " + enemy.Name);
_enemies.Remove(enemy);
if (!_enemies.Any())
_gameManager.OnAllEnemiesDefeated();
}
}
public void GameEnding()
{
QueueFree();
}
}

View File

@@ -0,0 +1,32 @@
using Godot;
using System;
public partial class OrbAttack : Projectile
{
[Export]
private Sprite3D _sprite;
public override void _PhysicsProcess(double delta)
{
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
if (pathFollow.ProgressRatio <= 0.98f)
{
pathFollow.Progress += Speed * (float)delta;
}
else
{
ExplodeAttack();
}
}
public override void _Process(double delta)
{
if (!IsQueuedForDeletion())
_sprite.RotateY(25);
}
private void ExplodeAttack()
{
}
}

View File

@@ -0,0 +1,5 @@
[gd_scene format=3 uid="uid://hr00usxj40s4"]
[node name="Orb Attack" type="Node3D"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]

View File

@@ -15,12 +15,17 @@ public partial class Character : CharacterBody3D
public bool CanShoot { get; protected set; }
public bool CanShootAlt { get; protected set; }
protected GameManager _gameManager;
private bool isPaused;
public override void _EnterTree()
{
Position = OwnerPlayer.SpawnPoint.Position;
CanShoot = true;
CanShootAlt = true;
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
}
@@ -35,14 +40,14 @@ public partial class Character : CharacterBody3D
MoveAndSlide();
}
public override void _UnhandledInput(InputEvent @event)
public override void _Input(InputEvent @event)
{
if (Input.IsActionJustPressed("exit"))
GetTree().Quit();
if (Input.IsActionJustPressed(OwnerPlayer.PlayerInput.Fire()) && CanShoot)
Fire();
if (Input.IsActionJustPressed(OwnerPlayer.PlayerInput.AltFire()) && CanShoot)
if (Input.IsActionJustPressed(OwnerPlayer.PlayerInput.AltFire()) && CanShootAlt)
AltFire();
}
@@ -94,9 +99,9 @@ public partial class Character : CharacterBody3D
if (proj.HasRotation)
proj.Rotation = GetNode<Node3D>("Pivot").Rotation;
}
CanShoot = false;
CanShootAlt = false;
await ToSignal(GetTree().CreateTimer(projectiles.First().Cooldown), "timeout");
CanShoot = true;
CanShootAlt = true;
}
public void OnHit(Node3D node)

View File

@@ -1,4 +1,4 @@
using Godot;
using Godot;
using Godot.Collections;
using System.Collections.Generic;
@@ -29,9 +29,9 @@ public partial class Player : Node3D
public override void _Ready()
{
foreach (var character in PlayableCharacterScenes)
{
CharactersLeftOnStage.Add(character);
}
foreach (var character in PlayableCharacterScenes)
{
CharactersLeftOnStage.Add(character);
}
}
}

View File

@@ -1,4 +1,4 @@
using Godot;
using Godot;
public partial class Projectile : Node3D
{
@@ -18,44 +18,44 @@ public partial class Projectile : Node3D
public override void _EnterTree()
{
Speed = _projectileSpeed;
Speed = _projectileSpeed;
}
public override void _PhysicsProcess(double delta)
{
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
pathFollow.Progress += Speed * (float)delta;
if (pathFollow.ProgressRatio > 0.98f)
Delete();
var pathFollow = GetNode<PathFollow3D>("PathFollow3D");
pathFollow.Progress += Speed * (float)delta;
if (pathFollow.ProgressRatio > 0.98f)
Delete();
}
public void OnProjectileHit(Node node)
{
if (node is BasicEnemy basicEnemy)
basicEnemy.Call(BasicEnemy.MethodName.OnEnemyHit, node);
Delete();
if (node is BasicEnemy basicEnemy)
basicEnemy.Call(BasicEnemy.MethodName.OnEnemyHit, node);
Delete();
}
public void OnPlayerHit(Node node)
{
SetPhysicsProcess(false);
SetPhysicsProcess(false);
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, this);
}
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
{
GD.Print("Player hit: " + character.Name);
character.Call(Character.MethodName.OnHit, this);
}
QueueFree();
QueueFree();
}
public void Delete()
{
if (!isDeleted)
{
isDeleted = true;
QueueFree();
}
if (!isDeleted)
{
isDeleted = true;
QueueFree();
}
}
public float Speed { get; private set; }

View File

@@ -4,7 +4,7 @@ public partial class SpawnPoint : Marker3D
{
public void SetPlayerPosition(Character character)
{
GD.Print("Moving character to spawn point");
character.Position = Position;
GD.Print("Moving character to spawn point");
character.Position = Position;
}
}

View File

@@ -20,7 +20,7 @@ public partial class CapricornControls : Character
MoveAndSlide();
}
public override void _UnhandledInput(InputEvent @event)
public override void _Input(InputEvent @event)
{
if (Input.IsActionJustPressed("exit"))
GetTree().Quit();
@@ -86,8 +86,8 @@ public partial class CapricornControls : Character
{
IsShooting = true;
CanShoot = false;
await ToSignal(GetTree().CreateTimer(1.0f), "timeout");
var projectile = _fireProjectile.Instantiate<Node3D>();
await ToSignal(GetTree().CreateTimer(1.0f), "timeout");
projectile.Position = Position;
if (GetParent() != null)
GetParent().AddChild(projectile);
@@ -99,8 +99,8 @@ public partial class CapricornControls : Character
{
IsShooting = true;
CanShoot = false;
await ToSignal(GetTree().CreateTimer(1.0f), "timeout");
var projectile = _altFireProjectile.Instantiate<Node3D>();
await ToSignal(GetTree().CreateTimer(1.0f), "timeout");
projectile.Position = Position;
if (GetParent() != null)
GetParent().AddChild(projectile);

BIN
Textures/GameJam2023/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://beeoci86i7wpk"
path="res://.godot/imported/An Imitation of Heaven.wav-a3e87bb83435ae21c40c33ecd97fa70b.sample"
[deps]
source_file="res://Textures/GameJam2023/An Imitation of Heaven.wav"
dest_files=["res://.godot/imported/An Imitation of Heaven.wav-a3e87bb83435ae21c40c33ecd97fa70b.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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,32 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://db1k4nwk07rrn"
path="res://.godot/imported/DISSAPPEARING ENEMY.gltf-2562aaee73ebe69d5289e5242a86b2b3.scn"
[deps]
source_file="res://Textures/GameJam2023/DISSAPPEARING ENEMY.gltf"
dest_files=["res://.godot/imported/DISSAPPEARING ENEMY.gltf-2562aaee73ebe69d5289e5242a86b2b3.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b28qeipr6u68j"
path="res://.godot/imported/clouds.png-d93659a78f99c62808a58845894c8dbd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Textures/GameJam2023/clouds.png"
dest_files=["res://.godot/imported/clouds.png-d93659a78f99c62808a58845894c8dbd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Some files were not shown because too many files have changed in this diff Show More