mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-09 11:25:54 +00:00
Bullet emitter
This commit is contained in:
parent
d49f5e2a45
commit
54c8199e8a
7 changed files with 75 additions and 32 deletions
16
Resources/Bullets/EmitterTestBullet.tres
Normal file
16
Resources/Bullets/EmitterTestBullet.tres
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
[gd_resource type="Resource" script_class="BulletResource" load_steps=3 format=3 uid="uid://bj331rcsq65es"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bi3f14klscvlw" path="res://Scenes/Weapons/Bullets/enemyBullet_mid_red.tscn" id="1_ji2e1"]
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/BulletResource.cs" id="2_kwmfx"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_kwmfx")
|
||||
BulletScene = ExtResource("1_ji2e1")
|
||||
BulletSpeed = 20.0
|
||||
Direction = Vector2(1, 0)
|
||||
BulletDamage = 8.0
|
||||
LifeTime = 4.0
|
||||
DestroyOnCollision = false
|
||||
Owner = 0
|
||||
DamageType = 2
|
||||
TimeModifiers = Array[Object]([])
|
||||
|
|
@ -1,23 +1,10 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://cd36ch65jijg0"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cd36ch65jijg0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Activables/BulletEmitter.cs" id="1_11khd"]
|
||||
[ext_resource type="Script" path="res://Scripts/Components/BulletSpawner.cs" id="2_cr25o"]
|
||||
[ext_resource type="PackedScene" uid="uid://bi3f14klscvlw" path="res://Scenes/Weapons/Bullets/enemyBullet_mid_red.tscn" id="2_tvufl"]
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/BulletResource.cs" id="3_njoox"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_pcsuf"]
|
||||
script = ExtResource("3_njoox")
|
||||
BulletScene = ExtResource("2_tvufl")
|
||||
BulletSpeed = 20.0
|
||||
BulletDamage = 8.0
|
||||
LifeTime = 4.0
|
||||
Owner = 0
|
||||
DamageType = 2
|
||||
TimeModifiers = Array[Object]([])
|
||||
|
||||
[node name="BulletEmitter" type="Node2D"]
|
||||
script = ExtResource("1_11khd")
|
||||
BulletResource = SubResource("Resource_pcsuf")
|
||||
|
||||
[node name="BulletSpawner" type="Node2D" parent="."]
|
||||
script = ExtResource("2_cr25o")
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=25 format=4 uid="uid://5klhna6pdpss"]
|
||||
[gd_scene load_steps=27 format=4 uid="uid://5klhna6pdpss"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/GameManager.cs" id="1_uhxhn"]
|
||||
[ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_afebu"]
|
||||
|
|
@ -10,8 +10,10 @@
|
|||
[ext_resource type="PackedScene" uid="uid://b0gpbkxdfbnjh" path="res://Scenes/Actors/ForceField_Horizontal.tscn" id="8_5cbgu"]
|
||||
[ext_resource type="Script" path="res://Scripts/InventoryManager.cs" id="8_scbgd"]
|
||||
[ext_resource type="PackedScene" uid="uid://bc054js8ep2b" path="res://Scenes/Actors/4WayActorEnemyTest.tscn" id="8_vi7eu"]
|
||||
[ext_resource type="PackedScene" uid="uid://cd36ch65jijg0" path="res://Scenes/Activable/BulletEmitter.tscn" id="9_tniww"]
|
||||
[ext_resource type="PackedScene" uid="uid://dkwi1hu1bixoe" path="res://Scenes/HUD/HUD.tscn" id="9_xs7rn"]
|
||||
[ext_resource type="Script" path="res://Scenes/CameraTarget.gd" id="10_86lpq"]
|
||||
[ext_resource type="Resource" uid="uid://bj331rcsq65es" path="res://Resources/Bullets/EmitterTestBullet.tres" id="10_gkpxd"]
|
||||
[ext_resource type="Script" path="res://Scripts/AlarmManager.cs" id="11_njjjf"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqjcwxene73l2" path="res://Scenes/Actors/ActorEnemyTest.tscn" id="12_8mkvw"]
|
||||
[ext_resource type="PackedScene" uid="uid://d1h48wgasakk4" path="res://Scenes/Interactable/alarm_box.tscn" id="14_pr50u"]
|
||||
|
|
@ -68,10 +70,18 @@ position = Vector2(258, 364)
|
|||
[node name="HorizontalForceField" parent="Tilemaps/Actors" instance=ExtResource("8_5cbgu")]
|
||||
position = Vector2(15, 304)
|
||||
|
||||
[node name="BulletEmitter" parent="Tilemaps/Actors" instance=ExtResource("9_tniww")]
|
||||
position = Vector2(-17, 411)
|
||||
BulletResource = ExtResource("10_gkpxd")
|
||||
|
||||
[node name="ActorEnemyTest" parent="Tilemaps" node_paths=PackedStringArray("DefeatScript") instance=ExtResource("8_vi7eu")]
|
||||
position = Vector2(8, 410)
|
||||
DefeatScript = NodePath("../Actors/HorizontalForceField")
|
||||
|
||||
[node name="ControlPad" parent="Tilemaps" node_paths=PackedStringArray("Target") instance=ExtResource("16_ijcqi")]
|
||||
position = Vector2(55, 368)
|
||||
Target = NodePath("../Actors/BulletEmitter")
|
||||
|
||||
[node name="CameraController" type="Camera2D" parent="."]
|
||||
script = ExtResource("7_4a7df")
|
||||
pixel_snap = false
|
||||
|
|
|
|||
|
|
@ -7,11 +7,10 @@
|
|||
radius = 2.23607
|
||||
|
||||
[node name="Bullet" type="Area2D" groups=["bullets"]]
|
||||
collision_layer = 128
|
||||
collision_mask = 71
|
||||
collision_layer = 136
|
||||
collision_mask = 87
|
||||
script = ExtResource("1_jnw2a")
|
||||
Speed = 200.0
|
||||
Owner = 2
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=88 format=4 uid="uid://bv451a8wgty4u"]
|
||||
[gd_scene load_steps=89 format=4 uid="uid://bv451a8wgty4u"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/GameManager.cs" id="1_8tmoj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_8mh54"]
|
||||
|
|
@ -72,6 +72,7 @@
|
|||
[ext_resource type="PackedScene" uid="uid://bqjcwxene73l2" path="res://Scenes/Actors/ActorEnemyTest.tscn" id="55_chha6"]
|
||||
[ext_resource type="PackedScene" uid="uid://b0gpbkxdfbnjh" path="res://Scenes/Actors/ForceField_Horizontal.tscn" id="66_nxn3h"]
|
||||
[ext_resource type="PackedScene" uid="uid://drfkerulftqxc" path="res://Scenes/Actors/Fairy.tscn" id="72_eg6qk"]
|
||||
[ext_resource type="Resource" uid="uid://bj331rcsq65es" path="res://Resources/Bullets/EmitterTestBullet.tres" id="72_uit7r"]
|
||||
[ext_resource type="PackedScene" uid="uid://clxx2ytg3qkcr" path="res://Scenes/Actors/FairyGuard.tscn" id="73_2st3s"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6sau4"]
|
||||
|
|
@ -142,7 +143,7 @@ ActivationType = 0
|
|||
Targets = Array[NodePath]([NodePath("../Rumia")])
|
||||
WaitForCompletion = true
|
||||
|
||||
[sub_resource type="Resource" id="Resource_7hesl"]
|
||||
[sub_resource type="Resource" id="Resource_6q0m8"]
|
||||
resource_local_to_scene = true
|
||||
script = ExtResource("49_0si7g")
|
||||
Target = NodePath(".")
|
||||
|
|
@ -678,7 +679,7 @@ Events = Array[Object]([SubResource("Resource_068l7"), SubResource("Resource_l3n
|
|||
|
||||
[node name="BossBattleStartScript" parent="." instance=ExtResource("43_kf3qc")]
|
||||
position = Vector2(-1487, -396)
|
||||
Events = Array[Object]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_7hesl")])
|
||||
Events = Array[Object]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_6q0m8")])
|
||||
|
||||
[node name="Enemy8" parent="." instance=ExtResource("47_u1ve6")]
|
||||
position = Vector2(-1117, 184)
|
||||
|
|
@ -701,6 +702,7 @@ Target = NodePath("../BulletEmitter")
|
|||
|
||||
[node name="BulletEmitter" parent="." instance=ExtResource("49_64oga")]
|
||||
position = Vector2(-728, 57)
|
||||
BulletResource = ExtResource("72_uit7r")
|
||||
|
||||
[node name="StartPosition" type="Marker2D" parent="."]
|
||||
position = Vector2(-808, -167)
|
||||
|
|
|
|||
|
|
@ -7,44 +7,74 @@ namespace Cirno.Scripts.Activables;
|
|||
|
||||
public partial class BulletEmitter : Node2D, IActivable
|
||||
{
|
||||
|
||||
[Export]
|
||||
public BulletResource BulletResource { get; set; }
|
||||
|
||||
[Export]
|
||||
private bool _isEmitting { get; set; } = false;
|
||||
public bool EmitOnStart { get; set; } = false;
|
||||
|
||||
[Export]
|
||||
public float EmitCoolDown { get; private set; } = 1f;
|
||||
|
||||
[Export] public float Spread { get; set; } = 0f;
|
||||
|
||||
[Export] public int Count { get; set; } = 1;
|
||||
|
||||
[Export] public float EmissionRotation { get; set; } = 0f;
|
||||
|
||||
private BulletSpawner _bulletSpawner;
|
||||
|
||||
private bool _isEmitting = false;
|
||||
|
||||
private double _emitTimer = 0f;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_bulletSpawner = GetNode<BulletSpawner>("BulletSpawner");
|
||||
if (EmitOnStart)
|
||||
{
|
||||
_isEmitting = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (!_isEmitting) return;
|
||||
_emitTimer += delta;
|
||||
|
||||
if (_emitTimer >= EmitCoolDown)
|
||||
{
|
||||
Shoot();
|
||||
_emitTimer = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
public void Shoot()
|
||||
{
|
||||
_bulletSpawner.SpawnBullet(BulletResource.MakeBullet(this.GlobalPosition, Count, Spread, EmissionRotation));
|
||||
}
|
||||
|
||||
public void Activate(ActivationType activationType = ActivationType.Toggle)
|
||||
{
|
||||
switch (activationType)
|
||||
{
|
||||
case ActivationType.Toggle:
|
||||
break;
|
||||
case ActivationType.Open:
|
||||
case ActivationType.Enable:
|
||||
_bulletSpawner.SpawnBullet(BulletResource.MakeBullet(this.GlobalPosition, 1, Spread, EmissionRotation));
|
||||
_isEmitting = true;
|
||||
_emitTimer = 0;
|
||||
break;
|
||||
case ActivationType.Close:
|
||||
case ActivationType.Disable:
|
||||
_isEmitting = false;
|
||||
_emitTimer = 0;
|
||||
break;
|
||||
case ActivationType.Use:
|
||||
_bulletSpawner.SpawnBullet(BulletResource.MakeBullet(this.GlobalPosition, 1, Spread, EmissionRotation));
|
||||
case ActivationType.Toggle:
|
||||
_isEmitting = !_isEmitting;
|
||||
_emitTimer = 0;
|
||||
break;
|
||||
case ActivationType.Destroy:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(activationType), activationType, null);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,6 @@ using Godot;
|
|||
|
||||
public partial class Actor : CharacterBody2D
|
||||
{
|
||||
|
||||
[Export]
|
||||
public float MovementSpeed { get; private set; }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue