在 Unreal Engine 中,您可以使用 Actor 和 Static Mesh 组件来实现运行时拖放静态网格体,并能够缩放和旋转它们。

以下是实现步骤:

  1. 创建 Actor 类并添加 Static Mesh 组件:
  • 创建一个新的 Actor 类。
  • 在 Actor 类中添加一个 Static Mesh 组件,并选择您要使用的静态网格体。
  1. 添加代码到 Actor 类:
  • 为 Actor 类添加以下代码,这将处理触摸事件并实现拖放功能:
void AMyActor::BeginPlay()
{
    Super::BeginPlay();

    // 允许 Actor 移动、旋转和缩放
    SetActorEnableCollision(true);
    SetActorTickEnabled(true);
    SetActorHiddenInGame(false);
    SetMobility(EComponentMobility::Movable);
    SetActorEnableCollision(true);
    SetActorTickEnabled(true);
    SetActorHiddenInGame(false);
    SetMobility(EComponentMobility::Movable);

    // 注册拖拽事件
    OnInputTouchBegin.AddDynamic(this, &AMyActor::OnTouchBegin);
    OnInputTouchMove.AddDynamic(this, &AMyActor::OnTouchMove);
    OnInputTouchEnd.AddDynamic(this, &AMyActor::OnTouchEnd);
}

void AMyActor::OnTouchBegin(ETouchIndex::Type FingerIndex, FVector Location)
{
    bDragging = true;
    LastTouchLocation = Location;
}

void AMyActor::OnTouchMove(ETouchIndex::Type FingerIndex, FVector Location)
{
    if (bDragging)
    {
        // 计算移动距离
        FVector DeltaLocation = Location - LastTouchLocation;

        // 移动 Actor
        FVector NewLocation = GetActorLocation() + DeltaLocation;
        SetActorLocation(NewLocation);

        // 更新最后一个触摸位置
        LastTouchLocation = Location;
    }
}

void AMyActor::OnTouchEnd(ETouchIndex::Type FingerIndex, FVector Location)
{
    bDragging = false;
}
  1. 在场景中添加 Actor 并测试:
  • 在您的场景中添加您创建的 Actor。
  • 运行游戏,您应该能够通过触摸屏幕来拖放、缩放和旋转静态网格体。

解释:

  • OnTouchBeginOnTouchMoveOnTouchEnd 函数分别处理触摸事件的开始、移动和结束。
  • bDragging 标志用于跟踪是否正在进行拖放操作。
  • LastTouchLocation 变量存储最后一个触摸位置,用于计算移动距离。

通过遵循这些步骤,您可以在 Unreal Engine 中实现运行时拖放静态网格体,并能够缩放和旋转它们。这将允许您在游戏中为用户提供更具交互性和动态性的体验。

Unreal Engine 运行时拖放静态网格体:缩放和旋转

原文地址: https://www.cveoy.top/t/topic/oCSA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录