rdInst Tutorial17 – Using Pooled Actors with Movement Components
Last Updated: 14th April 2023
Often your pooled actors will be projectiles of some type – and sometimes you’ll be wanting to use the MovementComponent or ProjectileMovementComponent to control its motion.
When doing this, there are a couple of things to keep in mind:
- Start your pooled actors with “Auto Activate” turned off.
- Add Pool Listeners – Activate the MovementComponent on the “rdOnActorPooled” event and Deactivate on the “rdOnActorDepooled” event.
- These components call “FellOutOfWorld” when the actor, well, falls out of the world. If your pooled actor is SubClassed off rdActor – there is nothing you need to do, otherwise you will need to Derive FellOutOfWorld() in C++ and stop it from calling the Actor Destroy() – if you don’t the pooled actor is destroyed and you can cause a crash.
Step 1. Create a Bullet Blueprint (based on rdActor)
This first step is the same as Step 1 of Tutorial 13, except we use a ProjectileMovementComponent to handle the movement rather than just adding a vector in tick.
Add the ProjectileMovement Component from the Component Pane on the left.
With it selected, Set the Initial and Max Speeds – and set the Gravity Multiplier to 0.0 (or a low value) if you don’t want your projectile falling to the ground, then find the “Auto Activate” option in the details, and un-tick it.
Override the Pooling events (rdOnActorPooled and rdOnActorDepooled) and Activate/Deactivate the Movement:
In the Activate Node, make sure the “Reset” option is ticked.
Now we just need to add a bit of code to tell the bullet to stop after a certain distance (just in tick for example):
Step 2. Create a Base Blueprint (based on rdActor)
This step is exactly like Step 2 of Tutorial 13, just replace the Bullet Class in the Pooling to our new Bullet Class.
And in the FireBullet function, just change the bullet class, and make these changes:
Step 3. Done
That’s it, now you should get something like: