I can call on GetComponentRotation(), but I wanted to set the component’s rotation. In a no-gravity scenario, since a UStaticMeshComponent has no physics body, I cannot call on AddForce() in the UStaticMeshComponent.BodyInstance to keep it upright. It’s just not possible to keep the mesh upright even after bumping into objects in a weightless scenario.
Static Mesh components surely can have physics bodies, just make sure to set the static mesh to Mobility Movable
Actually you absolutely can set the world rotation of a scene component, you can even add to Rotation/Location/Transform!
So in case it is not clear, SetComponentLocation == SetWorldLocation and the one you want, SetComponentRotation == SetWorldRotation
Because the ComponentToWorld Transform is what you are working with in the case of SetComponentLocation.
For the getters it is generally GetComponent… but for the setters it is SetWorld…
I do agree this naming scheme could be unified at some point.
**From SceneComponent.h**
You've got many options!
```
/** Set the relative location of this component to put it at the supplied location in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void SetWorldLocation(FVector NewLocation, bool bSweep=false);
/** Set the relative rotation of this component to put it at the supplied orientation in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void SetWorldRotation(FRotator NewRotation, bool bSweep=false);
/** Set the relative scale of this component to put it at the supplied scale in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void SetWorldScale3D(FVector NewScale);
/** Set the transform of this component in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void SetWorldTransform(const FTransform& NewTransform, bool bSweep=false);
/** Adds a delta to the location of this component in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void AddWorldOffset(FVector DeltaLocation, bool bSweep=false);
/** Adds a delta to the rotation of this component in world space. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void AddWorldRotation(FRotator DeltaRotation, bool bSweep=false);
/** Adds a delta to the transform of this component in world space. Scale is unchanged. */
UFUNCTION(BlueprintCallable, Category="Utilities|Transformation")
void AddWorldTransform(const FTransform& DeltaTransform, bool bSweep=false);
```
Enjoy!
Rama
Turns out that the naming scheme for setting a component’s rotation is confusing for me, so I have submitted a feedback to Epic requesting that the naming scheme be unified nicely.