Blueprint Quickshot: Spawning Physics Actors | 04 | v4.7 Tutorial Series | Unreal Engine

Blueprint Quickshot: Spawning Physics Actors | 04 | v4.7 Tutorial Series | Unreal Engine


♪♪♪ Wes Bunn: Hello everyone and welcome. In this video,
we are going to take a look at how to spawn physics objects inside Blueprint script. First, we need is a physics object to spawn. We are using the Third Person Blueprint template project,
but you could use any project you would like. I did include Starter Content so that
we have some meshes to play with. First, go to the Content Browser
and click the Add New button. Click Add New and select the Blueprint Class button. In the Pick Parent Class menu, select Actor. I am going to name this Actor “PhysicsObject”. Double-click PhysicsObject to open it up. Here, we are going to specify
the object that we want to spawn. We are currently looking at
the Viewport inside the Blueprint Editor. The Construction Script and the Event Graph are graphs
we can use to script the functionality of our Blueprints. We are not going to worry about
those for this particular object. All we are going to do is create
something that we can spawn. Go to the Components panel and
click the Add Component button. We are going to add a Static Mesh.
Scroll down, and select Static Mesh. I am going to name this Static Mesh “Object”.
That is fine. In the Details panel under Static Mesh, we have the option to choose which Static Mesh we want to assign to this Component.
Click the Static Mesh drop down. I have several Meshes to play with
because I included Starter Content. I am just going to choose one.
I am going to type “table”. Select SM_Table. There is a table. That is the
object we are going to spawn. We are also going to make sure we choose
to Simulate Physics on our object. Click Compile and Save. Now we have a physics object.
If I click Play here, you should see that the table starts to fall.
There is no floor, so it is just going to continue to
fall off into space down there. Let’s not do that. Click Compile and Save, and close this Blueprint. We are going to go into the Level Blueprint
to actually spawn our Blueprint here. Go to the Blueprints button on the Toolbar. Click the Blueprints button
and click Open Level Blueprint. Here is the Event Graph,
just like in our other Blueprint, where we can provide the
functionality for our Blueprints. Right-click and add a new node.
Let’s add an input. Type “Input”. Scroll up, and there are options for Mouse Events
and Keyboard Events that we can input. Actually, I probably should have just typed “F”. Yes, that was easier. Under
Mouse Events, select F. Whenever I press F, execute
whatever is connected to this wire, which is going to spawn our Blueprint
that we just created a moment ago. Right-click, type and select,
“Spawn Actor from Class”. Left-click + drag off Pressed and plug it into
the Spawn Actor from Class executable. Click the Select Class drop down menu,
type and select “PhysicsObject”. I probably should have given it a better name
than PhysicsObject, but this will do. We are going to spawn our PhysicsObject. It is asking for a Spawn Transform,
which is the transform or position in world space
where this object will spawn. To find the transform,
we are going to cheat a little bit. Go back to the level by selecting
the ThirdPersonExampleMap tab. In this Modes panel, type and select “Target Point”. A Target Point is really useful
for defining spawn locations. Left-click + drag a Target Point into the level. I am going to drag it up and place it
somewhere like that up in the sky. So now that we have a Target Point in our level, I am going to the Level Blueprint,
and I am going to minimize it really quickly. I don’t want to minimize the whole thing.
I will just undock the Level Blueprint. There we go.
[Laughing] There are a couple ways you can do this. Probably the most common way is to Right-click, and select Create a Reference to Target Point because
we still have the Target Point selected in the level. Right-click and select
Create Reference to Target Point. Another way is in the World Outliner
with the Target Point selected. Left-click + drag Target Point
inside the Level Blueprint. I will maximize this window so you can see better.
With the reference to Target Point in our level, drag off, type and select, “Get Actor Transform”. We are getting the transform of this Target Point and
using that as a location to spawn our PhysicsObject. Connect the Return Value to
Spawn Transform. Click Compile. I will undock this window and move it over.
Click Play in the level. Now when I press F, it should spawn our table.
There you go. It is a physics object. whole I could spawn several tables top of each other. Oh, look at that! There we go. So there you go. That is how
you can spawn a physics object. There is a handy thing I want to show you
really quickly. Press Esc and go back to the level. Let’s say we want several different spawn points.
We don’t always want to spawn at this same location. Hold Alt + drag out a copy of Target Point. Hold Alt + Left-click to drag out
a copy of Target Point. Select Target Point in the Modes panel again,
hold Alt + drag out another copy. Hold Ctrl + select each of the Target Points. Hold Alt + drag out a copy of all the Target Points. Now we have 6 potential locations
where our table could spawn. Go back to the Level Blueprint.
Let’s move our F key Event over just a little bit to the left here because we are going
to do something cool in here. Right-click in the graph, type
and select “Get All Actors of Class”. We are going to connect the Pressed to
the input of Get All Actors of Class node. Get All Actors from Class needs a class assigned.
Click the Select Class drop down, type and select, “Target Point”
because that is what we want to find. Once it has all of this data, Drag off the Out Actors pin,
which is all the Actors that it gets. We are going to get one of the Actors.
Drag off Out Actors, type and select “Get”. Let’s move the Target Point and
Get Actor Transform nodes down. Left-click + drag to highlight
the nodes and drag them down. We are going to get one of the Actor transforms.
The Get node is asking for an Index. The Get node is asking for which Actor transform to get. Left-click + drag off the Integer pin,
type and select “Random Integer in Range”. The Random Integer in Range node has a Min and a Max. We know the Min is 0 because in programmer speak
an array, which is this checkerboard box, starts at index 0 instead of 1.
It is a 0 based system. Therefore, we know that Min is 0;
but we don’t know the Max value. Well actually, we do. We could just say 6
because we placed 6. [Laughing] But we are going to do something even fancier.
Drag off of Out Actors again, type and select “Length”.
Get the Length of our array. The Length node has an Integer pin.
Plug the Length result into Max. Delete the Target Point variable
that we were using before. Select the Target Point variable and click Delete. Connect the result of the Get node to the Target
of the Spawn Actor Transform. Make sure the Get All Actors of Class is
connected to the executable of Spawn Actor PhysicsObject. That looks good. Click Compile.
Go to the level and click Play. Now each time we press F, we are going to spawn
our table at a different location in our level. It is raining tables on us. There you go. You have learned how to spawn a physics object. Not only that, you have learned how
to spawn it at a random location in your level that you specify as spawn points. I hope you all enjoyed this video
and thank you for watching. ♪♪♪

12 thoughts on “Blueprint Quickshot: Spawning Physics Actors | 04 | v4.7 Tutorial Series | Unreal Engine”

  1. I think the max for "Random Integer in Range" at 7:50 should be set to (Length – 1) instead of Length, since the 6th element is at index 5.

  2. Not sure why this needs to be a level blueprint vs. actor – a lot of spawning is usually actor blue prints – I'm assuming you could just as well make an actor blue print spawn volume, make copies, and have them go off at random but that would be extra code and this is cleaner?

  3. Use a "Last Index" node instead of the "Length" one showed in the video, since the array you get by calling GetAllActorsOfClass is zero-based. Otherwise you'll get an error when you have only 3 target points (indices 0, 1, 2) for example and try to access index 3 (which doesn't exist)

  4. I'm replicating this tutorial step by step and it doesn't work!! I've done ir three times, aaaaghhhhhhhhhhhhhhhhhh

Leave a Reply

Your email address will not be published. Required fields are marked *