feat: spawning particles with object pooling
This commit is contained in:
parent
858e49e1d9
commit
efac0019ba
14 changed files with 235 additions and 21 deletions
|
@ -8,7 +8,8 @@
|
|||
"GUID:1220ccfff01d26041a9bb8cd7ae584af",
|
||||
"GUID:58f2f98b0cec4e74998cb65ad59190b4",
|
||||
"GUID:0c752da273b17c547ae705acf0f2adf2",
|
||||
"GUID:a8b14a26d6924d6bb65739ca56ae8187"
|
||||
"GUID:a8b14a26d6924d6bb65739ca56ae8187",
|
||||
"GUID:1e89d5d1db358ce43890b8310d696377"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue