Compare commits
12 Commits
a5d36734ef
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
549aa9f7ac | ||
| af3fc06e12 | |||
| 7bf559a800 | |||
|
|
54b044142d | ||
| 568eb9e6e0 | |||
| f3528d897c | |||
| ce7576731c | |||
| 6138957524 | |||
| 17f2003fe0 | |||
| 915a6ed72c | |||
| 7599d3a665 | |||
| 37180e2def |
BIN
Animations/Alegreya-Regular.ttf
Normal file
33
Animations/Alegreya-Regular.ttf.import
Normal 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
BIN
Animations/OnHitHedron.res
Normal file
BIN
Animations/OnHitOrb.res
Normal file
BIN
Animations/OnHitPyramid.res
Normal 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")
|
||||
}
|
||||
|
||||
BIN
Audio/BGM/An-Imitation-of-Heaven.ogg
Normal file
19
Audio/BGM/An-Imitation-of-Heaven.ogg.import
Normal 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
|
||||
@@ -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
19
Audio/BGM/GameEnding.ogg.import
Normal 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
24
Audio/SFX/HitObstacle.wav.import
Normal 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
19
Audio/SFX/hit.ogg.import
Normal 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
|
||||
@@ -11,7 +11,7 @@ _data = {
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_e4v7f"]
|
||||
height = 15.359
|
||||
height = 2.72407
|
||||
radius = 0.154574
|
||||
|
||||
[node name="EnemyBullet" type="Path3D"]
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
19
Enemies/Attacks/GodCircuitAttacks/BossAttack.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
574
Enemies/Attacks/GodCircuitAttacks/HedronAttack.tscn
Normal 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"]
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
34
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
276
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.tscn
Normal 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"]
|
||||
@@ -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"
|
||||
@@ -14,7 +64,7 @@ length = 0.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("god circuit stage 1/Cube:layers")
|
||||
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
@@ -26,7 +76,7 @@ tracks/0/keys = {
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("god circuit stage 1/Cube2:layers")
|
||||
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
@@ -47,13 +97,25 @@ 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
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("god circuit stage 1/Cube:layers")
|
||||
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
@@ -65,7 +127,7 @@ tracks/0/keys = {
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("god circuit stage 1/Cube2:layers")
|
||||
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
@@ -86,18 +148,47 @@ 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")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_n2erm"]
|
||||
size = Vector3(2.89997, 1, 5.5749)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7b0kx"]
|
||||
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 = [{
|
||||
@@ -133,11 +224,8 @@ shadow_mesh = SubResource("ArrayMesh_f3cka")
|
||||
render_priority = 0
|
||||
shader = ExtResource("3_05w5o")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_n2erm"]
|
||||
size = Vector3(2.89997, 1, 5.5749)
|
||||
|
||||
[node name="God Circuit" type="Node3D" node_paths=PackedStringArray("_animationPlayer")]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.877012, 0.480468, 0, -0.480468, 0.877012, 0, 2.3872, 1.61832)
|
||||
transform = Transform3D(1, 0, 0, 0, 0.877012, 0.480468, 0, -0.480468, 0.877012, 0, 1.29734, 0)
|
||||
script = ExtResource("1_gyfww")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
@@ -146,22 +234,8 @@ libraries = {
|
||||
"": SubResource("AnimationLibrary_qiwcq")
|
||||
}
|
||||
|
||||
[node name="god circuit stage 1" type="Node3D" parent="."]
|
||||
|
||||
[node name="Cube" type="MeshInstance3D" parent="god circuit stage 1"]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, -2.58153, 0, -1.66413)
|
||||
mesh = SubResource("ArrayMesh_vv6dc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Cube2" type="MeshInstance3D" parent="god circuit stage 1"]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, -2.58153, 0, -1.66413)
|
||||
layers = 0
|
||||
material_override = SubResource("ShaderMaterial_aqrc7")
|
||||
mesh = SubResource("ArrayMesh_vv6dc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="StaticBody3D" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, -2.58153, 0, -1.66413)
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 72
|
||||
continuous_cd = true
|
||||
@@ -175,14 +249,25 @@ 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("")
|
||||
|
||||
[node name="Cube2" 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)
|
||||
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"]
|
||||
|
||||
@@ -5,16 +5,16 @@ public partial class HealthPoints : Node
|
||||
[Export]
|
||||
public long MaximumHP { get; protected set; }
|
||||
|
||||
public long CurrentHP { get; protected set; }
|
||||
public long CurrentHP { get; set; }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
CurrentHP = MaximumHP;
|
||||
CurrentHP = MaximumHP;
|
||||
}
|
||||
|
||||
public void TakeDamage(long damage)
|
||||
{
|
||||
CurrentHP -= damage;
|
||||
GD.Print(CurrentHP);
|
||||
CurrentHP -= damage;
|
||||
GD.Print(CurrentHP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,85 +1171,143 @@ _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 = 69
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
collision_mask = 33
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
freeze_mode = 1
|
||||
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.010569, -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
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="OnPlayerHit"]
|
||||
[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"]
|
||||
shape = SubResource("BoxShape3D_lqe1n")
|
||||
|
||||
[node name="HitAnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_mudtn")
|
||||
}
|
||||
|
||||
[connection signal="body_entered" from="Area3D" to="." method="OnPlayerHit"]
|
||||
[connection signal="body_entered" from="Area3D" to="." method="OnEnemyHit"]
|
||||
|
||||
@@ -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,9 +893,9 @@ 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 = 69
|
||||
collision_mask = 68
|
||||
gravity_scale = 0.0
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
@@ -904,12 +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)
|
||||
@@ -1065,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"]
|
||||
|
||||
@@ -14,6 +14,9 @@ public partial class BasicEnemy : Node3D
|
||||
|
||||
public void OnEnemyHit(Node3D node)
|
||||
{
|
||||
if (node is Character)
|
||||
return;
|
||||
|
||||
_hp.TakeDamage(1);
|
||||
|
||||
if (_hp.CurrentHP <= 0)
|
||||
|
||||
@@ -8,20 +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)
|
||||
{
|
||||
EmitSignal(SignalName.DestroyRemainingOrbs);
|
||||
_animationPlayer.Play("OnDeath");
|
||||
_animationPlayer.AnimationFinished += OnGameFinished;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBossOrbDestroyed()
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(60);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
hpComponent.CurrentHP = 1;
|
||||
}
|
||||
|
||||
private void OnGameFinished(StringName animationName)
|
||||
{
|
||||
GD.Print("On game ending");
|
||||
EmitSignal(SignalName.OnGameEnding);
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,134 +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)
|
||||
{
|
||||
player.SelectedCharacter = null;
|
||||
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
|
||||
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
|
||||
sfxPlayer.Stream = audioStream;
|
||||
sfxPlayer.Play();
|
||||
GD.Print(player.Name);
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
{
|
||||
player.SelectedCharacter = player.CharactersLeftOnStage[player.CharacterIndex];
|
||||
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.Remove(player.SelectedCharacter);
|
||||
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);
|
||||
|
||||
GD.Print(player.CharactersLeftOnStage.Select(x => x.Name).ToArray());
|
||||
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.SelectedCharacter);
|
||||
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);
|
||||
|
||||
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var projectile in projectiles)
|
||||
projectile.QueueFree();
|
||||
foreach (var character in playerCharacters)
|
||||
character.GetParent().RemoveChild(character);
|
||||
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
_levelIndex++;
|
||||
main.LoadNextLevel(_levelIndex);
|
||||
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var projectile in projectiles)
|
||||
projectile.QueueFree();
|
||||
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
if (_levelIndex < main.Levels.Count)
|
||||
{
|
||||
_levelIndex++;
|
||||
main.LoadNextLevel(_levelIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,29 +17,6 @@
|
||||
script = ExtResource("1_ya2kt")
|
||||
PlayerScenes = Array[PackedScene]([ExtResource("4_3fl70"), ExtResource("3_y1wkr")])
|
||||
|
||||
[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="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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
[gd_scene load_steps=8 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"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqv03pua4j8ga" path="res://Levels/Scenes/Level1.tscn" id="2_jq3qe"]
|
||||
[ext_resource type="PackedScene" uid="uid://b12gq4yqc3d8i" path="res://UI/MainMenu.tscn" id="2_kvovw"]
|
||||
[ext_resource type="PackedScene" uid="uid://0hdnmilwrsq6" path="res://Levels/Scenes/Level10.tscn" id="11_o275c"]
|
||||
[ext_resource type="PackedScene" uid="uid://basequfmpg04f" path="res://Levels/Scenes/Level2.tscn" id="3_nhrqr"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctvkevnc0wxka" path="res://Levels/Scenes/Level4.tscn" id="5_xj47l"]
|
||||
[ext_resource type="PackedScene" uid="uid://col60npvg7wr1" path="res://Levels/Scenes/Level5.tscn" id="6_xmedq"]
|
||||
[ext_resource type="PackedScene" uid="uid://8ukphol1isp2" path="res://Levels/Scenes/Level6.tscn" id="7_58n7x"]
|
||||
[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://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"]
|
||||
|
||||
@@ -12,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")])
|
||||
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
|
||||
|
||||
@@ -31,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
|
||||
@@ -39,3 +63,16 @@ offset_bottom = 42.0
|
||||
text = "FPS
|
||||
"
|
||||
label_settings = SubResource("LabelSettings_ucjnc")
|
||||
|
||||
[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="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_m6quh")
|
||||
|
||||
[node name="SceneTransition" parent="." instance=ExtResource("14_ai16y")]
|
||||
top_level = true
|
||||
z_index = 500
|
||||
|
||||
BIN
Levels/Models/New Stage 7/EyeFix.png
Normal file
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/EyeFix.png.import
Normal 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
|
||||
BIN
Levels/Models/New Stage 7/HELPME - Copy.png
Normal file
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/HELPME - Copy.png.import
Normal 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
|
||||
BIN
Levels/Models/New Stage 7/HELPME.png
Normal file
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/HELPME.png.import
Normal 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
|
||||
BIN
Levels/Models/New Stage 7/Stage eye.png
Normal file
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/Stage eye.png.import
Normal 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
|
||||
8
Levels/Models/New Stage 7/StageFixEye.tscn
Normal 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")
|
||||
BIN
Levels/Models/Stage3/STAGE 3_2317.png
Normal file
|
After Width: | Height: | Size: 474 KiB |
36
Levels/Models/Stage3/STAGE 3_2317.png.import
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 995 B |
@@ -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]
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
BIN
Levels/STAGE 5_aztec.png
Normal file
|
After Width: | Height: | Size: 193 KiB |
34
Levels/STAGE 5_aztec.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://x445g44huk0k"
|
||||
path="res://.godot/imported/STAGE 5_aztec.png-4b5a91f709adb3f366329cf40c601225.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/STAGE 5_aztec.png"
|
||||
dest_files=["res://.godot/imported/STAGE 5_aztec.png-4b5a91f709adb3f366329cf40c601225.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
|
||||
51
Levels/Scenes/BossOrb.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
12
Levels/Scenes/BossOrbs.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Godot;
|
||||
|
||||
public partial class BossOrbs : Node3D
|
||||
{
|
||||
[Export]
|
||||
private float _rotationSpeed = Mathf.Pi / 6;
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
Rotate(Vector3.Up, _rotationSpeed * (float)delta);
|
||||
}
|
||||
}
|
||||
79
Levels/Scenes/FallingLeaves.gdshader
Normal 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);
|
||||
}
|
||||
35
Levels/Scenes/GameEnding.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
0
Levels/Scenes/GlitchShader2D.gdshader
Normal 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
|
||||
|
||||
@@ -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, 10, 3.17)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5mnb2"]
|
||||
resource_name = "Material.001"
|
||||
transparency = 2
|
||||
@@ -45,6 +30,7 @@ alpha_antialiasing_mode = 0
|
||||
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_0yy7f"]
|
||||
resource_name = "Material.003"
|
||||
@@ -57,7 +43,7 @@ resource_name = "Material.022"
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_color = Color(0, 0, 0, 1)
|
||||
roughness = 0.5
|
||||
metallic = 1.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vnp6j"]
|
||||
resource_name = "Material.025"
|
||||
@@ -70,7 +56,7 @@ resource_name = "Material.024"
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_color = Color(0, 0, 0, 1)
|
||||
roughness = 0.5
|
||||
metallic = 1.0
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_innp1"]
|
||||
_surfaces = [{
|
||||
@@ -224,12 +210,14 @@ shadow_mesh = SubResource("ArrayMesh_iabwd")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yff5r"]
|
||||
resource_name = "Material.005"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("6_u54xf")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lq31e"]
|
||||
resource_name = "Material.006"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("7_e155e")
|
||||
@@ -237,12 +225,14 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kg8cv"]
|
||||
resource_name = "Material.007"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("8_pv0jt")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qocbi"]
|
||||
resource_name = "Material.008"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("9_57fec")
|
||||
@@ -250,6 +240,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxkmp"]
|
||||
resource_name = "Material.009"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("10_5awpo")
|
||||
@@ -257,6 +248,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oci18"]
|
||||
resource_name = "Material.010"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("11_lecpt")
|
||||
@@ -264,9 +256,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_inn1i"]
|
||||
resource_name = "Material.011"
|
||||
transparency = 2
|
||||
alpha_scissor_threshold = 0.5
|
||||
alpha_antialiasing_mode = 0
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("12_dmqnu")
|
||||
@@ -274,6 +264,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l3r5c"]
|
||||
resource_name = "Material.012"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("13_p4lg5")
|
||||
@@ -281,6 +272,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4lt6h"]
|
||||
resource_name = "Material.013"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("14_vy0xd")
|
||||
@@ -288,6 +280,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xf2r3"]
|
||||
resource_name = "Material.014"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("15_w5cbh")
|
||||
@@ -295,6 +288,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x4m66"]
|
||||
resource_name = "Material.015"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("9_57fec")
|
||||
@@ -302,9 +296,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ogq2g"]
|
||||
resource_name = "Material.016"
|
||||
transparency = 2
|
||||
alpha_scissor_threshold = 0.5
|
||||
alpha_antialiasing_mode = 0
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("16_2qqmx")
|
||||
@@ -312,6 +304,7 @@ roughness = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m3vpq"]
|
||||
resource_name = "Material.017"
|
||||
transparency = 1
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("17_3idst")
|
||||
@@ -797,13 +790,83 @@ _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="STAGE 4 final" type="Node3D" parent="."]
|
||||
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)
|
||||
mesh = SubResource("ArrayMesh_rd6yo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-0.449436, 0, -0.893313, 0, 1, 0, 0.893313, 0, -0.449436, 0.257937, 0.28203, -1.12583)
|
||||
mesh = SubResource("ArrayMesh_1b6jf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Plane_001" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-0.42144, 0, 0.893313, 0, 1, 0, -0.837667, 0, -0.449436, 0.319275, 0.236575, -1.12124)
|
||||
mesh = SubResource("ArrayMesh_c4efb")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="oxface" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-0.310179, 0, -0.616522, 0, 0.690153, 0, 0.616522, 0, -0.310179, 4.51053, 1.75571, -7.27413)
|
||||
mesh = SubResource("ArrayMesh_oeul8")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="horsehead" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-0.335711, 0, 0.66727, 0, 0.746961, 0, -0.66727, 0, -0.335711, -3.87214, 1.7331, -7.27635)
|
||||
mesh = SubResource("ArrayMesh_igw1j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle_001" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(2.1328, 0, -4.23922, 0, -4.74551, 0, 4.23922, 0, 2.1328, 0.345504, 0.184269, -1.16876)
|
||||
mesh = SubResource("ArrayMesh_ox0hg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle_002" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(2.1328, 0, 4.23922, 0, -4.74551, 0, -4.23922, 0, 2.1328, 0.245241, 0.236774, -1.12641)
|
||||
mesh = SubResource("ArrayMesh_pcbqa")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="STAGE 4 final"]
|
||||
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, -0.7046, 0)
|
||||
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)
|
||||
@@ -827,109 +890,65 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.69921, -9.53674e-07, 2.9449
|
||||
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)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.93202, -9.53674e-07, 1.65812)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.40815, 0, -2.45802)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.50391, 1.90735e-06, -2.46756)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.60899, 0.0507913, -2.85175)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.50614, 0, -2.74671)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.36028, 1.5342, -4.20792)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.48452, 1.5342, -4.49721)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.78759, 1.5342, -4.11365)
|
||||
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(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.59502, 1.5342, -4.42218)
|
||||
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.01032, 2.71587, 0)
|
||||
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.81573, 0, 0)
|
||||
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, -8.5122)
|
||||
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, 9.03101)
|
||||
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, -3.93058, -2.24614, -4.79498)
|
||||
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, 3.67572, -2.24614, -4.79498)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.93552, -2.24614, -2.81557)
|
||||
shape = SubResource("BoxShape3D_5qrun")
|
||||
|
||||
[node name="STAGE 4 final" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.135092, 1.13298)
|
||||
|
||||
[node name="Plane" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0966516, 0, -1.18466)
|
||||
mesh = SubResource("ArrayMesh_rd6yo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.152571, 0.124069, 0.00191349)
|
||||
mesh = SubResource("ArrayMesh_1b6jf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Plane_001" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(0.937709, 0, 0, 0, 1, 0, 0, 0, 1, -0.0912335, 0.0786147, 0.00649853)
|
||||
mesh = SubResource("ArrayMesh_c4efb")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="oxface" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(0.690153, 0, 0, 0, 0.690153, 0, 0, 0, 0.690153, 4.10002, 1.59775, -6.14638)
|
||||
mesh = SubResource("ArrayMesh_oeul8")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="horsehead" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(0.746961, 0, 0, 0, 0.746961, 0, 0, 0, 0.746961, -4.28265, 1.57514, -6.14861)
|
||||
mesh = SubResource("ArrayMesh_igw1j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle_001" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-4.74551, 0, 0, 0, -4.74551, 0, 0, 0, -4.74551, -0.0650039, 0.026309, -0.0410134)
|
||||
mesh = SubResource("ArrayMesh_ox0hg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Circle_002" type="MeshInstance3D" parent="STAGE 4 final"]
|
||||
transform = Transform3D(-4.74551, 0, 0, 0, -4.74551, 0, 0, 0, -4.74551, -0.165268, 0.0788137, 0.00132829)
|
||||
mesh = SubResource("ArrayMesh_pcbqa")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="STAGE 4 final"]
|
||||
autoplay = "Animation"
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_biich")
|
||||
}
|
||||
|
||||
[node name="Exit Portal" parent="." instance=ExtResource("3_wflo5")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.174136, -4.61389)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.369465, 0.430741, -4.61825)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
BIN
Levels/Scenes/ending cutscene.ogv
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
32
Levels/Scripts/OrbAttack.cs
Normal 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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
5
Levels/Scripts/OrbAttack.tscn
Normal file
@@ -0,0 +1,5 @@
|
||||
[gd_scene format=3 uid="uid://hr00usxj40s4"]
|
||||
|
||||
[node name="Orb Attack" type="Node3D"]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
@@ -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)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Godot;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class Player : Node3D
|
||||
{
|
||||
@@ -15,8 +16,8 @@ public partial class Player : Node3D
|
||||
[Export]
|
||||
public int PlayerNumber;
|
||||
|
||||
public Array<Character> CharactersLeftOnStage = new Array<Character>();
|
||||
public Array<Character> CharactersExited = new Array<Character>();
|
||||
public List<PackedScene> CharactersLeftOnStage = new List<PackedScene>();
|
||||
public List<PackedScene> CharactersExited = new List<PackedScene>();
|
||||
|
||||
public Character SelectedCharacter;
|
||||
|
||||
@@ -28,11 +29,9 @@ public partial class Player : Node3D
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
foreach (var character in PlayableCharacterScenes)
|
||||
{
|
||||
var instance = (Character)character.Instantiate();
|
||||
instance.Initialize(this);
|
||||
CharactersLeftOnStage.Add(instance);
|
||||
}
|
||||
foreach (var character in PlayableCharacterScenes)
|
||||
{
|
||||
CharactersLeftOnStage.Add(character);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ motion_mode = 1
|
||||
script = ExtResource("1_aqn5t")
|
||||
_fireProjectile = ExtResource("2_e6qos")
|
||||
_altFireProjectile = ExtResource("3_wbhxk")
|
||||
_speed = 1.5
|
||||
_speed = 1.7
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -27,7 +27,7 @@ _soundEffect = ExtResource("2_7lbn3")
|
||||
_projectileSpeed = 3.0
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="Center Shot"]
|
||||
transform = Transform3D(0.999998, 0, -0.0016, 0, 1, 0, 0.0016, 0, 0.999998, 0, 0, 0)
|
||||
transform = Transform3D(0.999999, 0, 0, 0, 1, 0, 0, 0, 0.999999, 0, 0, 0)
|
||||
loop = false
|
||||
tilt_enabled = false
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_7ok4f"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, 1, -5),
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.0230103, 0.941895, -0.379715, 0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, 1, -5),
|
||||
"tilts": PackedFloat32Array(0, 0, 0)
|
||||
}
|
||||
point_count = 3
|
||||
@@ -16,19 +16,19 @@ height = 3.3177
|
||||
radius = 0.57027
|
||||
|
||||
[node name="MegamiBeam" type="Node3D" groups=["Projectile"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.000150919)
|
||||
|
||||
[node name="Path3D" type="Path3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0430247, 0.484383)
|
||||
top_level = true
|
||||
curve = SubResource("Curve3D_7ok4f")
|
||||
script = ExtResource("1_6e1or")
|
||||
Cooldown = 2.0
|
||||
_soundEffect = ExtResource("2_vvcho")
|
||||
_projectileSpeed = 3.0
|
||||
_projectileSpeed = 2.0
|
||||
HasRotation = true
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="Path3D"]
|
||||
transform = Transform3D(0.999993, 0, 0, 0, 0.999995, 0, 0, 0, 0.999999, 0, 1, -1)
|
||||
transform = Transform3D(0.999993, 0, 0, 0, 0.999995, 0, 0, 0, 0.999999, -0.0230103, 0.941895, -0.379715)
|
||||
rotation_mode = 0
|
||||
loop = false
|
||||
tilt_enabled = false
|
||||
@@ -48,7 +48,7 @@ transform = Transform3D(0.5, 0, 8.73115e-11, 0, 0.5, 0, -8.73115e-11, 0, 0.5, 0.
|
||||
shape = SubResource("CylinderShape3D_bnunv")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="Path3D/PathFollow3D/Beam"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.00355998, -0.119854, 0.205225)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 1.42109e-14, -1, -0.00355998, -0.119854, 0.205225)
|
||||
axis = 1
|
||||
texture = ExtResource("1_57flt")
|
||||
|
||||
|
||||
58
Player/Sagittarius/Attacks/MegamiBeamAltFire.tscn
Normal file
@@ -0,0 +1,58 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://bmqcck4srfd1u"]
|
||||
|
||||
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_c33ey"]
|
||||
[ext_resource type="AudioStream" uid="uid://m8mvw8acs5sk" path="res://Audio/SFX/Green Wave.wav" id="2_wafm2"]
|
||||
[ext_resource type="Texture2D" uid="uid://cferkvvp0rjht" path="res://Textures/Projectiles/Projectile_Sagittarius.png" id="3_mg23b"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_7ok4f"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.023, 1, -0.38, 0, 0, 0, 0, 0, 0, 0, 1, -3),
|
||||
"tilts": PackedFloat32Array(0, 0)
|
||||
}
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_bnunv"]
|
||||
height = 3.3177
|
||||
radius = 0.57027
|
||||
|
||||
[node name="MegamiBeam" type="Node3D" groups=["Projectile"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.000150919)
|
||||
|
||||
[node name="Path3D" type="Path3D" parent="."]
|
||||
top_level = true
|
||||
curve = SubResource("Curve3D_7ok4f")
|
||||
script = ExtResource("1_c33ey")
|
||||
Cooldown = 0.5
|
||||
_soundEffect = ExtResource("2_wafm2")
|
||||
_projectileSpeed = 3.0
|
||||
HasRotation = true
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="Path3D"]
|
||||
transform = Transform3D(0.999993, 0, 0, 0, 0.999995, 0, 0, 0, 0.999999, -0.023, 1, -0.38)
|
||||
rotation_mode = 0
|
||||
loop = false
|
||||
tilt_enabled = false
|
||||
|
||||
[node name="Beam" type="RigidBody3D" parent="Path3D/PathFollow3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, -1, -1.50996e-07, 0, 1.50996e-07, -1, 0, 0, 0)
|
||||
collision_layer = 44
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 1000
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Path3D/PathFollow3D/Beam"]
|
||||
transform = Transform3D(0.5, 0, 8.73115e-11, 0, 0.5, 0, -8.73115e-11, 0, 0.5, 0.000155393, 0, 0.194262)
|
||||
shape = SubResource("CylinderShape3D_bnunv")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="Path3D/PathFollow3D/Beam"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 1.42109e-14, -1, -0.00355998, -0.119854, 0.205225)
|
||||
axis = 1
|
||||
texture = ExtResource("3_mg23b")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("2_wafm2")
|
||||
autoplay = true
|
||||
|
||||
[connection signal="body_entered" from="Path3D/PathFollow3D/Beam" to="Path3D" method="OnProjectileHit"]
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=27 format=3 uid="uid://bgkqfamdiwrrw"]
|
||||
[gd_scene load_steps=28 format=3 uid="uid://bgkqfamdiwrrw"]
|
||||
|
||||
[ext_resource type="Script" path="res://Player/Base/Character.cs" id="1_s1hsr"]
|
||||
[ext_resource type="PackedScene" uid="uid://criqb4bokctlr" path="res://Player/Sagittarius/Attacks/MegamiBeam.tscn" id="2_c3ma7"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmqcck4srfd1u" path="res://Player/Sagittarius/Attacks/MegamiBeamAltFire.tscn" id="3_lj2w4"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ru85r"]
|
||||
resource_name = "Material.006"
|
||||
@@ -608,7 +609,7 @@ motion_mode = 1
|
||||
wall_min_slide_angle = 3.14159
|
||||
script = ExtResource("1_s1hsr")
|
||||
_fireProjectile = ExtResource("2_c3ma7")
|
||||
_altFireProjectile = ExtResource("2_c3ma7")
|
||||
_altFireProjectile = ExtResource("3_lj2w4")
|
||||
_speed = 2.25
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
|
||||