Does putting a hard-limit give you better results than using Time.smoothDeltaTime? I guess if it was more than a few frames and was persistent over a longer period of time then smoothing isn’t going to help.
Note that maximumDeltaTime is by default set to 0.333333 (or 1/3). Capping the deltatime should only be the last resort. Though capping the framerate and reducing it heavily are two different things. In your code if the framerate is lower than 10 fps, you would fake a 60fps rate which in turn would make your game run 6 times slower.
It seems your game is just badly designed. You probably allocate tons of garbage and the hicups are the GC kicking in trying to clean up the mess. This had little to do with WebGL. Just as an example, here’s my “parallel” mandelbrot renderer as a webgl build. It does store and manage 2 complex numbers for each pixel in the image any every frame calculates one iteration for each pixel (576k pixels). Though once a pixel has settled it’s removed from the active list and only the remaining (black) pixels are still iterated. It should run pretty smooth on most machines, especially once the number has reduced. Of course this is just an example. I have zero memory allocations and therefore no GC would kick in.
I don’t quite understand your game design anyways. Your helicopter seems to rotate on any impact and then stays like that. That’s not really how helicopters fly and if it’s intentional, it’s a strange game mechanic