Kekouan

Adventures in Particle Generation

2023-08-16

I'm actually going to skip over a chunk of time I spent trying to figure out controls and physics interactions. Skip to implementing some sort of weapon system.

It's actually pretty easy to add a Particle System in SceneKit:

SceneKit scene with a model emitting square particles

They didn't actually do anything other than stream forward, but you have to start somewhere. I figured I'd want to make them look more like "Plasma Balls" since that's what I assume you'd fire as a particle.

SceneKit scene with a model emitting a plasma ball inspired particle SceneKit scene with a model emitting a plasma ball inspired particle, but better somehow

Excellent. One issue I found is that by adding the Particle System to the model itself, meant that the particles were generated in the centre of the model and therefore had to travel through the front half of the model before becoming visible. Created an invisible node and placed it in front of the "nose" and it works like one would expect.

The next problem was how to handle interactions between the weapon and the things you'd be shooting at. My first solution was to just determine if there was any object between my weapon and a distance x in front of it.

I added some targets to my testing scene. I was attempting to keep to a colour scene. Anything blue I figured you should be able to shoot.

A SceneKit scene with multiple simple 3D objects

A SceneKit scene with Blue capusules that represent targets

And after firing the weapon a couple of times:

A SceneKit scene with Blue capusules that represent targets, after firing the weapon

One thing that caused me some issues here was that as soon as you fired it calculcated what in the path, and removed it from the scene. It worked for the time being, which was enough to move on with.