Refactor projectiles

This commit is contained in:
2023-09-06 15:20:34 -07:00
parent d536aa2014
commit d7dd58b5df
11 changed files with 138 additions and 181 deletions

View File

@@ -1,13 +0,0 @@
using Godot;
using System.Linq;
public partial class ShotgunBullet : Projectile
{
public override void _PhysicsProcess(double delta)
{
var pellets = GetChildren().OfType<RigidBody3D>();
foreach (var pellet in pellets)
pellet.Translate(new Vector3(pellet.Rotation.Y, 0, Speed * -(float)delta));
}
}

View File

@@ -1,27 +1,37 @@
[gd_scene load_steps=7 format=3 uid="uid://bq40xbqibrk1y"]
[gd_scene load_steps=6 format=3 uid="uid://bq40xbqibrk1y"]
[ext_resource type="Script" path="res://Player/Pisces/Attacks/ShotgunBullet.cs" id="1_0khuu"]
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_ivbjp"]
[ext_resource type="Texture2D" uid="uid://crlvrwo2l11ja" path="res://Textures/Projectiles/Projectile_Pisces_MultiAttack.png" id="2_a612r"]
[ext_resource type="AudioStream" uid="uid://cw1jlubd7wmw6" path="res://Audio/SFX/blue laser.wav" id="2_oxtlx"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_eme14"]
radius = 0.3
[sub_resource type="CylinderShape3D" id="CylinderShape3D_752q2"]
radius = 0.3
[sub_resource type="Curve3D" id="Curve3D_h8ghr"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0, -5),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="CylinderShape3D" id="CylinderShape3D_ebbqv"]
radius = 0.3
[node name="ShotgunBullet" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.73894, 0)
script = ExtResource("1_0khuu")
Cooldown = 0.5
script = ExtResource("1_ivbjp")
Cooldown = 1.0
_soundEffect = ExtResource("2_oxtlx")
_projectileSpeed = 15.0
[node name="RigidBody3D" type="RigidBody3D" parent="."]
transform = Transform3D(0.99863, 0, -0.052336, 0, 1, 0, 0.052336, 0, 0.99863, -0.334469, 0, 0)
[node name="Center Shot" type="Path3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.25)
top_level = true
curve = SubResource("Curve3D_h8ghr")
[node name="PathFollow3D" type="PathFollow3D" parent="Center Shot"]
transform = Transform3D(-0.999998, 0, 0.00159994, 0, 1, 0, -0.00159994, 0, -0.999998, 0, 0, 0)
loop = false
tilt_enabled = false
[node name="Hitbox" type="RigidBody3D" parent="Center Shot/PathFollow3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00512208, 0, 0.096)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
@@ -30,52 +40,66 @@ max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
shape = SubResource("CylinderShape3D_eme14")
[node name="Sprite3D" type="Sprite3D" parent="RigidBody3D/CollisionShape3D"]
axis = 1
texture = ExtResource("2_a612r")
[node name="RigidBody3D2" type="RigidBody3D" parent="."]
transform = Transform3D(0.99863, 0, 0.052336, 0, 1, 0, -0.052336, 0, 0.99863, 0.463951, 0, 0)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D2"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
shape = SubResource("CylinderShape3D_752q2")
[node name="Sprite3D" type="Sprite3D" parent="RigidBody3D2/CollisionShape3D"]
axis = 1
texture = ExtResource("2_a612r")
[node name="RigidBody3D3" type="RigidBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0600076, 0, -0.345734)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D3"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Center Shot/PathFollow3D/Hitbox"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
shape = SubResource("CylinderShape3D_ebbqv")
[node name="Sprite3D" type="Sprite3D" parent="RigidBody3D3/CollisionShape3D"]
[node name="Sprite3D" type="Sprite3D" parent="Center Shot/PathFollow3D/Hitbox/CollisionShape3D"]
axis = 1
texture = ExtResource("2_a612r")
[node name="TTL" type="Timer" parent="."]
process_callback = 0
autostart = true
[node name="Left Shot" type="Path3D" parent="."]
transform = Transform3D(0.984808, 0, 0.173648, 0, 1, 0, -0.173648, 0, 0.984808, -0.462206, 0, -0.1)
top_level = true
curve = SubResource("Curve3D_h8ghr")
[connection signal="timeout" from="TTL" to="." method="OnTimeToLiveTimeout"]
[node name="PathFollow3D" type="PathFollow3D" parent="Left Shot"]
transform = Transform3D(-0.999998, 0, 0.00159994, 0, 1, 0, -0.00159994, 0, -0.999998, 0, 0, 0)
loop = false
tilt_enabled = false
[node name="Hitbox" type="RigidBody3D" parent="Left Shot/PathFollow3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03827, 0, 0.0309103)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="Left Shot/PathFollow3D/Hitbox"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
shape = SubResource("CylinderShape3D_ebbqv")
[node name="Sprite3D" type="Sprite3D" parent="Left Shot/PathFollow3D/Hitbox/CollisionShape3D"]
axis = 1
texture = ExtResource("2_a612r")
[node name="Right Shot" type="Path3D" parent="."]
transform = Transform3D(0.984808, 0, -0.173648, 0, 1, 0, 0.173648, 0, 0.984808, 0.426491, 0, 0)
top_level = true
curve = SubResource("Curve3D_h8ghr")
[node name="PathFollow3D" type="PathFollow3D" parent="Right Shot"]
transform = Transform3D(-0.999998, 0, 0.00159994, 0, 1, 0, -0.00159994, 0, -0.999998, 0, 0, 0)
loop = false
tilt_enabled = false
[node name="Hitbox" type="RigidBody3D" parent="Right Shot/PathFollow3D"]
transform = Transform3D(-1, 0, -0.00159994, 0, 1, 0, 0.00159994, 0, -1, -0.06, 0, 0.096)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
continuous_cd = true
max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="Right Shot/PathFollow3D/Hitbox"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.00941685, 0, -0.0539098)
shape = SubResource("CylinderShape3D_ebbqv")
[node name="Sprite3D" type="Sprite3D" parent="Right Shot/PathFollow3D/Hitbox/CollisionShape3D"]
axis = 1
texture = ExtResource("2_a612r")

View File

@@ -1,19 +1,36 @@
[gd_scene load_steps=5 format=3 uid="uid://cyn2wn6ffsnu7"]
[gd_scene load_steps=6 format=3 uid="uid://cyn2wn6ffsnu7"]
[ext_resource type="Script" path="res://Player/Pisces/Attacks/SingleShot.cs" id="1_18l5k"]
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_62kpd"]
[ext_resource type="AudioStream" uid="uid://cw1jlubd7wmw6" path="res://Audio/SFX/blue laser.wav" id="2_7lbn3"]
[ext_resource type="Texture2D" uid="uid://kecmkchurnin" path="res://Textures/Projectiles/Projectile_Pisces_SingleAttack.png" id="2_d8lwd"]
[sub_resource type="Curve3D" id="Curve3D_do6j1"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0, -5),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="CylinderShape3D" id="CylinderShape3D_njobr"]
radius = 0.3
[node name="Single" type="Node3D"]
script = ExtResource("1_18l5k")
Cooldown = 0.3
script = ExtResource("1_62kpd")
Cooldown = 1.0
_soundEffect = ExtResource("2_7lbn3")
_projectileSpeed = 10.0
[node name="RigidBody3D" type="RigidBody3D" parent="."]
[node name="Center Shot" type="Path3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -0.25)
top_level = true
curve = SubResource("Curve3D_do6j1")
[node name="PathFollow3D" type="PathFollow3D" parent="Center Shot"]
transform = Transform3D(-0.999998, 0, 0.00159994, 0, 1, 0, -0.00159994, 0, -0.999998, 0, 0, 0)
loop = false
tilt_enabled = false
[node name="Hitbox" type="RigidBody3D" parent="Center Shot/PathFollow3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
collision_layer = 34
collision_mask = 34
gravity_scale = 0.0
@@ -22,19 +39,12 @@ max_contacts_reported = 1000
contact_monitor = true
can_sleep = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.644825, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Center Shot/PathFollow3D/Hitbox"]
transform = Transform3D(0.5, 0, -7.10543e-15, 0, 0.5, 0, 7.10543e-15, 0, 0.5, 0, 0, 0)
shape = SubResource("CylinderShape3D_njobr")
[node name="Sprite3D" type="Sprite3D" parent="RigidBody3D/CollisionShape3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31565, 0.765425, 0.303541)
[node name="Sprite3D" type="Sprite3D" parent="Center Shot/PathFollow3D/Hitbox/CollisionShape3D"]
transform = Transform3D(1, 0, -3.55271e-14, 0, 1, 0, 3.55271e-14, 0, 1, -0.299847, 0, 0.288742)
centered = false
axis = 1
texture = ExtResource("2_d8lwd")
[node name="TTL" type="Timer" parent="."]
process_callback = 0
wait_time = 0.8
autostart = true
[connection signal="timeout" from="TTL" to="." method="OnTimeToLiveTimeout"]

View File

@@ -1,11 +0,0 @@
using Godot;
using System.Linq;
public partial class SingleShot : Projectile
{
public override void _PhysicsProcess(double delta)
{
var pellet = GetChildren().OfType<RigidBody3D>().Single();
pellet.Translate(new Vector3(0, 0, Speed * -(float)delta));
}
}