Unreal Engine 运行时拖放静态网格体:缩放和旋转
在 Unreal Engine 中,您可以使用 Actor 和 Static Mesh 组件来实现运行时拖放静态网格体,并能够缩放和旋转它们。
以下是实现步骤:
- 创建 Actor 类并添加 Static Mesh 组件:
 
- 创建一个新的 Actor 类。
 - 在 Actor 类中添加一个 Static Mesh 组件,并选择您要使用的静态网格体。
 
- 添加代码到 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;
}
- 在场景中添加 Actor 并测试:
 
- 在您的场景中添加您创建的 Actor。
 - 运行游戏,您应该能够通过触摸屏幕来拖放、缩放和旋转静态网格体。
 
解释:
OnTouchBegin、OnTouchMove和OnTouchEnd函数分别处理触摸事件的开始、移动和结束。bDragging标志用于跟踪是否正在进行拖放操作。LastTouchLocation变量存储最后一个触摸位置,用于计算移动距离。
通过遵循这些步骤,您可以在 Unreal Engine 中实现运行时拖放静态网格体,并能够缩放和旋转它们。这将允许您在游戏中为用户提供更具交互性和动态性的体验。
原文地址: https://www.cveoy.top/t/topic/oCSA 著作权归作者所有。请勿转载和采集!