I’m new to Unreal Engine development and I’m struggling to do something which would be trivial in Unity.
I’m following this tutorial: [Unreal Engine 5 Tutorial for Beginners: Getting Started | raywenderlich.com]
I’m trying to do the “Rotating the propeller” section without the use of Blueprint nodes.
The Blueprint nodes can reference the static meshes individually but I can’t find any C++ method that would do the same thing. All examples I found online make use of acquiring the actor through a component and rotating the actor. This way, it would rotate the whole submarine and not just the propeller as intended.
Like this (Snippet from an ActorComponent code):
RotationTime += DeltaTime;
RotationTime = fmin(RotationTime, TimeToRotate);
auto actor = GetOwner();
float alpha = RotationTime / TimeToRotate;
FRotator rotator = FMath::Lerp(FRotator(0, 0, 0), FRotator(0, 90, 0), alpha);
In Unity this can be accomplished by declaring a GameObject in the component and modifying its transform. How can I achieve this in Unreal? I’m composing the static meshes in a Blueprint Class and I can modify their transforms in the Blueprint editor and they show up correctly in the game. I saw in a video tutorial that this would be a good case for using animations but I don’t see the reason why something so simple can’t be done strictly in code.
Hey @caiocsabino! Welcome to the Forums!
A few questions to get started:
- Is the mesh you are working is part of a group of static meshes? And you are needing help finding that particular component in that blueprint to rotate, right?
- Would you mind showing the effect you have going so far, as well as the details of the mesh in particular? Screenshots if you can.
- Have you attempted to create a “propellor actor” inside of your blueprint to attach your script to and control rotation for that particular piece?
Any additional information you can provide will be a big help in solving your problem!
Thanks for your answer @Quetzalcodename !
“Is the mesh you are working is part of a group of static meshes? And you are needing help finding that particular component in that blueprint to rotate, right?” Yes, precisely
"Would you mind showing the effect you have going so far, as well as the details of the mesh in particular? Screenshots if you can. ". I’m attaching a screenshot which shows the static meshes in the Blueprint. The current achieved effect so far is that the whole actor rotates around the Y Axis (Code in original post had a 90 degree angle instead of 360 as it should be). Screenshot below:
"Have you attempted to create a “propellor actor” inside of your blueprint to attach your script to and control rotation for that particular piece? " This sounds more like what I want to achieve indeed. In Unity I can nest GameObjects and reference them on code. I couldn’t find how to put an actor inside of another one in a Blueprint. Do you have a working example I can check?
So what you are wanting to do here is add a rotating actor movement component to your desired mesh inside of your blueprint. Here is a basic non-Epic affiliated overview of what that looks like and what it does:
WTF Is? Rotating Movement Actor Component in Unreal Engine 4 ( UE4 )
You can create your own custom C++ component for doing so as well. More information on that specific class can be found here:
I hope the above solution works for you!
This indeed will do for the example I posted. My focus is not necessarily in rotation per se, but rather how could I change the transform of another object inside the Root Component and how I would reference it by code.
I’m going to check how that component does that.