Particles don't always play

Hey everyone!
I have made a simple script to emit particles every time player bounces from bouncy platforms. Everything works just fine, but particles don’t emit every time, the player bounces of this platform. I have tried using the “Play()”, but particles were simply too slow, to fully play, before they are reset.

Here is a video of how this looks
180552-ezgif-7-621cda61ebd1.gif

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bouncy_Script : MonoBehaviour
{

	public float bouncyness = 2200;
	private Animation anim;
	private CharacterController2D CC2D;
	public GameObject particles;

	void Start(){
		CC2D = GameObject.Find("Player").GetComponent<CharacterController2D>();
		anim = GetComponent<Animation>();
	}
    
    void OnCollisionEnter2D(Collision2D col)
    {

    	if(col.gameObject.CompareTag("Player")){
    		CC2D.Bounce(bouncyness);
    		CC2D.m_AirControl = true;
    		Instantiate(particles, transform.position, transform.rotation);
    		anim.Play();
    		
    	}

    }
}

If I understand well, you’re instantiating a new particle system for each bounce. I’m not sure this is a good idea, for performance reason (garbage collector). I would think preferable to embed your PS inside your platform prefab, register it and call its Play() method when needed (just as you do it for anim).

Then, the reason why it isn’t playing each time is probably because of your PS settings, just like you said. Consider lowering its Duration and Start lifetime.

Hope this will help.

Well, guess what…
After different approaches and many tries I have figured out that the reason why the particles did not always appear, was simply because their sorting layer in renderer was 0…