如何实现cesium for unreal用鼠标左键拖动地球效果
要实现cesium for unreal用鼠标左键拖动地球效果,可以按照以下步骤进行:
-
在场景中添加一个Cesium3DTilesetActor,用于显示地球模型。
-
给场景添加一个蓝图,并在蓝图中添加一个InputComponent组件。
-
在InputComponent组件中添加一个鼠标左键按下事件。
-
在事件处理函数中获取鼠标按下时的屏幕坐标,并将其转换为世界坐标。
-
获取地球模型的位置和旋转信息,并根据鼠标拖动的距离和方向计算出新的地球位置和旋转信息。
-
将新的位置和旋转信息应用到地球模型上,完成拖动地球的效果。
以下是示例代码:
// 获取鼠标按下时的屏幕坐标
FVector2D MousePosition = FVector2D(InputComponent->GetMousePosition());
// 将屏幕坐标转换为世界坐标
FVector WorldPosition, WorldDirection;
DeprojectScreenPositionToWorld(MousePosition.X, MousePosition.Y, WorldPosition, WorldDirection);
// 获取地球模型的位置和旋转信息
ACesium3DTilesetActor* TilesetActor = GetTilesetActor();
FVector EarthPosition = TilesetActor->GetActorLocation();
FRotator EarthRotation = TilesetActor->GetActorRotation();
// 计算新的地球位置和旋转信息
FVector DragDelta = WorldDirection * DragDistance;
FVector NewEarthPosition = EarthPosition - DragDelta;
FRotator YawRotation = FRotator(0, DragDelta.X, 0);
FRotator PitchRotation = FRotator(DragDelta.Y, 0, 0);
FRotator NewEarthRotation = EarthRotation + YawRotation + PitchRotation;
// 应用新的位置和旋转信息
TilesetActor->SetActorLocation(NewEarthPosition);
TilesetActor->SetActorRotation(NewEarthRotation);
``
原文地址: https://www.cveoy.top/t/topic/fG13 著作权归作者所有。请勿转载和采集!