3D Explosions

This commit is contained in:
Marco 2025-06-20 11:28:18 +02:00
commit ad63d2ff43
20 changed files with 207 additions and 19 deletions

View file

@ -65,12 +65,10 @@ public partial class Destructible3D : StaticBody3D, IDestructible
private void CreateExplosion()
{
if (ExplosionData == null) return;
var explosion = PoolingManager.Instance.SpawnBullet<Bullet3D>(ExplosionData);
explosion.GlobalPosition = this.GlobalPosition;
explosion.Speed = 0;
explosion.Initialize(ExplosionData.MakeBullet(new Vector2(this.GlobalPosition.X, this.GlobalPosition.Y)));

View file

@ -0,0 +1,12 @@
using Godot;
namespace Cirno.Scripts.Components.Actors;
public partial class PooledAnimatedSpritePlayer3D : AnimatedSprite3D
{
public void PlayAnimation()
{
this.SetFrame(0);
this.Play();
}
}

View file

@ -0,0 +1 @@
uid://cvk4jbit45sfi

View file

@ -34,6 +34,9 @@ public partial class Bullet3D : Area3D, IBullet
[Signal]
public delegate void OnDestroyEventHandler();
[Signal]
public delegate void InitializedEventHandler();
private AudioStreamPlayer3D _grazeSound;
private GpuParticles3D _grazeParticles;
@ -65,6 +68,8 @@ public partial class Bullet3D : Area3D, IBullet
// Ugly hack to make instances unique
_modifiers = _bulletInfo.TimeModifiers.Select(x => x.Wrap()).ToList();
EmitSignalInitialized();
}
/// <summary>