简书链接:ue射线点击任意位置人物移动办法点击物品,相机移动办法
文章字数:354,阅读全文大约需要1分钟
第一种方法是在事件里面写
获取单元向量(pawn位置,点击的物体位置)->添加移动输入()
这里第二种瞬移 消除高度
设置acotr位置等于 点击的位置就行
vector 5,5,5x vector1,1,1等于原数 ,vector5,5,5+0,0,0也是
这里可以创建vector方法来实现新的构造
*一个新的用来分解,也可以直接分解,但是我这其他地方要用到就没这么做 .

最后按通道获取光标下的命中结果-中断命中结果-localtion=设置actor位置
解决和旋转冲突问题
在按下的时候get game time for seconds ,松开的时候也获取, 相减 返回的一般是0.3 0.5之类的玩意.判断小于1就行
另外多个actor 都有鼠标单击事件就右键设置这个事件为不消耗就行
2023-7-13 14:39:38
人物移动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| void UEUtil::PositionToActor(APlayerController* controler, AActor* actor) { if (controler && actor) { FBox BoundingBox = actor->GetComponentsBoundingBox(); const FVector Center = BoundingBox.GetCenter(); float Radius = BoundingBox.GetExtent().Length(); float CameraFov = controler->PlayerCameraManager->GetFOVAngle(); float AspectRatio = controler->PlayerCameraManager->DefaultAspectRatio; if (AspectRatio > 1.0f) { Radius *= AspectRatio; } float Distance = Radius / FMath::Tan(FMath::DegreesToRadians(CameraFov / 2)); FVector ResultLocation = Center - controler->PlayerCameraManager->GetCameraRotation().Vector() * Distance; APawn* pawn = controler->GetPawn(); FHitResult SweepHitResult; // 创建默认的 FHitResult 对象 pawn->K2_SetActorLocation(ResultLocation, false, SweepHitResult, false); }
}
|