有人可以帮我做一个虚幻的自然滚动球吗?我在下面写了一些代码,移动不正确

时间:2019-07-18 07:01:13

标签: c++ physics unreal-engine4

我是UE4的初学者。我尝试用一​​个不真实的花砖制作一个可控的碰撞棋子,并完成一个不滚动的移动球。如何在其运动中增加旋转力?

我试图通过以下控制方法来更新旋转:MoveForwad(),MoveRight(),并且一开始我发现如果我仅旋转根组件,整个(包括摄像头)将旋转。因此,我尝试更改其网格上的旋转。 但是结果是它有时掉下来。

下面是典当类的一部分 变量: StaticMeshComponent * SphereVisual;

OurMovement:这是PawnMovementComponent的派生类

// 代码:

void AMyPawn::MoveForward(float AxisValue)
{
    if (OurMovement && (OurMovement->UpdatedComponent == RootComponent))
    {
        OurMovement->AddInputVector(GetActorForwardVector() * AxisValue);
        FRotator NewRotation = SphereVisual->GetComponentRotation();
        NewRotation.Pitch += AxisValue;//here
        SphereVisual->SetWorldRotation(NewRotation);//here
        //UE_LOG(LogTemp, Warning, TEXT("The current Rotation %s"), *(SphereVisual->GetComponentTransform().GetRotation().ToString()));
    }
}

void AMyPawn::MoveRight(float AxisValue)
{
    if (OurMovement && (OurMovement->UpdatedComponent == RootComponent))
    {
        OurMovement->AddInputVector(GetActorRightVector() * AxisValue);
        FRotator NewRotation = SphereVisual->GetComponentRotation();
        NewRotation.Roll += AxisValue;//Here
        SphereVisual->SetWorldRotation(NewRotation);//Here

    }
}

void AMyPawn::Turn(float AxisValue)
{
    FRotator NewRotation = GetActorRotation();
    NewRotation.Yaw += AxisValue;
    SetActorRotation(NewRotation);
}

你们能给我一些建议吗?提前谢谢...

0 个答案:

没有答案