Download

Rotating an Object with C++

I am new at unreal engine and for our project I need write a script to rotate 4 objects when I press ‘A’ or ‘D’. Let’s say they’re wheels. I just applied some code from a tutorial but I can’t do what I wanna do with it. When I drag and drop into an object just anything happens . Is it possible writing a script that I can just drag and drop it into an object in the scene and when I press A or D it will just rotate it? My code is like that;
header file:


// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "MyPawn.generated.h"

UCLASS()
class MYPROJECT_API AMyPawn : public APawn
{
GENERATED_BODY()

public:
// Sets default values for this pawn's properties
AMyPawn();

protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public:
// Called every frame
virtual void Tick(float DeltaTime) override;

UPROPERTY(EditAnywhere)
USceneComponent* OurVisibleComponent;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

void RotatePositive();
void StopRotatingPositive();
void RotateNegative();
void StopRotatingNegative();


bool rotatePositive, rotateNegative;
};


cpp file:



// Fill out your copyright notice in the Description page of Project Settings.


#include "MyPawn.h"
#include "Components/InputComponent.h"

// Sets default values
AMyPawn::AMyPawn()
{
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
https:\/\/forums.unrealengine.com\/core\/image\/gif;base64
​​

AutoPossessPlayer = EAutoReceiveInput::Player0;




}

// Called when the game starts or when spawned
void AMyPawn::BeginPlay()
{
Super::BeginPlay();

}

// Called every frame
void AMyPawn::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
{

if (rotatePositive) {
FQuat QuatRotation = FQuat(FRotator(1, 0, 0));
AddActorLocalRotation(QuatRotation, false, 0, ETeleportType::None);
}
if (rotateNegative) {
FQuat QuatRotation = FQuat(FRotator(-1, 0, 0));
AddActorLocalRotation(QuatRotation, false, 0, ETeleportType::None);
}
}
}


// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
InputComponent->BindAction("rotatePositive",IE_Pressed, this, &AMyPawn::RotatePositive);
InputComponent->BindAction("rotatePositive", IE_Released, this, &AMyPawn::StopRotatingPositive);

InputComponent->BindAction("rotateNegative", IE_Pressed, this, &AMyPawn::RotateNegative);
InputComponent->BindAction("rotateNegative", IE_Released, this, &AMyPawn::StopRotatingNegative);
}


void AMyPawn::RotatePositive() {
rotatePositive = true;
}

void AMyPawn::RotateNegative() {
rotateNegative = true;
}

void AMyPawn::StopRotatingPositive() {
rotatePositive = false;
}

void AMyPawn::StopRotatingNegative() {
rotateNegative = false;
}




When I drag and drop the script into a cube hierarchy is just like that.

The way it is generally done in Unreal.

  • bind keys to PlayerController
  • “Possess” a pawn
  • Pawn reacts to inputs

Those are all separate topics. I’d start with baby steps. Bind keys in the player controller and output something like “Pressed D key”" to the screen. Then move on to the rest.