feat: spawning particles with object pooling

This commit is contained in:
Gerard Gascón 2024-04-19 15:57:25 +02:00
parent 858e49e1d9
commit efac0019ba
14 changed files with 235 additions and 21 deletions

View file

@ -8,7 +8,8 @@
"GUID:1220ccfff01d26041a9bb8cd7ae584af",
"GUID:58f2f98b0cec4e74998cb65ad59190b4",
"GUID:0c752da273b17c547ae705acf0f2adf2",
"GUID:a8b14a26d6924d6bb65739ca56ae8187"
"GUID:a8b14a26d6924d6bb65739ca56ae8187",
"GUID:1e89d5d1db358ce43890b8310d696377"
],
"includePlatforms": [],
"excludePlatforms": [],

View file

@ -1,14 +1,19 @@
using System;
using Pooling;
using Presenter;
using UnityEngine;
using UnityEngine.Serialization;
using Animation = FramedAnimator.Animation;
using Animator = FramedAnimator.Animator;
namespace View.Scene {
public class GrowParticle : MonoBehaviour {
public class GrowParticle : MonoBehaviour, IPooledObject {
[SerializeField] private Animator animator;
[SerializeField] private Animation particleAnimation;
private void Start() {
animator.OnAnimationEnd += _ => Destroy(gameObject);
public void OnObjectSpawn() {
animator.ChangeAnimation(particleAnimation);
animator.OnAnimationEnd += _ => Pooler.Recycle(gameObject);
animator.PlayUntil(1f);
}
}

View file

@ -1,4 +1,5 @@
using System;
using Pooling;
using Presenter;
using UnityEngine;
using Random = UnityEngine.Random;
@ -9,9 +10,13 @@ namespace View.Scene {
[SerializeField] private Transform growParticlePositions;
[SerializeField, Range(0, 180)] private float angleRange;
private void Awake() {
growParticle.CreatePool();
}
public void OnInputReceived() {
float randomRotation = Random.Range(-angleRange / 2f, angleRange / 2f);
Instantiate(growParticle, growParticlePositions.position, Quaternion.Euler(0f, 0f, randomRotation));
growParticle.Spawn(growParticlePositions.position, Quaternion.Euler(0, 0, randomRotation));
}
private void OnDrawGizmosSelected() {